estructura FS_FILTER_CALLBACK_DATA (ntifs.h)
FS_FILTER_CALLBACK_DATA es la estructura de datos de devolución de llamada para una operación de FS_FILTER_CALLBACK o FS_FILTER_COMPLETION_CALLBACK de un FS_FILTER_CALLBACKS.
Sintaxis
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;
Miembros
SizeOfFsFilterCallbackData
Tamaño de esta estructura, en bytes. Establézcalo en sizeof(FS_FILTER_CALLBACK_DATA)
.
Operation
Operación del sistema de archivos para la que se va a invocar la rutina de devolución de llamada. Esta operación puede ser una de las siguientes:
- 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
Reservado para uso del sistema.
DeviceObject
Objeto de dispositivo para esta operación.
FileObject
Objeto de archivo para esta operación.
Parameters
Unión que contiene cualquier parámetro específico de la operación. Vea la sección Comentarios.
Comentarios
es miembro de la estructura FS_FILTER_CALLBACKS , que se pasa a FsRtlRegisterFileSystemFilterCallbacks en un sistema de archivos o en la rutina DriverEntry del controlador de filtro.
La unión de parámetros se define de la siguiente manera:
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;
Los miembros de estructura de la unión FS_FILTER_PARAMETERS se describen de la siguiente manera.
AcquireForModifiedPageWriter
- EndingOffset: desplazamiento del último byte que se escribe más uno.
- ResourceToRelease: recurso que se va a liberar. Este parámetro no debe tener un valor NULL .
ReleaseForModifiedPageWriter
- ResourceToRelease: recurso que se va a liberar. Este parámetro no debe tener un valor NULL .
AcquireForSectionSynchronization
SyncType: tipo de sincronización solicitada para la sección. Establézcalo en SyncTypeCreateSection si se crea una sección; SyncTypeOther otherwise.
PageProtection: tipo de protección de página solicitada para la sección. Debe ser cero si SyncType es SyncTypeOther. De lo contrario, una de las siguientes marcas, posiblemente ORed con 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: estructura FS_FILTER_SECTION_SYNC_OUTPUT que contiene la información de salida extendida de la sección.
Marcas: cuando SyncType es SyncTypeCreateSection, las marcas pueden ser uno de los siguientes valores:
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001): el sistema de archivos no debe actualizar la última hora de acceso para el acceso al archivo a través de la sección que se está creando.
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002): el sistema de archivos no debe actualizar la última hora de escritura para las modificaciones en el archivo a través de la sección que se está creando.
QueryOpen
Irp: puntero al IRP asociado a esta operación.
FileInformation: puntero a un búfer asignado por el autor de la llamada en el que la rutina escribe la información solicitada sobre el objeto de archivo. El miembro FileInformationClass especifica el tipo de información que solicita el autor de la llamada.
Longitud: tamaño, en bytes, del búfer al que apunta FileInformation.
CompletionStatus: valor NTSTATUS que recibe el estado de finalización final e información sobre la operación. CompletionStatus se puede establecer mediante la devolución de llamada PostQueryOpen para que se produzca un error en la operación, ya que las devoluciones de llamada posteriores no tienen ningún valor devuelto. Esto se usa principalmente para que la devolución de llamada PostQueryOpen pueda devolver STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar la reserva a la ruta de acceso lenta. Al hacerlo, el administrador de E/S atenderá la solicitud realizando una apertura, consulta o cierre del archivo. Del mismo modo, la devolución de llamada PreQueryOpen puede devolver STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar reserva a la ruta de acceso lenta.
FileInformationClass: tipo de información a la que se va a devolver el archivo, en el búfer al que apunta FileInformation . Los controladores intermedios y de dispositivo pueden especificar cualquiera de los siguientes valores de FILE_INFORMATION_CLASS . Otros valores provocan un error en la llamada y no se deben pasar a las llamadas PreQueryOpen/PostQueryOpen.
FILE_INFORMATION_CLASS valor Tipo de información devuelta FileStatInformation Estructura FILE_STAT_INFORMATION . Esta estructura contiene una máscara de acceso. Para obtener más información sobre las máscaras de acceso, consulte ACCESS_MASK. FileStatLxInformation Estructura FILE_STAT_LX_INFORMATION . Esta estructura contiene una máscara de acceso. Para obtener más información sobre las máscaras de acceso, consulte ACCESS_MASK. FileCaseSensitiveInformation Estructura de FILE_CASE_SENSITIVE_INFORMATION . Otros
- Argument1: reservado para uso futuro.
- Argument2: reservado para uso futuro.
- Argument3: reservado para uso futuro.
- Argumento4: reservado para uso futuro.
- Argumento5: reservado para uso futuro.
Requisitos
Requisito | Valor |
---|---|
Header | ntifs.h |
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de