'loha Folks,
die GetExtendedTcpTable (und GetOwnerModuleFromTcpEntry) Methode(n) der iphlpapi.dll verhalten sich je nach Betriebssystem unterschiedlich, respektive funktionieren unter Windows Server 2003 überhaupt nicht.
Untenstehender Code ist Teil einer über CodeCentral angebotenen
Unit (
http://cc.codegear.com/download.aspx...phelp.pas&ln=1) und zeigt, wie die verschiedenen verfügbaren
TCP und UDP Tabellen geladen werden:
Delphi-Quellcode:
initialization
WSAStartup(MAKEWORD(1, 1), WSADATA);
GetTcpTable:= nil;
GetExtendedTcpTable:= nil;
GetOwnerModuleFromTcpEntry:= nil;
LibHandle:= LoadLibrary('iphlpapi.dll');
if LibHandle <> 0 then
begin
GetTcpTable:= GetProcAddress(LibHandle,'GetTcpTable');
GetExtendedTcpTable:= GetProcAddress(LibHandle,'GetExtendedTcpTable');
GetOwnerModuleFromTcpEntry:= GetProcAddress(LibHandle,'GetOwnerModuleFromTcpEntry');
GetUdpTable:= GetProcAddress(LibHandle,'GetUdpTable');
GetExtendedUdpTable:= GetProcAddress(LibHandle,'GetExtendedUdpTable');
GetOwnerModuleFromUdpEntry:= GetProcAddress(LibHandle,'GetOwnerModuleFromUdpEntry');
end;
Das Problem ist, dass GetExtendedTcpTable sowie GetOwnerModuleFromTcpEntry unter Windows Server 2003 stets nil sind, unter Windows XP hingegen nicht. Ich benötige die Information, welcher Prozess auf welchem Port horcht und diese wäre der erweiterten
TCP Tabelle zu entnehmen.
Wie das geschilderte Verhalten zustande kommt, ist mir ein Rätsel, deshalb dieser Beitrag.
Grüsse
hirnstroem