有没有办法直接查询文件系统设备驱动程序列出目录中的文件?

时间:2010-08-30 19:17:29

标签: windows winapi filesystems device-driver drivers

我目前正在使用FindFirstFile,FindNextFile API来递归遍历目录,以便根据给定的条件搜索文件。我注意到“dir / s”命令比我的程序提供更好的性能。我试着检查进程监视器中的事件,看起来像cmd.exe / dir命令直接查询磁盘设备驱动程序。有什么方法可以实现与DeviceIOControl()相似的东西吗?虽然不是编程新手,但我对设备驱动程序非常陌生。附加procmon输出以供参考:

alt text

此致

5 个答案:

答案 0 :(得分:3)

使用FindFirstFileFindNextFile。这就是API,直接使用DeviceIOControl要么是混乱,要么是不可能(不完全清楚)。

您是否尝试过FindFirstFileExFIND_FIRST_EX_LARGE_FETCH旗帜和FindExInfoBasic信息等级?

答案 1 :(得分:2)

“dir / s”正在使用FindFirst / Next。枚举文件没有任何特殊的魔力。

QueryDirectory似乎是Procmon公开FindFirst / Next从文件系统获取数据的方式。

答案 2 :(得分:1)

您可以直接致电ZwQueryDirectoryFile。进一步降低到驱动程序级别将需要发送一堆IRP,并可能是一个矫枉过正。

答案 3 :(得分:1)

http://ntfs-search.sourceforge.net/

效果很好。更快。
它打开一个卷,然后直接解析。

但它只适用于NTFS。

答案 4 :(得分:1)

配置您的应用,您的瓶颈很可能就在哪里。其中一些选择就像拿出霰弹枪射击......

-Scott