代码之家  ›  专栏  ›  技术社区  ›  ivymike

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

  •  5
  • ivymike  · 技术社区  · 14 年前

    我目前正在使用findFirstFile、findNextFile API递归迭代目录,以便根据给定的条件搜索文件。我注意到“dir/s”命令的性能比我的程序好。我尝试在进程监视器中检查事件,它看起来像cmd.exe/dir命令直接查询磁盘设备驱动程序。有没有什么方法可以实现类似于deviceiocontrol()的东西?我对设备驱动程序很陌生,但对编程并不陌生。附加procmon输出以供参考:

    问候,

    alt text

    当做,

    5 回复  |  直到 14 年前
        1
  •  1
  •   Eugene Mayevski 'Callback    14 年前

    你可以打电话 ZwQueryDirectoryFile 直接。进一步降低到驱动程序级别需要发送大量IRP,这可能是一种过度杀伤力。

        2
  •  3
  •   Michael    14 年前

    使用 FindFirstFile FindNextFile . 这就是API,使用 DeviceIOControl 直接是一团糟或不可能(不确切知道)。

    你试过了吗? FindFirstFileEx 而且它的 FIND_FIRST_EX_LARGE_FETCH 旗与 FindExInfoBasic 信息级别?

        3
  •  2
  •   jrtipton    14 年前

    “dir/s”正在使用findfirst/next。它不做任何特殊的魔术来枚举文件。

    querydirectory似乎是procmon公开findfirst/next从文件系统获取数据的方式。

        4
  •  1
  •   Benjamin    14 年前

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

    它运作良好。更快。
    它打开一个卷,并直接解析。

    但它只在NTFS上工作。

        5
  •  1
  •   snoone    14 年前

    分析你的应用程序,你的瓶颈可能是elswhere。其中一些选择就像是拿出一把猎枪来射杀一只苍蝇…

    -史葛