Compartir a través de


Función IoCsqInitializeEx (wdm.h)

La rutina IoCsqInitializeEx inicializa la tabla de distribución para una cola IRP segura para cancelar.

Sintaxis

NTSTATUS IoCsqInitializeEx(
  [out] PIO_CSQ                       Csq,
  [in]  PIO_CSQ_INSERT_IRP_EX         CsqInsertIrp,
  [in]  PIO_CSQ_REMOVE_IRP            CsqRemoveIrp,
  [in]  PIO_CSQ_PEEK_NEXT_IRP         CsqPeekNextIrp,
  [in]  PIO_CSQ_ACQUIRE_LOCK          CsqAcquireLock,
  [in]  PIO_CSQ_RELEASE_LOCK          CsqReleaseLock,
  [in]  PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
);

Parámetros

[out] Csq

Puntero a la estructura IO_CSQ que IoCsqInitializeEx va a inicializar.

[in] CsqInsertIrp

Puntero a la función CsqInsertIrpEx definida por el controlador para la cola IRP con seguridad de cancelación del controlador.

[in] CsqRemoveIrp

Puntero a la función CsqRemoveIrp definida por el controlador para la cola IRP con seguridad de cancelación del controlador.

[in] CsqPeekNextIrp

Puntero a la función CsqPeekNextIrp definida por el controlador para la cola IRP con seguridad de cancelación del controlador.

[in] CsqAcquireLock

Puntero a la función CsqAcquireLock definida por el controlador para la cola IRP segura para cancelación del controlador.

[in] CsqReleaseLock

Puntero a la función CsqReleaseLock definida por el controlador para la cola IRP segura para cancelar el controlador.

[in] CsqCompleteCanceledIrp

Puntero a la función CsqCompleteCanceledIrp definida por el controlador para la cola IRP con seguridad de cancelación del controlador.

Valor devuelto

IoCsqInitializeEx devuelve STATUS_SUCCESS si se ejecuta correctamente o el código de error adecuado en caso de error.

Comentarios

Las rutinas IoCsqInitialize e IoCsqInitializeEx inicializan una estructura de IO_CSQ que describe la cola IRP segura para cancelación de un controlador. Puede usar IoCsqInitializeEx para especificar una cola IRP con funcionalidades extendidas en lugar de una especificada por IoCsqInitialize:

  • El controlador implementa una rutina CsqInsertIrpEx en lugar de una rutina CsqInsertIrp . CsqInsertIrpEx toma un parámetro adicional, InsertContext. Cuando el controlador llama a IoCsqInsertIrpEx para insertar el IRP, especifica el valor que se pasa como InsertContext.
  • IoCsqInsertIrpEx devuelve el valor devuelto de CsqInsertIrpEx. Los controladores pueden usar el valor devuelto para indicar si una operación de inserción se realizó correctamente o no.
De lo contrario, el efecto de IoCsqInitializeEx es idéntico al de IoCsqInitialize. 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.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Server 2003 y versiones posteriores del sistema operativo Windows. La rutina también está disponible en la biblioteca Csq.lib que se incluye con el Kit de controladores de Windows (WDK) y el Kit de desarrollo de controladores (DDK) para Windows Server 2003. Los controladores que también deben funcionar en Windows XP, 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 Cualquier nivel

Consulte también

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp