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.
FltRequestOperationStatusCallback devuelve información de estado de la operación de E/S especificada.
Sintaxis
NTSTATUS FLTAPI FltRequestOperationStatusCallback(
[in] PFLT_CALLBACK_DATA Data,
[in] PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine,
[in, optional] PVOID RequesterContext
);
Parámetros
[in] Data
Puntero a la estructura de datos de devolución de llamada (FLT_CALLBACK_DATA) para la operación de E/S. Este parámetro es necesario y no se puede null.
[in] CallbackRoutine
Puntero a una rutina de devolución de llamada a la que el Administrador de filtros llama después de ioCallDriver devuelve. Este parámetro es necesario y no se puede null.
[in, optional] RequesterContext
Puntero de contexto que se va a pasar al CallbackRoutine. Este parámetro es opcional y se puede NULL.
Valor devuelto
fltRequestOperationStatusCallback devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:
Código devuelto | Descripción |
---|---|
|
La instancia del controlador de minifiltro se está descomponiéndose. Se trata de un código de error. |
|
FltRequestOperationStatusCallback encontró un error de asignación de grupo. Se trata de un código de error. |
|
se llamó a fltRequestOperationStatusCall back desde una rutina que no era una rutina de devolución de llamada de preoperación (PFLT_PRE_OPERATION_CALLBACK) o la operación de E/S era una solicitud de IRP_MJ_CLOSE. Se trata de un código de error. |
Observaciones
Un controlador de minifiltro puede llamar a FltRequestOperationStatusCallback para una operación de E/S basada en IRP para obtener el valor de estado que IoCallDriver devuelto para la operación.
La mayoría de los controladores de minifiltro nunca necesitan llamar a FltRequestOperationStatusCallback. Normalmente, un controlador de minifiltro solo llama a esta rutina para determinar si se concedió un interbloqueo solicitado.
fltRequestOperationStatusCallback solo se puede llamar desde una rutina de devolución de llamada de preoperación del controlador de minifiltro (PFLT_PRE_OPERATION_CALLBACK).
fltRequestOperationStatusCallback solo se puede llamar para operaciones no basadas en IRP IRP_MJ_CLOSE. Para determinar si la operación es una operación basada en IRP, use la macro FLT_IS_IRP_OPERATION.
Si la operación basada en IRP es una solicitud IRP_MJ_CLOSE, se devuelve STATUS_INVALID_PARAMETER.
FltRequestOperationStatusCallback copia el contenido del bloque de parámetros de E/S (FLT_IO_PARAMETER_BLOCK) al miembro Iopb de los datos de devolución de llamada (FLT_CALLBACK_DATA), y se trata de los datos de devolución de llamada que el Administrador de filtros pasará a la rutina especificada en el parámetro CallbackRoutine. Los datos copiados representan una instantánea del bloque de parámetros de E/S en el momento en que la devolución de llamada de preoperación (PFLT_PRE_OPERATION_CALLBACK) llama a FltRequestOperationStatusCallback. Si la rutina de devolución de llamada de preoperación cambia el bloque de parámetros de E/S después de llamar a FltRequestOperationStatusCallback, el bloque de parámetros de E/S que pasa el Administrador de filtros a CallbackRoutine será diferente del bloque de parámetros de E/S que el controlador de filtro pasa a la pila de controladores cuando llama a IoCallDriver.
En el código de ejemplo siguiente de una rutina de devolución de llamada de preoperación se muestra cómo puede ocurrir esto:
PFLT_CALLBACK_DATA Data;
PFLT_GET_OPERATION_STATUS_CALLBACK CallbackRoutine;
PVOID RequesterContext;
...
if (iopb->MajorFunction == IRP_MJ_READ) {
FltRequestOperationStatusCallback (Data, CallbackRoutine, RequesterContext);
Data->Iopb->Parameters.Read.ReadBuffer = newBuffer;
...
}
En el ejemplo, el búfer de lectura se cambia después de la llamada a FltRequestOperationStatusCallback, por lo que cuando el Administrador de filtros llama a CallbackRoutine, pasará un puntero al búfer antiguo en lugar del nuevo.
El Administrador de filtros llama al callbackRoutine dado en el contexto del subproceso de origen en IRQL <= APC_LEVEL.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Universal |
encabezado de | fltkernel.h (incluya Fltkernel.h) |
biblioteca de | Fltmgr.lib |
DLL de | Fltmgr.sys |
irQL | <= APC_LEVEL |