Função IoCsqRemoveIrp (wdm.h)

A rotina IoCsqRemoveIrp remove um IRP específico da fila.

Sintaxe

PIRP IoCsqRemoveIrp(
  [in, out] PIO_CSQ             Csq,
  [in, out] PIO_CSQ_IRP_CONTEXT Context
);

Parâmetros

[in, out] Csq

Ponteiro para a estrutura de IO_CSQ para a fila IRP cancel-safe do driver. Essa estrutura deve ter sido inicializada por IoCsqInitialize ou IoCsqInitializeEx.

[in, out] Context

Ponteiro para a estrutura IO_CSQ_IRP_CONTEXT que identifica o IRP a ser removido. A estrutura IO_CSQ_IRP_CONTEXT é inicializada por IoCsqInsertIrp ou IoCsqInsertIrpEx quando o IRP é inserido pela primeira vez na fila.

Retornar valor

Essa rotina retorna um ponteiro para o IRP que foi removido da fila ou NULL se esse IRP tiver sido cancelado.

Comentários

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

  1. Chama a rotina CsqAcquireLock da fila para bloquear a fila.
  2. Usa o parâmetro IrpContext para determinar qual IRP remover e chama a rotina CsqRemoveIrp da fila para remover esse IRP.
  3. Chama a rotina CsqReleaseLock da fila para desbloquear a fila.
Os drivers podem usar a rotina IoCsqRemoveNextIrp para remover um IRP que corresponda a um critério específico. 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 IoCsqRemoveIrp 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

IO_CSQ_IRP_CONTEXT

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveNextIrp