Einzelnen Beitrag anzeigen

Rururuuu

Registriert seit: 19. Nov 2010
2 Beiträge
 
#1

GetExtendedTcpTable + TCP_TABLE_OWNER_MODULE_ALL

  Alt 19. Nov 2010, 03:02
Ein riesiges Hallo an alle.

Der zweite Tag ist eine Qual, ich kann das Problem nicht lo"sen.
Die Quintessenz ist, dass ich eine Liste der offenen Ports, Herkunft, Empfa"nger, Verfahren, etc. bekommen mu"ssen

All dies macht die einwandfreie Funktion GetExtendedTcpTable.
Aber hier ist das Problem, dass GetExtendedTcpTable mit table_class TCP_TABLE_OWNER_PID_ALL wie es sein sollte funktioniert, aber mit GetExtendedTcpTable table_class TCP_TABLE_OWNER_MODULE_ALL funktioniert nicht. Viele Male schon u"ber Google bla"tterte, gibt es kein Beispiel fu"r die Umsetzung in Delphi.

Kurz du kommst.
Struktur:
Code:
PMIB_TCPROW_OWNER_MODULE = ^MIB_TCPROW_OWNER_MODULE;
MIB_TCPROW_OWNER_MODULE = packed record
  dwState: DWORD;
  dwLocalAddr: DWORD;
  dwLocalPort: DWORD;
  dwRemoteAddr: DWORD;
  dwRemotePort: DWORD;
  dwOwningPid: DWORD;
  liCreateTimestamp: LARGE_INTEGER;
  OwningModuleInfo : array[0..0] of UInt64;
end;
PMIB_TCPTABLE_OWNER_MODULE = ^MIB_TCPTABLE_OWNER_MODULE;
MIB_TCPTABLE_OWNER_MODULE = packed record
  dwNumEntries: DWORD;
  table: array [0..0] of MIB_TCPROW_OWNER_MODULE;
end;

Call:
Code:
var
pTcpTable: PMIB_TCPTABLE_OWNER_MODULE;
dwSize: DWORD;
Res: Dword;

Res := GetExtendedTcpTable(pTcpTable, @dwSize, False, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0);
    If (Res = ERROR_INSUFFICIENT_BUFFER) Then Begin
    pTcpTable := GetMemory(dwSize);
    //ZeroMemory(pTcpTable, dwSize);
      Res := GetExtendedTcpTable(pTcpTable, @dwSize, False, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0);
    end;
Aber diese Ertra"ge nicht richtig, die gleiche erste Parameter der ganze Staat, er ist nicht korrekt, sollten 1 bis 12 werden, aber TCP_TABLE_OWNER_MODULE_ALL obigen Code funktioniert gut.

PS Sorry fu"r die Kurve der deutschen =)
  Mit Zitat antworten Zitat