Du hast die Funktion so wie ich das gesehen habe falsch übersetzt:
Delphi-Quellcode:
function PowerReadValueMin(RootPowerKey: HKEY;
const SubGroupOfPowerSettingsGuid: PGUID; const PowerSettingGuid: PGUID;
ValueMinimum: PDWORD): DWORD; stdcall; external PWR_PROF;
Bei ValueMinimum übergibst du dann einfach einen Zeiger auf deine DWORD-Variable und schon gehts.
Ich würde aber auch nochmal einen Blick auf deinen Quelltext werfen:
Delphi-Quellcode:
PowerReadValueMin (0, @sub_guid, @setting_guid, nil);
PowerReadValueMin (0, @sub_guid, @setting_guid, nil);
GetMem(b, size);
// Nach dem ersten Aufruf wird size richtig gesetzt.
{size wurde nie an die Funktion übergeben... wer soll da was richtig setzen?}
res := PowerReadValueMin (0, @sub_guid, @setting_guid, Pointer(b));
if res = ERROR_SUCCESS then begin
result := b;
end
else
{wozu der Else-Zweig wenn hier das Selbe passiert?}
result := b;