Ok,
dank dem Code-Schnippsel von marabu und der ausführlichen Erklärung von Robert habe ich folgende Lösung:
Delphi-Quellcode:
procedure FltStats;
var bufSize : DWord;
dwResult : DWord;
ppfStats : PPF_INTERFACE_STATS;
i : Integer;
Filter : ^PF_FILTER_STATS;
begin
bufSize := SizeOf(PF_INTERFACE_STATS);
GetMem(ppfStats, bufSize);
try
dwResult := PfGetInterfaceStatistics(hIf, ppfStats, @bufSize, false);
case dwResult of
ERROR_INSUFFICIENT_BUFFER :
begin
FreeMem(ppfStats);
GetMem(ppfStats, bufSize);
dwResult := PfGetInterfaceStatistics(hIf, ppfStats, @bufSize, false);
if dwResult <> NO_ERROR then
Exit;
end;
ERROR_INVALID_HANDLE : Exit;
end;
Filter := @ppfStats^.filterinfo;
for i := 0 to (ppfStats^.dwNumInFilters + ppfStats^.dwNumOutFilters) -1 do begin
ShowMessage( 'Filter (' + IntToStr(Succ(i)) + ')'#13#10 +
' SourcePort: ' + IntToStr(Integer(Filter^.info.wSrcPort)) + #13#10+
' DestinationPort: ' + IntToStr(Filter^.info.wDstPort));
Inc(Filter);
end;
finally
FreeMem(ppfStats);
end;
end;
Sollte oben doch noch was nicht so wirklich OK sein, wäre ich für Hinweise dankbar
Meine Frage wurde perfekt beantwortet und ich habe mal wieder ein Stück dazugelernt...
Thx..