Einzelnen Beitrag anzeigen

Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

CPU Auslastung unter 64bit

  Alt 22. Mär 2011, 02:28
Ich versuche einen weg zu finden CPU Auslastung unter einem 64 Bit Windows auszulesen.

Der Code soll jedoch mit aktivierten UAC funktionieren, damit fallen also Performance Counters aus, weil die App dazu Admin Rechte braucht.

Ich hab hier einen Code gefunden: http://www.swissdelphicenter.ch/de/showcode.php?id=969

Dieser funktioniert jedoch nur unter 32 Bit (getestet mit Windows 7).

Unter 64 Bit gibt es dieses Problem:

// get new CPU's idle time
status := NtQuerySystemInformation(SystemPerformanceInformat ion, @SysPerfInfo, SizeOf(SysPerfInfo), nil);
if status <> 0 then Exit;

Status liefert hier <> 0 und nach Auswertung des Fehlercodes kommt raus dass dieser record:

TSystem_Performance_Information = packed record
liIdleTime: LARGE_INTEGER; {LARGE_INTEGER}
dwSpare: array[0..75] of DWORD;
end;

eine andere Länge hat als von NtQuerySystemInformation erwartet.
  Mit Zitat antworten Zitat