Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
Delphi XE5 Professional
|
Re: Vierten Zeitstempel ermitteln
30. Mai 2008, 15:15
Delphi-Quellcode:
function GetNTTime(fn: String; var FileInformation: FILE_BASIC_INFORMATION): Boolean;
var
dosfn : String;
szNtDeviceName : array[0..MAX_PATH] of Char;
Status : NTSTATUS;
ObjName : UNICODE_STRING;
ObjectAttributes : OBJECT_ATTRIBUTES;
Buffer : array of WideChar;
begin
Result := False;
QueryDosDevice (PAnsiChar(ExtractFileDrive(fn)), szNtDeviceName, MAX_PATH);
dosfn := Format('%s\%s', [szNtDeviceName, copy(fn, 4, Length(fn) - 3)]);
try
SetLength(Buffer, Length(dosfn));
FillChar(ObjectAttributes, SizeOf(OBJECT_ATTRIBUTES), 0);
FillChar(FileInformation, SizeOf(FILE_BASIC_INFORMATION), 0);
MultiByteToWideChar(CP_UTF8, 0, @dosfn[1], Length(dosfn), PWideChar(Buffer), Length(Buffer));
ObjName.Buffer := @Buffer[0];
ObjName.Length := Length(dosfn) * SizeOf(WideChar);
InitializeObjectAttributes(@ObjectAttributes, @ObjName, OBJ_CASE_INSENSITIVE, 0, nil);
Status := NtQueryAttributesFile(@ObjectAttributes, @FileInformation);
Result := NT_SUCCESS(Status);
finally
//
end;
end;
Ich denke, der Fehler liegt bei ObjName. Es funktioniert weder mit dem Dateinamen noch dem Devicenamen. Also zum Beispiel:
D:\Garfield\Beispiel.txt
\Device\HarddiskVolume2\Garfield\Beispiel.txt
Wie müsste ein Objectname aussehen?
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
|
|
Zitat
|