Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Vierten Zeitstempel ermitteln

  Alt 28. Mai 2008, 21: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.
Angehängte Dateien
Dateityp: 7z filetime_796.7z (4,0 KB, 6x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat