ZwQueryDirectoryFile 行为
我从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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要在
RestartScan
参数中传递FALSE
。来自文档:You need to pass
FALSE
in theRestartScan
argument. From the documentation: