The MASM Forum Archive 2004 to 2012

Project Support Forums => MASM32 => Topic started by: Farabi on June 04, 2010, 07:09:25 AM

Title: iphlpapi.lib and ws2_32.lib is broken
Post by: Farabi on June 04, 2010, 07:09:25 AM
TCP_Info.obj : error LNK2001: unresolved external symbol _GetTcpTable@12
TCP_Info.obj : error LNK2001: unresolved external symbol _inet_ntoa@4

Any update?
Title: Re: iphlpapi.lib and ws2_32.lib is broken
Post by: MichaelW on June 04, 2010, 08:49:42 AM
I didn't have time to work the code out very well, but I did verify that GetTcpTable and indirectly iphlpapi.lib at least appear to work OK under Windows 2000.

;=====================================================================
    include \masm32\include\masm32rt.inc
    include \masm32\include\iphlpapi.inc
    includelib \masm32\lib\iphlpapi.lib
;=====================================================================

MIB_TCPTABLE STRUCT
  dwNumEntries DWORD ?
  table        DWORD ?
MIB_TCPTABLE ENDS

MIB_TCPROW STRUCT
  dwState       DWORD ?
  dwLocalAddr   DWORD ?
  dwLocalPort   DWORD ?
  dwRemoteAddr  DWORD ?
  dwRemotePort  DWORD ?
MIB_TCPROW ENDS

MIB_TCP_STATE_CLOSED      equ 1
MIB_TCP_STATE_LISTEN      equ 2
MIB_TCP_STATE_SYN_SENT    equ 3
MIB_TCP_STATE_SYN_RCVD    equ 4
MIB_TCP_STATE_ESTAB       equ 5
MIB_TCP_STATE_FIN_WAIT1   equ 6
MIB_TCP_STATE_FIN_WAIT2   equ 7
MIB_TCP_STATE_CLOSE_WAIT  equ 8
MIB_TCP_STATE_CLOSING     equ 9
MIB_TCP_STATE_LAST_ACK    equ 10
MIB_TCP_STATE_TIME_WAIT   equ 11
MIB_TCP_STATE_DELETE_TCB  equ 12

;=====================================================================
    .data
        dwSize    dd 0
    .code
;=====================================================================
start:
;=====================================================================
    invoke GetTcpTable, NULL, ADDR dwSize, TRUE
    SWITCH eax
      CASE NO_ERROR
        print "NO_ERROR",13,10
      CASE ERROR_INSUFFICIENT_BUFFER
        print "ERROR_INSUFFICIENT_BUFFER",13,10
        jmp continue
      CASE ERROR_INVALID_PARAMETER
        print "ERROR_INVALID_PARAMETER",13,10
      CASE ERROR_NOT_SUPPORTED
        print "ERROR_NOT_SUPPORTED",13,10
      DEFAULT
        print LastError$(),13,10
    ENDSW
    inkey "Press any key to exit..."
    exit

  continue:

    print str$(dwSize),13,10
    mov edi, alloc(dwSize)
    invoke GetTcpTable, edi, ADDR dwSize, TRUE
    print str$(eax),13,10
    print str$(dwSize),13,10
    mov ebx, [edi].MIB_TCPTABLE.dwNumEntries
    print str$(ebx),13,10
    lea esi, [edi].MIB_TCPTABLE.table
    .REPEAT
      print str$([esi].MIB_TCPROW.dwState),13,10
      print hex$([esi].MIB_TCPROW.dwLocalAddr),13,10
      print hex$([esi].MIB_TCPROW.dwLocalPort),13,10
      print hex$([esi].MIB_TCPROW.dwRemoteAddr),13,10
      print hex$([esi].MIB_TCPROW.dwRemotePort),13,10
      add esi, SIZEOF MIB_TCPROW
      dec ebx
    .UNTIL ebx == 0

    inkey "Press any key to exit..."
    exit
;=====================================================================
end start

Title: Re: iphlpapi.lib and ws2_32.lib is broken
Post by: oex on June 04, 2010, 10:30:32 AM
I tested this code on XP and it compiled and ran ok
Title: Re: iphlpapi.lib and ws2_32.lib is broken
Post by: Farabi on June 04, 2010, 10:39:08 AM
Michael:
If you tested it on WinXP and it works okay please tell me. I used the newer version from MASM10 and it still not work too.
Title: Re: iphlpapi.lib and ws2_32.lib is broken
Post by: Farabi on June 20, 2010, 03:53:04 AM
I found my mistake
it was because I should wrote it like this on RadAsm


include \masm32\include\iphlpapi.inc
includelib \masm32\lib\iphlpapi.lib


I should know it.