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 puede ser 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.

Comentarios

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 FltCbdqXxx para implementar una cola de datos de devolución de llamada para las operaciones de E/S basadas en IRP. Mediante el uso de estas rutinas, los controladores de minifiltro pueden hacer que sus colas sean seguras para cancelar; el sistema controla de forma transparente la cancelación de E/S para los controladores de minifiltro.

Las rutinas 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 .

FltCbdqInitialize inicializa una cola de datos de devolución de llamada. 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 CbdqRemoveIo del controlador minifiltro.

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 a la rutina de devolución de llamada CbdqPeekNextIo para recorrer en bucle los elementos coincidentes. El significado de PeekContext y los criterios para que un elemento coincida con un PeekContext determinado dependen completamente del controlador de minifiltro.

Si la cola está protegida por un bloqueo de número, en lugar de una variable de recurso o objeto de exclusión mutua, 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 Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
IRQL vea la sección Comentarios.

Consulte también

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo