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 :
- Llama a la rutina CsqAcquireLock de la cola para bloquear la cola.
- 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.
- Llama a la rutina CsqReleaseLock de la cola para desbloquear la cola.
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) |