WinApi FindFirstFile 和文件句柄

Posted

技术标签:

【中文标题】WinApi FindFirstFile 和文件句柄【英文标题】:WinApi FindFirstFile and the file handle 【发布时间】:2012-08-18 23:50:34 【问题描述】:

我在使用 FindFirstFile/FindNextFile 时遇到了一些问题。据我所知,它返回一个句柄,但我不能将它与 CreateFileMapping/ReadFile 一起使用,因为返回的句柄的值不同于从 CreateFile 返回的值。第一个问题:这两个句柄有什么区别,第二个问题:可以转换这个句柄吗?我唯一的想法是获取文件名,然后使用 CreateFile。

问候

【问题讨论】:

My only idea is to get the file name and than use CreateFile 这就是你必须做的事情 不,那个句柄只允许你调用 FindNextFile 和 FindClose。您需要单独调用 CreateFile()。 这里是一个使用示例:***.com/a/12082329/645583 【参考方案1】:

这两个手柄有什么区别

第一个是搜索句柄。在下面,有一个迭代器读取文件系统中的目录条目。 第二个是读取文件内容的迭代器。该文件甚至可能位于另一个卷上,而不是您用来定位它的目录条目。要了解更多信息,请谷歌“B-Tree”然后“NTFS”

获取文件名,然后使用 CreateFile

可以,但是需要结合目录+文件名。我通常调用 PathAppend API(准确地说是 CPathT::Append)来做到这一点。

【讨论】:

以上是关于WinApi FindFirstFile 和文件句柄的主要内容,如果未能解决你的问题,请参考以下文章

Windows内核中的FindFirstFile()

Windows API一日一练(58)FindFirstFile和FindNextFile函数

FindFirstFile 返回拒绝访问

VC++ 功能强大的API函数FindFirstFile使用介绍(附源码)

找不到标识符 FindFirstFile

[php代码审计] Window api函数 FindFirstFile 在php中的问题