Compartir a través de


IO_CSQ_PEEK_NEXT_IRP función de devolución de llamada (wdm.h)

El sistema usa la rutina CsqPeekNextIrp para encontrar el siguiente IRP coincidente en una cola IRP implementada por el controlador y segura para cancelar.

Sintaxis

IO_CSQ_PEEK_NEXT_IRP IoCsqPeekNextIrp;

PIRP IoCsqPeekNextIrp(
  [in]           PIO_CSQ Csq,
  [in, optional] PIRP Irp,
  [in, optional] PVOID PeekContext
)
{...}

Parámetros

[in] Csq

Puntero a la estructura de IO_CSQ para la cola irP segura de cancelación.

[in, optional] Irp

Puntero a un IRP en la cola IRP del controlador o NULL para especificar el principio de la cola.

[in, optional] PeekContext

Puntero a la información de contexto definida por el controlador. La rutina CsqPeekNextIrp devuelve el primer IRP que sigue irp y coincide con PeekContext.

Valor devuelto

CsqPeekNextIrp devuelve el primer IRP que sigue irp en la cola y coincide con PeekContexto NULL si no hay irP coincidente. Si irp es NULL , CsqPeekNextIrp devuelve el primer IRP coincidente en la cola o NULL si no hay irP coincidente.

Observaciones

El controlador especifica la rutina de CsqPeekNextIrp para una cola IRP segura para cancelaciones cuando inicializa la estructura IO_CSQ de la cola. El controlador especifica la rutina como el parámetro CsqPeekNextIrp de IoCsqInitialize o IoCsqInitializeEx cuando inicializa IO_CSQ. Para obtener más información, consulte Cancel-Safe colas de IRP.

El sistema usa CsqPeekNextIrp para recorrer en iteración los IRP de la cola irP del controlador. Por ejemplo, la rutina IoCsqRemoveNextIrp usa esta rutina para buscar el IRP que se va a quitar.

Ejemplos

Para definir un CsqPeekNextIrp rutina de devolución de llamada, primero debe proporcionar una declaración de función que identifique el tipo de rutina de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir un CsqPeekNextIrp rutina de devolución de llamada denominada MyCsqPeekNextIrp, use el tipo IO_CSQ_PEEK_NEXT_IRP tal como se muestra en este ejemplo de código:

IO_CSQ_PEEK_NEXT_IRP MyCsqPeekNextIrp;

A continuación, implemente la rutina de devolución de llamada de la siguiente manera:

_Use_decl_annotations_
PIRP 
 MyCsqPeekNextIrp(
    PIO_CSQ  Csq,
    PIRP  Irp,
    PVOID  PeekContext
    )
  {
      // Function body
  }

El tipo de función IO_CSQ_PEEK_NEXT_IRP se define en el archivo de encabezado Wdm.h. Para identificar con mayor precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación _Use_decl_annotations_ a la definición de función. La anotación _Use_decl_annotations_ garantiza que se usen las anotaciones que se aplican al tipo de función IO_CSQ_PEEK_NEXT_IRP en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de rol de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)

Consulte también

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

ioCsqInitialize

IoCsqInitializeEx

ioCsqInsertIrp

ioCsqInsertIrpEx

ioCsqRemoveIrp

IoCsqRemoveNextIrp