2012-04-16 2 views
-2

Я пытаюсь получить имя файла с помощью дескриптора Win32 на C++.Как получить имя файла на C++ с помощью Win32 Handle?

У меня еще две проблемы: файл может быть пустым (открытие файла может не сработать), и я не могу использовать все причудливые функции (например, GetFinalPathNameByHandle), которые поддерживаются Windows Vista и выше.

Спасибо за помощь!

+2

Что вы имеете в виду «Handler»? Файловый дескриптор POSIX? C stdio FILE? C++ iostreams fstream? Win32 API что-то? Qt что-то еще? –

+1

Я думаю, что он означает, что Win32 'HANDLE' получен от' CreateFile'? –

+0

Он должен сказать это! И пометьте вопрос 'winapi'. Это не вопрос на C++, это вопрос программирования Windows. –

ответ

0

Для XP + вы можете сопоставить файл, затем позвонить GetMappedFileName, который вернет имя (хотя и не для каталогов). См. Obtaining a File Name From a File Handle.

0

Я не знаю win32, но я знаю о sysinternals process explorer. Google придумал альтернативу с открытым исходным кодом: http://processhacker.sourceforge.net/

Возможно, изучение этого кода позволит вам сделать это.

0

GetMappedFilename() не лучшее решение, хотя рекомендуется в MSDN.

Я отправил код, который делает именно то, что вы хотите готовы для копирования и вставки здесь: How to get name associated with open HANDLE