Einzelnen Beitrag anzeigen

hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

GetExtendedTcpTable -> mit untersch. Betriebssystemen

  Alt 30. Mai 2008, 12:35
'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
inde deus abest
  Mit Zitat antworten Zitat