Номера портов корректно перечисляет а вот ID'ы их процессов - нет. Код (Text): .686p .mmx .model flat,stdcall option casemap:none include \masm32\include\ntdll.inc includelib \masm32\lib\ntdll.lib include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib MIB_UDPTABLEROW struct dwLocalAddr dd ? dwLocalPort dd ? dwProcessId dd ? MIB_UDPTABLEROW ends MIB_UDPTABLE struct dwNumEntries dd ? TMibUdpExRow MIB_UDPTABLEROW <> MIB_UDPTABLE ends .code start proc local pUDPTable:MIB_UDPTABLE local hAllocateAndGetUdpExTableFromStack:dword local buffer[256]:byte invoke LoadLibraryA,$CTA0("iphlpapi.dll") invoke GetProcAddress,eax,$CTA0("AllocateAndGetUdpExTableFromStack") mov hAllocateAndGetUdpExTableFromStack,eax assume fs:nothing mov ebx,fs:18h mov ebx,[ebx+30h] mov ebx,[ebx+18h] push 2 push 0 push ebx push 1 lea eax,pUDPTable push eax call hAllocateAndGetUdpExTableFromStack .if eax == 0 xor edi,edi jmp @2 @1: mov eax,sizeof MIB_UDPTABLEROW mul edi mov ecx,pUDPTable.dwNumEntries lea eax,[ecx+eax] mov eax,MIB_UDPTABLE.TMibUdpExRow.dwLocalPort[eax] xchg ah,al mov ecx,pUDPTable.TMibUdpExRow.dwProcessId pusha lea edi,buffer invoke wsprintfA,edi,$CTA0("port %u - pid %u"),eax,ecx invoke MessageBox,0,addr buffer,addr buffer,0 popa inc edi @2: mov eax,pUDPTable.dwNumEntries cmp edi,[eax] jb @1 .endif invoke ExitProcess,0 start endp end start Не подскажите в чем дело?