also dann ist es wohl ein Fehler im
MSDN?
weil LARGE / LONGLONG = 64 Bit
Plargeinteger = Pointer/Integer also wieder 32 Bit ... wird die
API wohl doch nur 32 Bit haben wollen
und dieses _KEY_BASIC_INFORMATION hätte ich so Übersetzt
Delphi-Quellcode:
TKeyBasicInformation = packed record
Time: TFileTime;
TitleIndex: LongWord;
NameLength: LongWord;
Name: Array[0..0] of WideChar;
end;
stimmt sozusagen mit deinem überein.
mit KEY_INFORMATION_CLASS mußt du erstmal aufpassen ... entweder du sorgst dafür daß dieses Set 4 Byte groß ist (standardmäßig macht Delphi dieses nur 1 Byte klein)
oder du definierst es so:
Delphi-Quellcode:
type
KEY_INFORMATION_CLASS = ULONG;
const
KeyBasicInformation = 0;
KeyCachedInformation = 1;
KeyNameInformation = 2;
KeyNodeInformation = 3;
KeyFullInformation = 4;
KeyVirtualizationInformation = 5;
ich mach's gern auch so ... da sieht man den Zusammenhang
Delphi-Quellcode:
type KEY_INFORMATION_CLASS = ULONG;
const KeyBasicInformation = KEY_INFORMATION_CLASS(0);
...
KeyVirtualizationInformation = KEY_INFORMATION_CLASS(5);
PS:
const KeyBasicInformation: KEY_INFORMATION_CLASS = 0; geht nicht, weil Delphi macht dann eine "konstante" Variable draus -.-''
[add]
hast du nochmal die Parameter deiner APIs geprüft?
VAR, CONST und sowas kennt die
WinAPI (C) ja sozusagen nicht
NtQueryKey:
var ResultLength: PULONG würde ich da eher als
var ResultLength: ULONG vermuten (kenn jetzt aber die
API-Definitionen nicht, aber es wird doch wohl
PULONG ResultLength; sein).