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 =)