Função IoCsqRemoveNextIrp (wdm.h)

A rotina IoCsqRemoveNextIrp remove o próximo IRP correspondente na fila.

Sintaxe

PIRP IoCsqRemoveNextIrp(
  [in, out]      PIO_CSQ Csq,
  [in, optional] PVOID   PeekContext
);

Parâmetros

[in, out] Csq

Ponteiro para a tabela de expedição do driver para filas IRP com segurança de cancelamento. A tabela de expedição deve ser inicializada por IoCsqInitialize.

[in, optional] PeekContext

Um ponteiro para um valor de contexto definido pelo driver. IoCsqRemoveNextIrp passa esse parâmetro para a rotina CsqPeekNextIrp do driver. Para obter mais informações, consulte a seção Comentários a seguir.

Retornar valor

Essa rotina retorna um ponteiro para o próximo IRP correspondente na fila ou NULL se não houver mais IRPs disponíveis. A rotina retorna apenas IRPs que ainda não foram cancelados.

Comentários

IoCsqRemoveNextIrp usa as rotinas de expedição da fila para remover o IRP. A rotina IoCsqRemoveNextIrp :

  1. Chama a rotina CsqAcquireLock da fila para bloquear a fila.
  2. Chama a rotina CsqPeekNextIrp da fila para encontrar o próximo IRP correspondente na fila. IoCsqRemoveNextIrp passa o valor do parâmetro PeekContext como o parâmetro PeekContext de CsqPeekNextIrp. CsqPeekNextIrp retorna um ponteiro para o próximo IRP correspondente ou NULL se não houver NENHUM IRP correspondente.
  3. Se o valor retornado de CsqPeekNextIrp não for NULL, IoCsqRemoveNextIrp chamará a rotina CsqRemoveIrp da fila para remover o IRP.
  4. Chama a rotina CsqReleaseLock da fila para desbloquear a fila.
Para obter mais informações, consulte Filas de IRP com segurança de cancelamento.

Observe que as rotinas do IoCsqXxx usam o membro DriverContext[3] do IRP para armazenar informações de contexto IRP. Os drivers que usam essas rotinas para enfileirar IRPs devem deixar esse membro não utilizado.

Os chamadores de IoCsqRemoveNextIrp devem estar em execução em um IRQL <= DISPATCH_LEVEL. As rotinas de retorno de chamada do driver devem funcionar corretamente nesse IRQL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows XP e versões posteriores do Windows. Os drivers que também devem funcionar no Windows 2000 e no Windows 98/Me podem, em vez disso, vincular ao Csq.lib para usar a rotina.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (consulte a seção Comentários)

Confira também

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp