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
ReOpenFile (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.