Compartilhar via


Função IoCsqInitializeEx (wdm.h)

A rotina IoCsqInitializeEx inicializa a tabela de expedição para uma fila IRP segura para cancelamento.

Sintaxe

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

Ponteiro para a estrutura IO_CSQ a ser inicializada por IoCsqInitializeEx.

[in] CsqInsertIrp

Ponteiro para a função CsqInsertIrpEx definida pelo driver para a fila IRP cancel-safe do driver.

[in] CsqRemoveIrp

Ponteiro para a função CsqRemoveIrp definida pelo driver para a fila IRP cancel-safe do driver.

[in] CsqPeekNextIrp

Ponteiro para a função CsqPeekNextIrp definida pelo driver para a fila IRP cancel-safe do driver.

[in] CsqAcquireLock

Ponteiro para a função CsqAcquireLock definida pelo driver para a fila IRP cancel-safe do driver.

[in] CsqReleaseLock

Ponteiro para a função CsqReleaseLock definida pelo driver para a fila IRP cancel-safe do driver.

[in] CsqCompleteCanceledIrp

Ponteiro para a função CsqCompleteCanceledIrp definida pelo driver para a fila IRP cancel-safe do driver.

Retornar valor

IoCsqInitializeEx retorna STATUS_SUCCESS com êxito ou o código de erro apropriado em caso de falha.

Comentários

As rotinas IoCsqInitialize e IoCsqInitializeEx inicializam uma estrutura de IO_CSQ que descreve a fila de IRP cancel-safe de um driver. Você pode usar IoCsqInitializeEx para especificar uma fila IRP com recursos estendidos em vez de uma especificada por IoCsqInitialize:

  • O driver implementa uma rotina CsqInsertIrpEx em vez de uma rotina CsqInsertIrp . CsqInsertIrpEx usa um parâmetro adicional, InsertContext. Quando o driver chama IoCsqInsertIrpEx para inserir o IRP, ele especifica o valor que é passado como InsertContext.
  • IoCsqInsertIrpEx retorna o valor retornado de CsqInsertIrpEx. Os drivers podem usar o valor retornado para indicar se uma operação de inserção foi bem-sucedida ou falhou.
Caso contrário, o efeito de IoCsqInitializeEx é idêntico ao de IoCsqInitialize. Para obter mais informações, consulte Filas de IRP com segurança de cancelamento.

Observe que as rotinas do IoCsqXxx usam o membro DriverContext[3] do IRP para armazenar informações de contexto IRP. Os drivers que usam essas rotinas para enfileirar IRPs devem deixar esse membro não utilizado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Server 2003 e versões posteriores do sistema operacional Windows. A rotina também está disponível na biblioteca Csq.lib que é fornecida com o WDK (Kit de Driver do Windows) e o DDK (Driver Development Kit) para Windows Server 2003. Drivers que também devem funcionar no Windows XP, Windows 2000 e Windows 98/Me podem, em vez disso, vincular ao Csq.lib para usar a rotina.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível

Confira também

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp