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