структура FS_FILTER_CALLBACK_DATA (ntifs.h)
FS_FILTER_CALLBACK_DATA — это структура данных обратного вызова для операции FS_FILTER_CALLBACK или FS_FILTER_COMPLETION_CALLBACK FS_FILTER_CALLBACKS.
Синтаксис
typedef struct _FS_FILTER_CALLBACK_DATA {
ULONG SizeOfFsFilterCallbackData;
UCHAR Operation;
UCHAR Reserved;
struct _DEVICE_OBJECT *DeviceObject;
struct _FILE_OBJECT *FileObject;
FS_FILTER_PARAMETERS Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
Члены
SizeOfFsFilterCallbackData
Размер этой структуры в байтах. Задайте значение sizeof(FS_FILTER_CALLBACK_DATA)
.
Operation
Операция файловой системы, для которой требуется вызвать подпрограмму обратного вызова. Эта операция может быть одной из следующих:
- FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
- FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION
- FS_FILTER_ACQUIRE_FOR_MOD_WRITE
- FS_FILTER_RELEASE_FOR_MOD_WRITE
- FS_FILTER_ACQUIRE_FOR_CC_FLUSH
- FS_FILTER_RELEASE_FOR_CC_FLUSH FS_FILTER_QUERY_OPEN
Reserved
Зарезервировано для системного использования.
DeviceObject
Объект устройства для этой операции.
FileObject
Объект File для этой операции.
Parameters
Объединение, содержащее все параметры, относящиеся к конкретной операции. См. заметки.
Комментарии
является членом структуры FS_FILTER_CALLBACKS , которая передается в FsRtlRegisterFileSystemFilterCallbacks в файловой системе или в подпрограмме DriverEntry драйвера фильтра.
Объединение параметров определяется следующим образом:
typedef union _FS_FILTER_PARAMETERS {
//
// AcquireForModifiedPageWriter
//
struct {
PLARGE_INTEGER EndingOffset;
PERESOURCE *ResourceToRelease;
} AcquireForModifiedPageWriter;
//
// ReleaseForModifiedPageWriter
//
struct {
PERESOURCE ResourceToRelease;
} ReleaseForModifiedPageWriter;
//
// AcquireForSectionSynchronization
//
struct {
FS_FILTER_SECTION_SYNC_TYPE SyncType;
ULONG PageProtection;
PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
ULONG Flags;
} AcquireForSectionSynchronization;
//
// QueryOpen
//
struct {
PIRP Irp;
PVOID FileInformation;
PULONG Length;
FILE_INFORMATION_CLASS FileInformationClass;
NTSTATUS CompletionStatus;
} QueryOpen;
//
// Other
//
struct {
PVOID Argument1;
PVOID Argument2;
PVOID Argument3;
PVOID Argument4;
PVOID Argument5;
} Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
Элементы структуры FS_FILTER_PARAMETERS объединения описываются следующим образом.
AcquireForModifiedPageWriter
- EndingOffset: смещение последнего записанного байта плюс один.
- ResourceToRelease: высвободимый ресурс. Этот параметр не должен иметь значение NULL .
ReleaseForModifiedPageWriter
- ResourceToRelease: высвободимый ресурс. Этот параметр не должен иметь значение NULL .
AcquireForSectionSynchronization
SyncType: тип синхронизации, запрошенный для раздела. Задайте значение SyncTypeCreateSection , если раздел создается; SyncTypeДрее в противном случае.
PageProtection: тип защиты страницы, запрошенный для раздела. Значение должно быть равно нулю, если syncType имеет значение SyncTypeOther. В противном случае один из следующих флагов, возможно, обнажается с помощью PAGE_NOCACHE:
- PAGE_NOACCESS
- PAGE_READONLY
- PAGE_READWRITE
- PAGE_WRITECOPY
- PAGE_EXECUTE
- PAGE_EXECUTE_READ
- PAGE_EXECUTE_READWRITE
- PAGE_EXECUTE_WRITECOPY
- PAGE_GUARD
- PAGE_NOCACHE
- PAGE_WRITECOMBINE
OutputInformation: структура FS_FILTER_SECTION_SYNC_OUTPUT , содержащая расширенные выходные данные для раздела.
Флаги. Если параметр SyncType имеет значение SyncTypeCreateSection, флаги могут иметь одно из следующих значений:
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001). Файловая система не должна обновлять время последнего доступа к файлу через создаваемый раздел.
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002). Файловая система не должна обновлять время последней записи для изменения файла в создаваемом разделе.
ЗапросОткрыть
Irp: указатель на IRP, связанный с этой операцией.
FileInformation: указатель на буфер, выделенный вызывающим объектом, в который подпрограмма записывает запрошенные сведения об объекте файла. Член FileInformationClass указывает тип сведений, запрашиваемых вызывающим.
Длина: размер (в байтах) буфера, на который указывает FileInformation.
CompletionStatus: значение NTSTATUS, которое получает окончательное состояние завершения и сведения об операции. Параметр CompletionStatus может быть задан обратным вызовом PostQueryOpen для сбоя операции, так как обратные вызовы после обратного вызова не имеют возвращаемого значения. В основном используется, чтобы обратный вызов PostQueryOpen возвращал STATUS_FLT_DISALLOW_FSFILTER_IO для запроса отката на медленный путь. Это приводит к тому, что диспетчер ввода-вывода обслужит запрос, выполнив открытие, запрос и закрытие файла. Аналогичным образом обратный вызов PreQueryOpen может возвращать STATUS_FLT_DISALLOW_FSFILTER_IO для запроса отката на медленный путь.
FileInformationClass: тип возвращаемых сведений о файле в буфере, на который указывает FileInformation . Драйверы устройства и промежуточные драйверы могут указывать любое из следующих FILE_INFORMATION_CLASS значений . Другие значения приводят к сбою вызова и не должны передаваться в вызовы PreQueryOpen/PostQueryOpen.
значение FILE_INFORMATION_CLASS Тип возвращаемых сведений FileStatInformation Структура FILE_STAT_INFORMATION . Эта структура содержит маску доступа. Дополнительные сведения о масках доступа см. в разделе ACCESS_MASK. FileStatLxInformation Структура FILE_STAT_LX_INFORMATION . Эта структура содержит маску доступа. Дополнительные сведения о масках доступа см. в разделе ACCESS_MASK. FileCaseSensitiveInformation Структура FILE_CASE_SENSITIVE_INFORMATION . Прочие
- Argument1: зарезервировано для использования в будущем.
- Argument2: зарезервировано для использования в будущем.
- Argument3: зарезервировано для использования в будущем.
- Argument4: зарезервировано для использования в будущем.
- Argument5: зарезервировано для использования в будущем.
Требования
Требование | Значение |
---|---|
Заголовок | ntifs.h |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по