Thema: Delphi GetExtendedTcpTable

Einzelnen Beitrag anzeigen

Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#5

Re: GetExtendedTcpTable

  Alt 13. Nov 2006, 07:44
Zitat von Basilikum:
dies dürfte wegen dem fehlenden @ vor dwSize passieren...
Das kann nicht sein, denn ich habe mir einen "echten" DWord-Pointer "gemacht" und ihn mit New und Dispose "behandelt". An den Paramter-Typen kann es nicht liegen. (garantiert )
Delphi-Quellcode:
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 = Longword;

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
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  pTcpTable: PMIB_TCPTABLE_OWNER_PID;
  dwSize: PDWord;
  Res: Dword;
  I: Integer;
begin
  New(pTcpTable);
  New(dwSize);

  dwSize^:=SizeOf(MIB_TCPTABLE_OWNER_PID);

  Res := GetExtendedTcpTable(pTcpTable, dwSize, False, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0); // False = unsortiert

  if Res<>NO_ERROR then
    raise Exception.Create(SysErrorMessage(Res));

  for I := 0 to pTcpTable.dwNumEntries do
    writeln( IntToStr(pTcpTable.table[I].dwOwningPid) );

  dispose(dwSize);
  dispose(pTcpTable);
end;

end.
Ich denke es liegt eher an den Werten. Leider finde ich weder im Plattform-SDK noch im Web etwas dazu.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat