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 obligatorio y no puede ser 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 las rutinas de devolución de llamada de preoperación (PFLT_PRE_OPERATION_CALLBACK) y postoperación (PFLT_POST_OPERATION_CALLBACK) para las operaciones de E/S almacenadas en caché o E/S de paginación. Este miembro es opcional y puede ser cero.
Marca | 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, ya que 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 omitan todas las operaciones 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 la 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 con tipo PFLT_PRE_OPERATION_CALLBACK que 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_CALLBACK que 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.
Comentarios
Cuando un minifiltro llama a FltRegisterFilter desde su rutina 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 FLT_OPERATION_REGISTRATION estructuras y almacena un puntero a la matriz en el miembro OperationRegistration de la estructura 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 de 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 los miembros PreOperation y PostOperation de la estructura.
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 postoperació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 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 |
---|---|
Header | fltkernel.h (incluya Fltkernel.h) |