-
-
[旧帖] 请教一个NtQueryDirectoryFile的问题 0.00雪花
-
发表于: 2011-1-18 16:09 3498
-
使用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的信息?
还望高手解答,不胜感激!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
- 请教一个NtQueryDirectoryFile的问题 3499
- [求助]如何在一个目录下同时显示两个目录下的文件? 3266
- [求助]关于char *的一个问题 5832
- [求助]如何关联符号文件 5003
- [求助]请问在驱动程序中怎么实现进程与网络端口的关联? 3898
看原图
赞赏
雪币:
留言: