Compartir a través de


estructura FLT_OPERATION_REGISTRATION (fltkernel.h)

La estructura FLT_OPERATION_REGISTRATION se usa para registrar rutinas de devolución de llamada de operación.

Sintaxis

typedef struct _FLT_OPERATION_REGISTRATION {
  UCHAR                            MajorFunction;
  FLT_OPERATION_REGISTRATION_FLAGS Flags;
  PFLT_PRE_OPERATION_CALLBACK      PreOperation;
  PFLT_POST_OPERATION_CALLBACK     PostOperation;
  PVOID                            Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;

Miembros

MajorFunction

Código de función principal que especifica el tipo de operación de E/S. Este miembro es necesario y no se puede null. Para obtener más información sobre las operaciones adicionales, consulte FLT_PARAMETERS.

Flags

Máscara de bits de marcas que especifican cuándo llamar a la preoperación (PFLT_PRE_OPERATION_CALLBACK) y postoperación (PFLT_POST_OPERATION_CALLBACK) rutinas de devolución de llamada para las operaciones de E/S almacenadas en caché o de E/S de paginación. Este miembro es opcional y puede ser cero.

Bandera Descripción
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO (0x00000001) Un minifiltro establece esta marca para las operaciones de lectura o escritura para especificar que no se deben llamar a sus rutinas de devolución de llamada de preoperación y postoperación para las operaciones de E/S de paginación. Esta marca solo se aplica a las operaciones de E/S basadas en IRP. Se omite para las operaciones de E/S que no están basadas en IRP.
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO (0x00000002) Un minifiltro establece esta marca para las operaciones de lectura o escritura para especificar que no se deben llamar a sus rutinas de devolución de llamada de preoperación y postoperación para las operaciones de E/S almacenadas en caché. Esta marca se aplica a la E/S rápida, así como a las lecturas y escrituras basadas en IRP porque todas las E/S rápidas se almacenan en caché.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO (0x00000004) Un minifiltro establece esta marca para que se omitirán todas las operaciones de emitidas en un identificador de volumen que no sea DASD. Tenga en cuenta que se omitirá la devolución de llamada del minifiltro para esta operación.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO (0x00000008) Un minifiltro establece esta marca para que se omitan las operaciones de lectura o escritura que no están almacenadas en caché ni paginación. Tenga en cuenta que se omitirá la devolución de llamada del minifiltro para esta operación. Esta marca es relevante solo para las solicitudes de IRP_MJ_READ y IRP_MJ_WRITE.

PreOperation

Puntero a una rutina de tipo PFLT_PRE_OPERATION_CALLBACKque se va a registrar como rutina de devolución de llamada de preoperación para este tipo de operación de E/S. Este miembro es opcional y puede ser null.

PostOperation

Puntero a una rutina de tipo PFLT_POST_OPERATION_CALLBACKque se va a registrar como rutina de devolución de llamada de postoperación para este tipo de operación de E/S. Este miembro es opcional y puede ser null.

Reserved1

Reservado para uso del sistema. Los minifiltros deben establecer este miembro en null.

Observaciones

Cuando un minifiltro llama a FltRegisterFilter desde su rutina de DriverEntry, puede registrar una rutina de devolución de llamada de preoperación (PFLT_PRE_OPERATION_CALLBACK) y una rutina de devolución de llamada postoperación (PFLT_POST_OPERATION_CALLBACK) para cada tipo de operación de E/S que debe controlar.

Para registrar estas rutinas de devolución de llamada, el minifiltro crea una matriz de longitud variable de estructuras de FLT_OPERATION_REGISTRATION y almacena un puntero a la matriz de la OperationRegistration miembro de la estructura de FLT_REGISTRATION que el minifiltro pasa como parámetro Registration de FltRegisterFilter. El último elemento de esta matriz debe ser {IRP_MJ_OPERATION_END}.

El minifiltro debe crear una estructura FLT_OPERATION_REGISTRATION independiente para cada tipo de operación de E/S que controla. En esta estructura, el minifiltro especifica los puntos de entrada de sus rutinas de devolución de llamada en la de preoperación de la estructura y miembros PostOperation.

Un minifiltro puede registrar una rutina de devolución de llamada de preoperación para un tipo determinado de operación de E/S sin registrar una devolución de llamada posterior a la operación y viceversa.

Los sistemas de archivos no reciben solicitudes IRP_MJ_POWER ni IRP_MJ_DEVICE_CHANGE. Los minifiltros no pueden registrar rutinas de devolución de llamada de preoperación o postoperación para estas operaciones.

Un minifiltro no puede registrar una rutina de devolución de llamada de postoperación para IRP_MJ_SHUTDOWN.

Se puede usar una única rutina de devolución de llamada de preoperación o postoperación para procesar más de un tipo de operación de E/S. Sin embargo, la rutina de devolución de llamada debe registrarse por separado para cada tipo de operación de E/S.

Requisitos

Requisito Valor
encabezado de fltkernel.h (incluya Fltkernel.h)

Consulte también

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK