iphlpapi.dll:使用iphlpapi的未公开函数



# <stdio.h>
# <windows.h>
# <iphlpapi.h>
#pragma comment(lib, "ws2_32.lib")


# ADDRESSLEN HOSTNAMELEN PORTNAMELEN
char szProcessName[MAX_PATH];
char szLocalName[256];
char szRemoteName[256];
char szRemotePort[256];
char szLocalPort[256];
char szLocalAddress[256];
char szRemoteAddress[256];


PCHAR GetPort(unsigned port, char* pPort)
{
sprf(pPort, "%d", htons( (WORD) port));
pPort;
}

PCHAR GetIp(unsigned ipaddr, char* pIP)
{
unsigned nipaddr;
nipaddr = htonl(ipaddr);
sprf(pIP, "%d.%d.%d.%d",
(nipaddr >> 24) & 0xFF,
(nipaddr >> 16) & 0xFF,
(nipaddr >> 8) & 0xFF,
(nipaddr) & 0xFF);
pIP;
}

( argc, char* argv)
{
nRetCode;
DWORD i;
WSADATA WSAData;
PMIB_TCPEXTABLE TCPExTable;
pAllocateAndGetTcpExTableFromStack = (PALLOCATE_AND_GET_TCPEXTABLE_FROM_STACK) GetProcAddress( LoadLibrary( "iphlpapi.dll"),
"AllocateAndGetTcpExTableFromStack" );
WSAStartup(MAKEWORD(1, 1), &WSAData);

nRetCode = pAllocateAndGetTcpExTableFromStack(&TCPExTable, TRUE, GetProcessHeap, 2, 2);
for( i = 0; i < TCPExTable->dwNumEntries; i )
{
sprf( szLocalAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwLocalAddr, szLocalName),
GetPort(TCPExTable->table[i].dwLocalPort, szLocalPort));
sprf( szRemoteAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwRemoteAddr, szRemoteName),
GetPort(TCPExTable->table[i].dwRemotePort, szRemotePort));

prf("%-22s%-22s%-11s%d\n",
szLocalAddress, szRemoteAddress,
TcpState[TCPExTable->table[i].dwState],
TCPExTable->table[i].dwProcessId
);
}
WSACleanup;
0;
}
Tags:  iphlpapi.lib iphlpapi iphlpapi.h iphlpapi.dll

延伸阅读

最新评论

发表评论