ZwQueryDirectoryFile 行为

发布于 2024-11-09 04:38:54 字数 492 浏览 0 评论 0原文

我从msdn文档中了解到ZWQueryDirectoryFile API 使用。 我对其中的一项特定功能感到困惑。

案例:我的应用只涉及NT级别的API。我必须使用 ZwQueryDirectoryFile 获取指定父目录中的文件和目录。我必须分配长度未知的缓冲区。因此,我想通过分配 4096 并获取适合大小的实体来完成此操作,并且必须进一步分配以获得剩余的直到 ERROR_NO_MORE_FILES。 FindNextFile 使用相同的概念,通过逐阶段调用 ZWQueryDirectoryFIle,缓冲区长度为 4096。所以我认为,通过 querydirectoryfile api,该要求绝对可行。 我的问题是当我第二次调用查询目录文件时,我不知道如何通知 ZwQueryDirectoryFile api 从之前的获取状态恢复。

I get to know from msdn documentations about ZWQueryDirectoryFile APIs usage.
I am puzzled with one particular functionality in it.

Case: My application only involves NT level APIs. I have to fetch the files and directories in a specified parent directory with ZwQueryDirectoryFile. I have to allocate buffer with a length which is unknown. So I would like to do it by allocating 4096 and get the entities fit for the size and have to allocate further to get the remaining till ERROR_NO_MORE_FILES.
FindNextFile uses the same concept by calling ZWQueryDirectoryFIle phase by Phase with buffer length 4096. So I assumed, the requirement is definitely feasible through querydirectoryfile api.
My problem is When I call Query directory file for the second time, I dont know how to inform the ZwQueryDirectoryFile api to resume from the previous fetching state.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玩物 2024-11-16 04:38:54

您需要在 RestartScan 参数中传递 FALSE。来自文档

重新启动扫描 [in]

如果扫描从第一个条目开始,则设置为 TRUE
目录。如果恢复则设置为 FALSE
上次通话的扫描结果。

You need to pass FALSE in the RestartScan argument. From the documentation:

RestartScan [in]

Set to TRUE if the scan is to start at the first entry in the
directory. Set to FALSE if resuming
the scan from a previous call.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文