Compartir a través de


Función FltCbdqRemoveNextIo (fltkernel.h)

FltCbdqRemoveNextIo quita el siguiente elemento coincidente en una cola de datos de devolución de llamada del controlador de minifiltro.

Sintaxis

PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo(
  [in, out]      PFLT_CALLBACK_DATA_QUEUE Cbdq,
  [in, optional] PVOID                    PeekContext
);

Parámetros

[in, out] Cbdq

Puntero a una cola de datos de devolución de llamada segura para cancelación. Esta cola debe haberse inicializado llamando a FltCbdqInitialize.

[in, optional] PeekContext

Puntero a la información definida por el autor de la llamada que identifica el elemento coincidente. Este parámetro es opcional y se puede NULL.

Valor devuelto

FltCbdqRemoveNextIo devuelve un puntero a la estructura de datos de devolución de llamada (FLT_CALLBACK_DATA) del elemento que se quitó de la cola o NULL si no se encontró ningún elemento coincidente. FltCbdqRemoveNextIo solo devuelve elementos para las operaciones de E/S que aún no se han cancelado.

Observaciones

FltCbdqRemoveNextIo quita el siguiente elemento coincidente de una cola de datos de devolución de llamada del controlador de minifiltro.

Los controladores de minifiltro pueden usar las rutinas de FltCbdqXxx para implementar una cola de datos de devolución de llamada para las operaciones de E/S basadas en IRP. Con estas rutinas, los controladores de minifiltro pueden hacer que sus colas sean seguras; el sistema controla de forma transparente la cancelación de E/S para los controladores de minifiltro.

Las rutinas de FltCbdqXxx solo se pueden usar para las operaciones de E/S basadas en IRP. Para determinar si una estructura de datos de devolución de llamada determinada (FLT_CALLBACK_DATA) representa una operación de E/S basada en IRP, use la macro FLT_IS_IRP_OPERATION.

Una cola de datos de devolución de llamada se inicializa mediante FltCbdqInitialize. FltCbdqRemoveNextIo usa las rutinas proporcionadas en la tabla de distribución de la cola para bloquear la cola y quitar el siguiente elemento coincidente de la cola. La operación de eliminación se realiza mediante la rutina de devolución de llamada del controlador de minifiltro CbdqRemoveIo.

FltCbdqRemoveNextIo usa la rutina de devolución de llamada CbdqPeekNextIo de la cola para examinar la cola para buscar elementos coincidentes. El parámetro PeekContext se pasa al CbdqPeekNextIo rutina de devolución de llamada para recorrer en bucle los elementos coincidentes. El significado de PeekContext y los criterios de un elemento para que coincidan con un peekContext dependen completamente del controlador de minifiltro.

Si la cola está protegida por un bloqueo de número, en lugar de una objeto de exclusión mutua o variable de recurso, el autor de la llamada de FltCbdqRemoveNextIo se puede ejecutar en IRQL <= DISPATCH_LEVEL. Si se usa una exclusión mutua o un recurso, el autor de la llamada debe ejecutarse en IRQL <= APC_LEVEL.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de fltkernel.h (incluya Fltkernel.h)
irQL Consulte la sección Comentarios.

Consulte también

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

fltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo