Поделиться через


FLT_PARAMETERS для объединения IRP_MJ_DIRECTORY_CONTROL

Компонент объединения используется, когда поле MajorFunction структуры FLT_IO_PARAMETER_BLOCK для операции IRP_MJ_DIRECTORY_CONTROL.

Синтаксис

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
      ULONG                   Spare1;
      ULONG POINTER_ALIGNMENT Spare2;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } NotifyDirectory;
  } DirectoryControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Члены

  • DirectoryControl: структура, содержащая следующие элементы.

  • QueryDirectory: компонент объединения, используемый для операций IRP_MN_QUERY_DIRECTORY.

  • Длина: длина (в байтах) буфера, на который указывает элемент QueryDirectory.DirectoryBuffer .

  • FileName: указатель на структуру UNICODE_STRING , содержащую имя файла в указанном каталоге.

  • FileInformationClass: указывает одно из значений, описанных ниже.

    Значение Значение
    FileBothDirectoryInformation Возвращает структуру FILE_BOTH_DIR_INFORMATION для каждого файла.
    FileDirectoryInformation Возвращает структуру FILE_DIRECTORY_INFORMATION для каждого файла.
    FileFullDirectoryInformation Возвращает структуру FILE_FULL_DIR_INFORMATION для каждого файла.
    FileIdBothDirectoryInformation Возвращает структуру FILE_ID_BOTH_DIR_INFORMATION для каждого файла.
    FileIdFullDirectoryInformation Возвращает структуру FILE_ID_FULL_DIR_INFORMATION для каждого файла.
    FileNamesInformation Возвращает структуру FILE_NAMES_INFORMATION для каждого файла.
    FileObjectIdInformation Возвращает структуру FILE_OBJECTID_INFORMATION для каждого файла.
    FileReparsePointInformation Возвращает одну структуру FILE_REPARSE_POINT_INFORMATION для каталога.
  • FileIndex: индекс файла, с которого начинается сканирование каталога. Игнорируется, если флаг SL_INDEX_SPECIFIED не установлен. Этот параметр не может быть указан ни в одной функции Win32 или подпрограмме поддержки режима ядра. В настоящее время он используется только виртуальной машиной NT DOS (NTVDM), которая существует только в 32-разрядных операционных системах на основе NT. Обратите внимание, что индекс файла не определен для файловых систем, таких как NTFS, в которых положение файла в родительском каталоге не является фиксированным и может быть изменено в любое время для поддержания порядка сортировки.

  • DirectoryBuffer: указатель на предоставленный вызывающей стороны выходной буфер, который получает запрошенные сведения о содержимом каталога. Этот член является необязательным и может иметь значение NULL, если MDL предоставляется в QueryDirectory.MdlAddress. См. Примечания.

  • MdlAddress: адрес списка дескрипторов памяти (MDL), описывающего буфер, на который указывает элемент QueryDirectory.DirectoryBuffer . Этот член является необязательным и может иметь значение NULL , если буфер предоставляется в QueryDirectory.DirectoryBuffer. См. Примечания.

  • NotifyDirectory: компонент объединения, используемый для операций IRP_MN_NOTIFY_CHANGE_DIRECTORY.

  • Длина: длина (в байтах) буфера, на который указывает член NotifyDirectory.DirectoryBuffer .

  • CompleteFilter: битовая маска флагов, указывающих типы изменений в файлах или каталогах, которые должны привести к завершению irp в списке уведомлений. Возможные значения флагов описаны ниже.

    Flag Значение
    FILE_NOTIFY_CHANGE_FILE_NAME Файл был добавлен, удален или переименован в этом каталоге.
    FILE_NOTIFY_CHANGE_DIR_NAME Подкаталог был создан, удален или переименован.
    FILE_NOTIFY_CHANGE_NAME Имя этого каталога изменилось.
    FILE_NOTIFY_CHANGE_ATTRIBUTES Значение атрибута этого файла, например время последнего доступа, изменилось.
    FILE_NOTIFY_CHANGE_SIZE Размер этого файла изменился.
    FILE_NOTIFY_CHANGE_LAST_WRITE Время последнего изменения этого файла изменилось.
    FILE_NOTIFY_CHANGE_LAST_ACCESS Время последнего доступа к этому файлу изменилось.
    FILE_NOTIFY_CHANGE_CREATION Время создания этого файла изменилось.
    FILE_NOTIFY_CHANGE_EA Расширенные атрибуты этого файла были изменены.
    FILE_NOTIFY_CHANGE_SECURITY Сведения о безопасности этого файла изменились.
    FILE_NOTIFY_CHANGE_STREAM_NAME Файловый поток был добавлен, удален или переименован в этом каталоге.
    FILE_NOTIFY_CHANGE_STREAM_SIZE Размер этого файлового потока изменился.
    FILE_NOTIFY_CHANGE_STREAM_WRITE Данные этого файлового потока изменились.
  • Spare1: в настоящее время не используется.

  • Spare2: в настоящее время не используется.

  • DirectoryBuffer: указатель на предоставленный вызывающей стороны выходной буфер, который получает запрошенные сведения о содержимом каталога. Этот член является необязательным и может иметь значение NULL, если MDL предоставляется в NotifyDirectory.MdlAddress. См. Примечания.

  • MdlAddress: адрес MDL, описывающий буфер, на который указывает член NotifyDirectory.DirectoryBuffer . Этот член является необязательным и может иметь значение NULL , если буфер предоставляется в NotifyDirectory.DirectoryBuffer. См. Примечания.

Комментарии

Структура FLT_PARAMETERS для операций IRP_MJ_DIRECTORY_CONTROL содержит параметры для операции directory-control-information на основе IRP, представленной структурой данных обратного вызова (FLT_CALLBACK_DATA). Он содержится в FLT_IO_PARAMETER_BLOCK структуре.

Если указаны буфер DirectoryBuffer и MdlAddress , рекомендуется, чтобы минифильтры использовали MDL. Память, на которую указывает DirectoryBuffer , допустима, если это адрес в пользовательском режиме, доступ к которому осуществляется в контексте вызывающего процесса, или если это адрес режима ядра.

Если минифильтр изменяет значение MdlAddress, то после обратного вызова после операции диспетчер фильтров освободит MDL, хранящийся в MdlAddress , и восстановит предыдущее значение MdlAddress.

IRP_MJ_DIRECTORY_CONTROL является операцией на основе IRP.

Требования

Тип требования Требование
Заголовок Fltkernel.h (включая Fltkernel.h)

См. также раздел

FILE_BOTH_DIR_INFORMATION

FILE_DIRECTORY_INFORMATION

FILE_FULL_DIR_INFORMATION

FILE_ID_BOTH_DIR_INFORMATION

FILE_ID_FULL_DIR_INFORMATION

FILE_NAMES_INFORMATION

FILE_OBJECTID_INFORMATION

FILE_REPARSE_POINT_INFORMATION

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltNotifyFilterChangeDirectory

FsRtlNotifyFilterChangeDirectory

FsRtlNotifyFilterReportChange

FsRtlNotifyFullChangeDirectory

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile