Ich benutze die Funktion GetIfTable aus der IpHlpAPI.dll um den Traffic mitzuprotokollieren. Dazu verwende ich die Header-Übersetzungen von Marcel van Brakel.
Nun habe ich ein etwas eigenartiges Verhalten festgestellt. Diese Funktion:
Delphi-Quellcode:
function GetSessionTraffic: Cardinal;
var
IfTable: PMIB_IFTABLE;
dwSize: Cardinal;
i: Integer;
begin
result := 0;
IfTable := nil;
dwSize := 0;
ZeroMemory(@IfTable, sizeof(IfTable));
try
VVGetIfTable(IfTable, dwSize, TRUE);
if IfTable <> nil then
begin
for i := 0 to IfTable.dwNumEntries - 1 do
begin
if IfTable.table[i].dwType <> MIB_IF_TYPE_LOOPBACK then
result := IfTable.table[i].dwInOctets + IfTable.table[i].dwOutOctets;
end;
end;
finally
Freemem(IfTable);
end;
end;
gibt mir unter Windows2000 das zurück, was sie soll, nämlich den Traffic der aktuellen Internetsitzung. Unter Windows ME jedoch die Summe aller bisherigen Internetsitzungen seit Wiondows gestartet wurde. Dies kann ich jedoch nicht gebrauchen.
Es muß aber einen Weg geben den Traffic der aktuell Sitzung zu bekommen, da das Statusfenster der DFÜ Verbindung korrekte Werte anzeigt.
Weiß jemand woran es liegt, dass ich unter ME immer die Summe aller Sitzungen bekomme und unter Windows 2000 nur den Traffic der aktuellen? Und, was mir wichtiger ist, wie bekomme ich nur den Traffic der aktuellen Sitzung unter ME?
Im Anhang mal meine aktuellen Source, falls es jemand mal testen will.