Función IoCsqRemoveNextIrp (wdm.h)

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

Sintaxis

C++
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. La tabla de distribución debe inicializarse IoCsqInitialize.

[in, optional] PeekContext

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

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.

Observaciones

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 CsqPeekNextIr p 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 irP coincidente.
  3. Si el valor devuelto de CsqPeekNextIrp no esNULL, IoCsqRemoveNextIrp llama a la rutina CsqRemoveIrp de la cola para quitar el IRP.
  4. Llama a la rutina de CsqRelease Lock de la cola para desbloquear la cola.
Para obtener más información, consulte Cancel-Safe colas de IRP.

Tenga en cuenta que ioCsqrutinas xxx usan el DriverContext[3] miembro 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 una <IRQL = DISPATCH_LEVEL. Las rutinas de devolución de llamada del controlador deben funcionar correctamente en ese IRQL.

Requisitos

Requisito Valor
cliente mínimo admitido 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.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de 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