Compartir a través de


Función IoCsqRemoveIrp (wdm.h)

La rutina IoCsqRemoveIrp quita un IRP determinado de la cola.

Sintaxis

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

Parámetros

[in, out] Csq

Puntero a la estructura de IO_CSQ para la cola IRP segura para cancelación del controlador. IoCsqInitialize o IoCsqInitializeEx deben inicializar esta estructura.

[in, out] Context

Puntero a la estructura IO_CSQ_IRP_CONTEXT que identifica el IRP que se va a quitar. La estructura de IO_CSQ_IRP_CONTEXT se inicializa mediante IoCsqInsertIrp o IoCsqInsertIrpEx cuando el IRP se inserta por primera vez en la cola.

Valor devuelto

Esta rutina devuelve un puntero al IRP que se quitó de la cola, o NULL si ese IRP se ha cancelado.

Comentarios

IoCsqRemoveIrp usa las rutinas de envío de la cola para quitar el IRP. La rutina IoCsqRemoveIrp :

  1. Llama a la rutina CsqAcquireLock de la cola para bloquear la cola.
  2. Usa el parámetro IrpContext para determinar qué IRP se va a quitar y llama a la rutina CsqRemoveIrp de la cola para quitar ese IRP.
  3. Llama a la rutina CsqReleaseLock de la cola para desbloquear la cola.
Los controladores pueden usar la rutina IoCsqRemoveNextIrp para quitar un IRP que coincida con un criterio específico. Para obtener más información, consulte Cancel-Safe IRP Queues( Colas irP seguras para cancelar).

Tenga en cuenta que las rutinas IoCsqXxx usan el miembro DriverContext[3] del IRP para contener información de contexto de IRP. Los controladores que usan estas rutinas para poner en cola los IRP deben dejar ese miembro sin usar.

Los autores de llamadas de IoCsqRemoveIrp deben ejecutarse en un IRQL <= DISPATCH_LEVEL. Las rutinas de devolución de llamada del controlador deben funcionar correctamente en ese IRQL.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows XP y versiones posteriores de Windows. Los controladores que también deben funcionar en Windows 2000 y Windows 98/Me pueden vincular a Csq.lib para usar la rutina.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (consulte la sección Comentarios)

Consulte también

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveNextIrp