17 января 2001
NtQueryDirectoryFile (ZwQueryDirectoryFile)
NTSYSAPI
NTSTATUS
NTAPI
NtQueryDirectoryFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
IN PVOID ApcContext OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock,
OUT PVOID FileInformation,
IN ULONG Length,
IN FILE_INFORMATION_CLASS FileInformationClass,
IN BOOLEAN ReturnSingleEntry,
IN PUNICODE_STRING FileMask OPTIONAL,
IN BOOLEAN RestartScan );
NtQueryDirectoryFile используется для перечисления объектов (файлов и каталогов) в каталоге. Win32 API использует её в функциях FindFirstFile-FindNextFile.
FileHandle
HANDLE файлового объекта, открытый с опцией FILE_DIRECTORY_FILE и доступом FILE_LIST_DIRECTORY.
Event
Необязательный HANDLE на объект Event, который переходит в сигнальное состояние
после того, как запрос выполнен.
ApcRoutine
Необязательный указатель на пользовательскую функцию APC, вызываемую после того, как запрос выполнен.
ApcContext
Параметр для функции ApcRoutine.
IoStatusBlock
Указатель на структуру IO_STATUS_BLOCK. After enumeration complete, Information member of this structure contains number of bytes writed into FileInformation buffer. Status member contains IO result of call, and can be one of:
- STATUS_SUCCESS - Enumeration has results in FileInformation buffer.
- STATUS_NO_MORE_FILES - FileInformation buffer is empty, and next call isn't needed.
- STATUS_NO_SUCH_FILE - Returned when FileMask parameter specify exactly one file (don't contains '*' or '?' characters), and queried directory don't contains that file.
FileInformation
Буфер для выходных данных. Память выделяется пользователем.
Length
Длина буфера FileInformation в байтах.
FileInformationClass
Тип информации. Может принимать значение:
ReturnSingleEntry
Функция возвращает только 1 результат, если установлен этот параметр.
FileMask
Если указана маска, возвращается информаци только о файлах, подходящих под маску.
ВНИМАНИЕ:Если NtQueryDirectoryFile вызван два раза с разными масками, то поведение функции не определено. Обычно FileMask указанная во втором вызове игнорируется, и выдача функции будет совпадать с первой маской. Лучшее решение - закрывать HANDLE каталога после каждого вызова функции, в котором указывался FileMask.
RestartScan
Используется с параметром ReturnSingleEntry. Если установлен, то NtQueryDirectoryFile продолжает перечисление после последнего элемента предыдущего
вызова функции. Если не установлен, то возвращается первый элемент в каталоге.
Детальная информация о результате описана на странице FILE_INFORMATION_CLASS.
Документировал:
Томаш Новак
Бо Брантен
Зависимости:
Библиотека: ntdll.lib
См. также:
NtCreateFile
NtOpenFile
NtQueryInformationFile
NtQueryOleDirectoryFile
NtQueryVolumeInformationFile