Closed tinycedar closed 8 years ago
I am new to windows programming and wanna syscall GetTcpTable2 by Golang, but error occurs on calling it, could you help me figure it out, so appreciated if you could help.
package main import ( "fmt" "syscall" "unsafe" ) type ( DWORD uint32 ) type TCP_CONNECTION_OFFLOAD_STATE int const ( TcpConnectionOffloadStateInHost TCP_CONNECTION_OFFLOAD_STATE = 0 TcpConnectionOffloadStateOffloading TCP_CONNECTION_OFFLOAD_STATE = 1 TcpConnectionOffloadStateOffloaded TCP_CONNECTION_OFFLOAD_STATE = 2 TcpConnectionOffloadStateUploading TCP_CONNECTION_OFFLOAD_STATE = 3 TcpConnectionOffloadStateMax TCP_CONNECTION_OFFLOAD_STATE = 4 ) type MIB_TCPROW2 struct { dwState DWORD dwLocalAddr DWORD dwLocalPort DWORD dwRemoteAddr DWORD dwRemotePort DWORD dwOwningPid DWORD dwOffloadState TCP_CONNECTION_OFFLOAD_STATE } type MIB_TCPTABLE2 struct { dwNumEntries DWORD table []MIB_TCPROW2 } func main() { call := syscall.NewLazyDLL("Iphlpapi.dll") var table MIB_TCPTABLE2 = MIB_TCPTABLE2{} getTcpTable2 := call.NewProc("GetTcpTable2") bbb := true getTcpTable2.Call(uintptr(unsafe.Pointer(&table)), unsafe.Sizeof(table), uintptr(unsafe.Pointer(&bbb))) fmt.Println(table) }
Error Log:
$ go run getTcpTable.go Exception 0xc0000005 0x0 0x20 0x7ffe96f4b7a9 PC=0x7ffe96f4b7a9 syscall.Syscall(0x7ffe96f61de0, 0x3, 0xc08202fef8, 0x20, 0xc08202fe57, 0xc08201c000, 0x0, 0xc082008140) D:/Program Files/go/src/runtime/syscall_windows.go:163 +0x5c syscall.(*Proc).Call(0xc08200a780, 0xc08202fe58, 0x3, 0x3, 0x30, 0x4f98e0, 0x0, 0x0) D:/Program Files/go/src/syscall/dll_windows.go:149 +0x4a6 syscall.(*LazyProc).Call(0xc082007fb0, 0xc08202fe58, 0x3, 0x3, 0x6540a8, 0x48ab89, 0x0, 0x0) D:/Program Files/go/src/syscall/dll_windows.go:300 +0x6d main.main() C:/Users/hzlinqien/Desktop/getTcpTable.go:43 +0x1c2 rax 0x2 rbx 0x7dbf2c rcx 0x7dbf20 rdi 0x7dd04c rsi 0x7d68b0 rbp 0x4c rsp 0x8fd10 r8 0x1 r9 0x20 r10 0xc08202fef8 r11 0xffff r12 0x0 r13 0x5434be r14 0x0 r15 0x1 rip 0x7ffe96f4b7a9 rflags 0x10246 cs 0x33 fs 0x53 gs 0x2b exit status 2
I've figured it out, thanks anyway
I am new to windows programming and wanna syscall GetTcpTable2 by Golang, but error occurs on calling it, could you help me figure it out, so appreciated if you could help.
Error Log: