Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

CallNtPowerInformation

  Alt 15. Feb 2006, 20:12
Ich versuche gerade die Prozessortaktfrequenz mit Hilfe der API Funktion MSDN-Library durchsuchenCallNtPowerInformation zu ermitteln. Leider schlägt das irgenwie fehl. Erst kommt "Nicht genügend Arbeitsspeicher" und dann kommt eine AV. Wo habe ich jetzt schon wieder den Denkfehler?
Delphi-Quellcode:
type
  PROCESSOR_POWER_INFORMATION = packed record
    Number: Cardinal;
    MaxMhz: Cardinal;
    CurrentMhz: Cardinal;
    MhzLimit: Cardinal;
    MaxIdleState: Cardinal;
    CurrentIdleState: Cardinal;
  end;
  PPROCESSOR_POWER_INFORMATION = ^PROCESSOR_POWER_INFORMATION;

function CallNtPowerInformation(InformationLevel: DWORD; InPutBuffer: Pointer; InputBufferSize: ULONG; OutPutBuffer:
  Pointer; OutPutBufferSize: ULONG): DWORD; external 'PowrProf.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
  ppi: PROCESSOR_POWER_INFORMATION;
  err: DWORD;
begin
  ZeroMemory(@ppi, sizeof(PROCESSOR_POWER_INFORMATION));
  err := CallNTPowerInformation(11, nil, 0, @ppi, sizeof(PROCESSOR_POWER_INFORMATION));
  if err = 0 then
    ShowMessage(IntToStr(ppi.CurrentMhz))
  else
    ShowMessage(SysErrorMessage(err));
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat