Недокументированные функции NTDLL

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:
  • FileInformation     Буфер для выходных данных. Память выделяется пользователем.
  • Length     Длина буфера FileInformation в байтах.
  • FileInformationClass     Тип информации. Может принимать значение:
  • ReturnSingleEntry     Функция возвращает только 1 результат, если установлен этот параметр.
  • FileMask     Если указана маска, возвращается информаци только о файлах, подходящих под маску.
        ВНИМАНИЕ:Если NtQueryDirectoryFile вызван два раза с разными масками, то поведение функции не определено. Обычно FileMask указанная во втором вызове игнорируется, и выдача функции будет совпадать с первой маской. Лучшее решение - закрывать HANDLE каталога после каждого вызова функции, в котором указывался FileMask.
  • RestartScan     Используется с параметром ReturnSingleEntry. Если установлен, то NtQueryDirectoryFile продолжает перечисление после последнего элемента предыдущего вызова функции. Если не установлен, то возвращается первый элемент в каталоге.



    Детальная информация о результате описана на странице FILE_INFORMATION_CLASS.


    Документировал:
    Томаш Новак
    Бо Брантен



    Зависимости:
    Библиотека: ntdll.lib


    См. также:
    NtCreateFile
    NtOpenFile
    NtQueryInformationFile
    NtQueryOleDirectoryFile
    NtQueryVolumeInformationFile