Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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) |