Função FltCbdqRemoveNextIo (fltkernel.h)
FltCbdqRemoveNextIo remove o próximo item correspondente na fila de dados de retorno de chamada de um driver de minifiltro.
Sintaxe
PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo(
[in, out] PFLT_CALLBACK_DATA_QUEUE Cbdq,
[in, optional] PVOID PeekContext
);
Parâmetros
[in, out] Cbdq
Ponteiro para uma fila de dados de retorno de chamada cancel-safe. Essa fila deve ter sido inicializada chamando FltCbdqInitialize.
[in, optional] PeekContext
Ponteiro para informações definidas pelo chamador que identificam o item correspondente. Esse parâmetro é opcional e pode ser NULL.
Retornar valor
FltCbdqRemoveNextIo retorna um ponteiro para a estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) para o item que foi removido da fila ou NULL se nenhum item correspondente foi encontrado. FltCbdqRemoveNextIo retorna apenas itens para operações de E/S que ainda não foram canceladas.
Comentários
FltCbdqRemoveNextIo remove o próximo item correspondente da fila de dados de retorno de chamada de um driver de minifiltro.
Os drivers de minifiltro podem usar as rotinas FltCbdqXxx para implementar uma fila de dados de retorno de chamada para operações de E/S baseadas em IRP. Usando essas rotinas, os drivers de minifiltro podem tornar suas filas cancel-safe; o sistema lida de forma transparente com o cancelamento de E/S para os drivers de minifiltro.
As rotinas FltCbdqXxx só podem ser usadas para operações de E/S baseadas em IRP. Para determinar se uma determinada estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) representa uma operação de E/S baseada em IRP, use a macro FLT_IS_IRP_OPERATION .
Uma fila de dados de retorno de chamada é inicializada por FltCbdqInitialize. FltCbdqRemoveNextIo usa as rotinas fornecidas na tabela de expedição da fila para bloquear a fila e remover o próximo item correspondente da fila. A operação de remoção em si é executada pela rotina de retorno de chamada CbdqRemoveIo do driver de minifiltro.
FltCbdqRemoveNextIo usa a rotina de retorno de chamada CbdqPeekNextIo da fila para verificar se há itens correspondentes na fila. O parâmetro PeekContext é passado para a rotina de retorno de chamada CbdqPeekNextIo para executar um loop por meio de itens correspondentes. O significado de PeekContext e os critérios para um item corresponder a um determinado PeekContext dependem inteiramente do driver de minifiltro.
Se a fila estiver protegida por um bloqueio de rotação, em vez de um objeto mutex ou variável de recurso, o chamador de FltCbdqRemoveNextIo poderá ser executado em IRQL <= DISPATCH_LEVEL. Se um mutex ou recurso for usado, o chamador deverá estar em execução em IRQL <= APC_LEVEL.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | fltkernel.h (inclua Fltkernel.h) |
IRQL | Consulte a seção Observações. |