Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#1

Dateiname zu FileHandle auslesen

  Alt 2. Dez 2007, 19:42
mir war zwar so, als wenn's hier mal etwas dazu gab, aber hab irgendwie nichts gefunden -.-''

also, weiß zufällig wer wie ich aus einem FileHandle (CreateFile) den Dateinamen rausbekomm?
über MemoryMapping und GetModuleFilename ging's leider nicht.

ich wollte meinen Programmcode etwas aufräumen und daher
das auskommentierte MSDN-Library durchsuchenReOpenFile (da erst ab Vista) aktivieren und den Ersatzcode weglassen,
aber dafür bräuchte ich eine Möglichkeit um an den Dateinamen ranzukommen
um einen Vor-Vista-Ersatz schreiben zu können:
Code:
Var ReOpenFileW: Function (hOriginalFile: THandle;
  dwDesiredAccess, dwShareMode, dwFlags: LongWord): THandle; StdCall;

Function ReOpenFileW_(hOriginalFile: THandle;
  dwDesiredAccess, dwShareMode, dwFlags: LongWord): THandle; StdCall;

  Var FileName: WideString;
    lpSecurityAttributes: PSecurityAttributes;
    hTemplateFile: THandle;

  Begin
    FileName            := [color=red]FileHandleToFileName[/color](hOriginalFile);
    lpSecurityAttributes := nil; // diese Beiden müssen für mich nicht
    hTemplateFile       := 0;   // unbedingt ausgelesen werden

    CloseHandle(hOriginalFile);
    Result := CreateFileW(PWideChar(FileName), dwDesiredAccess, dwShareMode,
      lpSecurityAttributes, OPEN_EXISTING, dwFlags, hTemplateFile);
  End;

ReOpenFileW := GetProcAddress(GetModuleHandle('kernel32.dll'), 'ReOpenFileW');
If @ReOpenFileW = nil Then ReOpenFileW := @ReOpenFileW_;
Und nein, auch noch CreateFile/CloseHandle zu hooken und die Dateinamen/FileHandles zu speichern kommt nicht in Frage ... da laß ich es doch lieber so wie es jetzt ist.
$2B or not $2B
  Mit Zitat antworten Zitat