Thema: Delphi GetExtendedTcpTable

Einzelnen Beitrag anzeigen

Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#1

GetExtendedTcpTable

  Alt 13. Nov 2006, 01:22
Hallöchen..

Ich möchte alle Verbindungen (zunächst erstmal nur TCP) und die dazugehörige PID ermitteln.
Das habe ich bis jetzt
Delphi-Quellcode:
program Endpoints;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

const
  ANY_SIZE = 1;

type
  MIB_TCPROW_OWNER_PID = packed record
    dwState: DWORD;
    dwLocalAddr: DWORD;
    dwLocalPort: DWORD;
    dwRemoteAddr: DWORD;
    dwRemotePort: DWORD;
    dwOwningPid: DWORD;
    end;
  PMIB_TCPROW_OWNER_PID = MIB_TCPROW_OWNER_PID;

type
  MIB_TCPTABLE_OWNER_PID = packed record
    dwNumEntries: DWord;
    table: array [0..ANY_SIZE - 1] of MIB_TCPROW_OWNER_PID ;
    end;
  PMIB_TCPTABLE_OWNER_PID = MIB_TCPTABLE_OWNER_PID;

const
  TCP_TABLE_OWNER_PID_ALL = 5;
  AF_INET = 0;

type
  TCP_TABLE_CLASS = Integer;
  ULONG = Integer;

function GetExtendedTcpTable(pTcpTable: Pointer; dwSize: PDWORD; bOrder: BOOL;
  lAf: ULONG; TableClass: TCP_TABLE_CLASS; Reserved: ULONG): DWord; stdcall; external 'iphlpapi.dllname 'GetExtendedTcpTable'; // TCP Table + PID

var
  pTcpTable: PMIB_TCPTABLE_OWNER_PID;
  dwSize: PDWord;
  Res: Dword;
  I: Integer;
begin
  Res := GetExtendedTcpTable(@pTcpTable, dwSize, False, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0); // False = unsortiert

  for I := 0 to pTcpTable.dwNumEntries do
    writeln( IntToStr(pTcpTable.table[I].dwOwningPid) );
end.
pTcpTable.dwNumEntries ist immer 0.
Ich vermute den Fehler in den Deklarationen kann das sein??

MSDN-Link: http://msdn.microsoft.com/library/de...edtcptable.asp
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat