我想在C++中使用Win32句柄获取文件的名称。如何使用Win32 Handle获取C++文件的名称?
我还有两个问题,文件可能是空的(打开文件可能不起作用),我无法使用Windows Vista及更高版本支持的所有奇特功能(例如GetFinalPathNameByHandle)。
感谢您的帮助!
我想在C++中使用Win32句柄获取文件的名称。如何使用Win32 Handle获取C++文件的名称?
我还有两个问题,文件可能是空的(打开文件可能不起作用),我无法使用Windows Vista及更高版本支持的所有奇特功能(例如GetFinalPathNameByHandle)。
感谢您的帮助!
对于XP +,你可以映射文件,然后调用GetMappedFileName
这将返回名称(虽然不适用于目录)。见Obtaining a File Name From a File Handle。
我不知道win32,但我知道sysinternals进程资源管理器。谷歌提出了一个开源的替代方案:http://processhacker.sourceforge.net/
也许学习该代码将使你能做到这一点。
GetMappedFilename()
不是最好的解决方案,尽管在MSDN中推荐。
我已经发布,做你想要什么准备复制粘贴此代码: How to get name associated with open HANDLE
你是什么意思“处理程序”吗? POSIX文件描述符? C stdio文件? C++ iostreams fstream? Win32 API的东西? Qt的东西? – 2012-04-16 06:23:07
我想他是指从'CreateFile'接收的Win32'HANDLE'? – 2012-04-16 06:24:21
他应该这样说!并用'winapi'标记问题。这不是一个C++问题,它是一个Windows编程问题。 – 2012-04-16 06:26:44