我目前正在使用FindFirstFile,FindNextFile API来递归遍历目录,以便根据给定的条件搜索文件。我注意到“dir / s”命令比我的程序提供更好的性能。我试着检查进程监视器中的事件,看起来像cmd.exe / dir命令直接查询磁盘设备驱动程序。有什么方法可以实现与DeviceIOControl()相似的东西吗?虽然不是编程新手,但我对设备驱动程序非常陌生。附加procmon输出以供参考:
此致
答案 0 :(得分:3)
使用FindFirstFile
和FindNextFile
。这就是API,直接使用DeviceIOControl
要么是混乱,要么是不可能(不完全清楚)。
您是否尝试过FindFirstFileEx
及FIND_FIRST_EX_LARGE_FETCH
旗帜和FindExInfoBasic
信息等级?
答案 1 :(得分:2)
“dir / s”正在使用FindFirst / Next。枚举文件没有任何特殊的魔力。
QueryDirectory似乎是Procmon公开FindFirst / Next从文件系统获取数据的方式。
答案 2 :(得分:1)
您可以直接致电ZwQueryDirectoryFile。进一步降低到驱动程序级别将需要发送一堆IRP,并可能是一个矫枉过正。
答案 3 :(得分:1)
答案 4 :(得分:1)
配置您的应用,您的瓶颈很可能就在哪里。其中一些选择就像拿出霰弹枪射击......
-Scott