Проблема с AllocateAndGetUdpExTableFromStack

Тема в разделе "WASM.BEGINNERS", создана пользователем Flasher, 25 сен 2009.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Номера портов корректно перечисляет а вот ID'ы их процессов - нет.
    Код (Text):
    1. .686p
    2. .mmx
    3. .model flat,stdcall
    4. option casemap:none
    5. include \masm32\include\ntdll.inc
    6. includelib \masm32\lib\ntdll.lib
    7. include \masm32\include\kernel32.inc
    8. includelib \masm32\lib\kernel32.lib
    9. include \masm32\include\user32.inc
    10. includelib \masm32\lib\user32.lib
    11.  
    12. MIB_UDPTABLEROW struct
    13.   dwLocalAddr dd ?
    14.   dwLocalPort dd ?
    15.   dwProcessId dd ?
    16. MIB_UDPTABLEROW ends
    17.  
    18. MIB_UDPTABLE struct
    19.   dwNumEntries dd ?
    20.   TMibUdpExRow MIB_UDPTABLEROW <>
    21. MIB_UDPTABLE ends
    22.  
    23. .code
    24. start proc
    25.     local pUDPTable:MIB_UDPTABLE
    26.     local hAllocateAndGetUdpExTableFromStack:dword
    27.     local buffer[256]:byte
    28.        invoke LoadLibraryA,$CTA0("iphlpapi.dll")
    29.        invoke GetProcAddress,eax,$CTA0("AllocateAndGetUdpExTableFromStack")
    30.        mov hAllocateAndGetUdpExTableFromStack,eax
    31.        assume fs:nothing
    32.        mov ebx,fs:18h
    33.        mov ebx,[ebx+30h]
    34.        mov ebx,[ebx+18h]
    35.        push 2
    36.        push 0
    37.        push ebx
    38.        push 1
    39.        lea eax,pUDPTable
    40.        push eax
    41.        call hAllocateAndGetUdpExTableFromStack
    42.         .if eax == 0
    43.            xor edi,edi
    44.            jmp @2
    45.         @1:
    46.            mov eax,sizeof MIB_UDPTABLEROW
    47.            mul edi
    48.            mov ecx,pUDPTable.dwNumEntries
    49.            lea eax,[ecx+eax]
    50.            mov eax,MIB_UDPTABLE.TMibUdpExRow.dwLocalPort[eax]
    51.            xchg ah,al
    52.            mov ecx,pUDPTable.TMibUdpExRow.dwProcessId
    53.            
    54.            pusha
    55.            lea edi,buffer
    56.            invoke wsprintfA,edi,$CTA0("port %u - pid %u"),eax,ecx
    57.            invoke MessageBox,0,addr buffer,addr buffer,0
    58.            popa
    59.            
    60.            inc edi
    61.         @2:
    62.            mov eax,pUDPTable.dwNumEntries
    63.            cmp edi,[eax]
    64.            jb @1
    65.         .endif
    66.        invoke ExitProcess,0
    67. start endp
    68. end start
    Не подскажите в чем дело?