Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Компонент объединения используется, когда поле 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: компонент union, используемый для 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 или в режиме ядра. В настоящее время он используется только виртуальной машиной DOS NT (NTVDM), которая существует только в 32-разрядных операционных системах на основе NT. Обратите внимание, что индекс файла не определен для файловых систем, таких как NTFS, в которых позиция файла в родительском каталоге не устранена и может быть изменена в любое время для поддержания порядка сортировки.
DirectoryBuffer: указатель на предоставленный вызывающим буфер выходных данных, который получает запрошенные сведения о содержимом каталога. Этот элемент является необязательным и может иметь значение NULL, если MDL предоставляется в QueryDirectory.MdlAddress. См. примечания.
MdlAddress: адрес списка дескрипторов памяти (MDL), описывающий буфер, на который указывает член QueryDirectory.DirectoryBuffer . Этот элемент является необязательным и может иметь значение NULL , если буфер указан в QueryDirectory.DirectoryBuffer. См. примечания.
NotifyDirectory: компонент Union, используемый для IRP_MN_NOTIFY_CHANGE_DIRECTORY операций.
Длина: длина буфера в байтах, на который указывает член NotifyDirectory.DirectoryBuffer .
CompleteFilter: Битовая маска флагов, указывающая типы изменений в файлах или каталогах, которые должны привести к завершению irPs в списке уведомлений. Ниже описаны возможные значения флагов.
Флаг Значение 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 содержит параметры для операции управления каталогом на основе IRP, представленной структурой данных обратного вызова (FLT_CALLBACK_DATA). Он содержится в FLT_IO_PARAMETER_BLOCK структуре.
Если предоставляется буфер DirectoryBuffer и MdlAddress , рекомендуется использовать минифильтры MDL. Память, на которую указывает DirectoryBuffer , допустимая, если он является адресом пользовательского режима, к которому обращается в контексте вызывающего процесса, или если это адрес режима ядра.
Если мини-фильтр изменяет значение MdlAddress, то после обратного вызова после операции диспетчер фильтров освобождает MDL, хранящийся в MdlAddress , и восстановит предыдущее значение MdlAddress.
IRP_MJ_DIRECTORY_CONTROL — это операция на основе IRP.
Требования
Тип требования | Требование |
---|---|
Заголовок | Fltkernel.h (include Fltkernel.h) |
См. также
FILE_REPARSE_POINT_INFORMATION
FltNotifyFilterChangeDirectory
FsRtlNotifyFilterChangeDirectory