Tja, jetzt musst du noch rausfinden, wo genau es in der aufgerufenen Funktion QueryServiceConfig knallt (ist ja eine überladene).
"Meine" Funktion (eigentlich von Ritsaert Hornstra bei StackOverflow) sieht so aus:
Delphi-Quellcode:
var
Buffer:
{$IFDEF UNICODE}
LPQUERY_SERVICE_CONFIG
{$ELSE} PQueryServiceConfig
{$ENDIF};
BytesNeeded: DWORD;
begin
Buffer :=
nil;
if QueryServiceConfig(FHandle,Buffer,0,BytesNeeded) <> ERROR_INSUFFICIENT_BUFFER
then
RaiseLastOSError;
GetMem(Buffer,BytesNeeded);
try
if not QueryServiceConfig(FHandle,Buffer,BytesNeeded,BytesNeeded)
then
RaiseLastOSError;
// [...]
finally
FreeMem(Buffer);
end;
end;
Es gibt also einen Unterschied im ersten Aufruf. Dort wird zwar
nil
übergeben, aber mittels einer Variable.
@Sir Rufo: QueryServiceConfig ist in diesem Fall keine
API-Funktion! Vielleicht ist der Name der Funktion etwas ungünstig, aber Delphi erkennt es ja anhand der Signatur trotzdem.
MfG Dalai