-
-
[旧帖] 请教一个NtQueryDirectoryFile的问题 0.00雪花
-
发表于: 2011-1-18 16:09 3504
-
使用NtQueryDirectoryFile可以模拟FindFirstFile/FindNextFile来遍历某个文件夹下的文件,该函数有一个参数FileMask可以指定需要遍历的文件,如下的FileMask="a*.txt",说明遍历文件夹下所有以a开头的txt文件:
// 模拟FindFirstFile
// 模拟FindNextFile
遍历的伪代码如下:
这里有一个问题我一直不能理解,下面的NtQueryDirectoryFile函数并没有指定FileMask参数,他是如何知道接下来要找形如"a*.txt"的文件的呢?是系统内部使用了什么全局变量,还是FileHandle参数中包含了FileMask的信息?
还望高手解答,不胜感激!
UNICODE_STRING FileMask; RtlInitUnicodeString(FileMask, L"a*.txt");
// 模拟FindFirstFile
NtQueryDirectoryFile (FileHandle, NULL, NULL, NULL, &IoSB, FileInformation, Length, FileBothDirectoryInformation, 1, FileMask, 0 );
// 模拟FindNextFile
NtQueryDirectoryFile (FileHandle, NULL, NULL, NULL, &IoSB, FileInformation, Length, FileBothDirectoryInformation, 0, 0, 0 );
遍历的伪代码如下:
NTSTATUS status = NtQueryDirectoryFile (FileHandle, NULL, NULL, NULL, &IoSB, FileInformation, Length, FileBothDirectoryInformation, 1, FileMask, 0 ); while ( status != STATUS_NO_MORE_FILES ) { status = NtQueryDirectoryFile (FileHandle, NULL, NULL, NULL, &IoSB, FileInformation, Length, FileBothDirectoryInformation, 0, 0, 0 ); }
这里有一个问题我一直不能理解,下面的NtQueryDirectoryFile函数并没有指定FileMask参数,他是如何知道接下来要找形如"a*.txt"的文件的呢?是系统内部使用了什么全局变量,还是FileHandle参数中包含了FileMask的信息?
还望高手解答,不胜感激!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
- 请教一个NtQueryDirectoryFile的问题 3505
- [求助]如何在一个目录下同时显示两个目录下的文件? 3268
- [求助]关于char *的一个问题 5836
- [求助]如何关联符号文件 5008
- [求助]请问在驱动程序中怎么实现进程与网络端口的关联? 3901
看原图
赞赏
雪币:
留言: