Compartilhar via


Função FltCbdqRemoveNextIo (fltkernel.h)

FltCbdqRemoveNextIo remove o próximo item correspondente na fila de dados de retorno de chamada de um minifiltro driver.

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 com cancelamento seguro. 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.

Valor de retorno

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.

Observações

FltCbdqRemoveNextIo remove o próximo item correspondente da fila de dados de retorno de chamada de um minifiltro driver.

Os drivers de minifiltro podem usar as rotinas deFltCbdq Xxx 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 canceladas. o sistema manipula de forma transparente o cancelamento de E/S para os drivers de minifiltro.

As rotinas xxx 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 pelo cbdqRemoveIo do driver de minifiltro rotina de retorno de chamada.

FltCbdqRemoveNextIo usa a rotina de retorno de chamada CbdqPeekNextIo da fila para verificar a fila em busca de itens correspondentes. O parâmetro PeekContext é passado para o cbdqPeekNextIo rotina de retorno de chamada para fazer 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 de bloqueio de rotação, em vez de um objeto de objeto mutex ou variável de recurso, o chamador de FltCbdqRemoveNextIo poderá ser executado no IRQL <= DISPATCH_LEVEL. Se um mutex ou recurso for usado, o chamador deverá estar em execução no IRQL <= APC_LEVEL.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho fltkernel.h (inclua Fltkernel.h)
IRQL Consulte a seção Comentários.

Consulte também

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo