Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
Delphi XE5 Professional
|
Re: Vierten Zeitstempel ermitteln
28. Mai 2008, 22:02
Nun bin ich soweit:
Delphi-Quellcode:
function NtQueryAttributesFile(ObjectAttributes: POBJECT_ATTRIBUTES;
FileInformation: PFILE_BASIC_INFORMATION): NTSTATUS;
stdcall; external ntdll name 'NtQueryAttributesFile';
function NT_SUCCESS(Status: NTSTATUS): WordBool;
begin
Result := Status >= 0;
end;
procedure InitObjectAttributes(var p: _OBJECT_ATTRIBUTES; n: PUNICODE_STRING; a: ULONG; r: THandle; s: POINTER);
begin
p.Length := SizeOf(OBJECT_ATTRIBUTES);
p.RootDirectory := r;
p.Attributes := a;
p.ObjectName := n;
p.SecurityDescriptor := s;
p.SecurityQualityOfService := nil;
end;
function GetNTTime(fn: String; var FILE_BASIC_INFORMATION): Boolean;
var
Status : NTSTATUS;
ObjName : UNICODE_STRING;
ObjectAttributes : OBJECT_ATTRIBUTES;
FileInformation : _FILE_BASIC_INFORMATION;
Buffer : array of WideChar;
begin
Result := False;
try
SetLength(Buffer, Length(fn));
FillChar(ObjectAttributes, SizeOf(OBJECT_ATTRIBUTES), 0);
FillChar(FileInformation, SizeOf(_FILE_BASIC_INFORMATION), 0);
MultiByteToWideChar(CP_UTF8, 0, @fn[1], Length(fn), PWideChar(Buffer), Length(Buffer));
ObjName.Buffer := @Buffer[0];
ObjName.Length := Length(fn) * SizeOf(WideChar);
InitObjectAttributes(ObjectAttributes, @ObjName, OBJ_CASE_INSENSITIVE, 0, nil);
Status := NtQueryAttributesFile(@ObjectAttributes, @FileInformation);
Result := NT_SUCCESS(Status);
finally
//
end;
end;
Es gibt keine Fehlermeldungen der Status ist dennoch FALSE. Ich suche seit Stunden und finde im Prinzip immer nur die gleichen Typdeklarationen aber keine Beispiele, die mich weiterbringen. Vielleicht hat hier jemand eine Idee, was falsch sein könnte oder was fehlt.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
|
|
Zitat
|