Compartir a través de


Función IoCsqRemoveNextIrp (wdm.h)

La rutina IoCsqRemoveNextIrp quita el siguiente IRP coincidente en la cola.

Sintaxis

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

Parámetros

[in, out] Csq

Puntero a la tabla de distribución del controlador para las colas irP seguras para cancelar. IoCsqInitialize debe inicializar la tabla de distribución.

[in, optional] PeekContext

Puntero a un valor de contexto definido por el controlador. IoCsqRemoveNextIrp pasa este parámetro a la rutina CsqPeekNextIrp del controlador. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Valor devuelto

Esta rutina devuelve un puntero al siguiente IRP coincidente de la cola, o NULL si no hay más IRP disponibles. La rutina solo devuelve IRP que aún no se han cancelado.

Comentarios

IoCsqRemoveNextIrp usa las rutinas de distribución de la cola para quitar el IRP. La rutina IoCsqRemoveNextIrp :

  1. Llama a la rutina CsqAcquireLock de la cola para bloquear la cola.
  2. Llama a la rutina CsqPeekNextIrp de la cola para buscar el siguiente IRP coincidente en la cola. IoCsqRemoveNextIrp pasa el valor del parámetro PeekContext como parámetro PeekContext de CsqPeekNextIrp. CsqPeekNextIrp devuelve un puntero al siguiente IRP coincidente o NULL si no hay ningún IRP coincidente.
  3. Si el valor devuelto de CsqPeekNextIrp no es NULL, IoCsqRemoveNextIrp llama a la rutina CsqRemoveIrp de la cola para quitar el IRP.
  4. Llama a la rutina CsqReleaseLock de la cola para desbloquear la cola.
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 IoCsqRemoveNextIrp 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

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp