IO_CSQ_REMOVE_IRP función de devolución de llamada (wdm.h)
El sistema usa la rutina CsqRemoveIrp para quitar el IRP especificado de una cola IRP implementada por el controlador y segura para cancelación.
Sintaxis
IO_CSQ_REMOVE_IRP IoCsqRemoveIrp;
void IoCsqRemoveIrp(
[in] PIO_CSQ Csq,
[in] PIRP Irp
)
{...}
Parámetros
[in] Csq
Puntero a la estructura de IO_CSQ para la cola irP segura de cancelación.
[in] Irp
Puntero al IRP que se va a quitar de la cola de IRP.
Valor devuelto
None
Observaciones
El controlador especifica la rutina CsqRemoveIrp para una cola IRP segura para cancelación cuando inicializa la estructura de IO_CSQ de la cola. El controlador especifica la rutina como el parámetro CsqRemoveIrp de IoCsqInitialize o IoCsqInitializeEx cuando inicializa IO_CSQ. Para obtener más información, consulte Cancel-Safe IRP Queues( Colas irP seguras para cancelar).
Las rutinas IoCsqRemoveIrp e IoCsqRemoveNextIrp llaman a la rutina CsqRemoveIrp de la cola irP segura para cancelar para quitar el IRP especificado de la cola. El sistema también usa CsqRemoveIrp para quitar un IRP cancelado de la cola.
Ejemplos
Para definir una rutina de devolución de llamada de CsqRemoveIrp , 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 una rutina de devolución de llamada de CsqRemoveIrp denominada MyCsqRemoveIrp
, use el tipo de IO_CSQ_REMOVE_IRP como se muestra en este ejemplo de código:
IO_CSQ_REMOVE_IRP MyCsqRemoveIrp;
A continuación, implemente la rutina de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
VOID
MyCsqRemoveIrp(
PIO_CSQ Csq,
PIRP Irp
)
{
// Function body
}
El tipo de función IO_CSQ_REMOVE_IRP se define en el archivo de encabezado Wdm.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación a la _Use_decl_annotations_
definición de la función. La _Use_decl_annotations_
anotación garantiza que se usen las anotaciones que se aplican al tipo de función IO_CSQ_REMOVE_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 | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |