可以说我有一个文件句柄作为WinAPI CreateFile的结果。它未使用FILE_FLAG_DELETE_ON_CLOSE打开。只用一个句柄删除一个文件
有没有办法删除只有句柄的文件,而没有文件名?
感谢
可以说我有一个文件句柄作为WinAPI CreateFile的结果。它未使用FILE_FLAG_DELETE_ON_CLOSE打开。只用一个句柄删除一个文件
有没有办法删除只有句柄的文件,而没有文件名?
感谢
我不知道你是否可以专门单独删除手柄上的依据的文件,但你总是可以用手柄来检索文件名,如this MSDN article描述,然后调用的DeleteFile( )。
如果您在Windows Vista或更高版本上运行,SetFileInformationByHandle()将允许您通过设置信息类FileDispositionInfo
来完成此操作。
该操作的最终结果是,句柄现在将被标记为在关闭时删除 - 当文件的最后一个句柄关闭时,该文件将被删除。
对于旧版本的Windows,NTDLL导出NtSetInformationFile(),它可以让你做同样的事情。
Vista +提供GetFinalPathNameByHandle(),它可以与VOLUME_NAME_DOS一起用于查询“DOS”路径,然后您可以将其传递给DeleteFile()。
您可能可以使用[此问题](http://stackoverflow.com/questions/65170/how-to-get-name-associated-with-open-handle)中的信息来获取要使用的文件名删除文件 – user786653