共用方式為


ioCsqInitializeEx 函式 (wdm.h)

IoCsqInitializeEx 例程會初始化取消安全 IRP 佇列的分派數據表。

語法

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
);

參數

[out] Csq

要由IoCsqInitializeEx初始化之IO_CSQ結構的指標。

[in] CsqInsertIrp

驅動程式所定義 CsqInsertIrpEx 函式的指標,用於驅動程式的取消安全 IRP 佇列。

[in] CsqRemoveIrp

驅動程式所定義 CsqRemoveIrp 函式的指標,用於驅動程式的取消安全 IRP 佇列。

[in] CsqPeekNextIrp

驅動程式所定義 CsqPeekNextIrp 函式的指標,用於驅動程式的取消安全 IRP 佇列。

[in] CsqAcquireLock

驅動程式所定義 CsqAcquireLock 函式的指標,用於驅動程式的取消安全 IRP 佇列。

[in] CsqReleaseLock

驅動程式所定義 CsqReleaseLock 函式的指標,用於驅動程式的取消安全 IRP 佇列。

[in] CsqCompleteCanceledIrp

驅動程式定義的 CsqCompleteCanceledIrp 函式指標,用於驅動程式的取消安全 IRP 佇列。

傳回值

IoCsqInitializeEx 會在成功時傳回STATUS_SUCCESS,或在失敗時傳回適當的錯誤碼。

備註

IoCsqInitializeIoCsqInitializeEx 例程會初始化描述驅動程式取消安全 IRP 佇列的IO_CSQ結構。 您可以使用 IoCsqInitializeEx 來指定具有擴充功能的 IRP 佇列,而不是 IoCsqInitialize 所指定的佇列:

  • 驅動程式會實作 CsqInsertIrpEx 例程,而不是 CsqInsertIrp 例程。 CsqInsertIrpEx 會採用額外的參數 InsertContext。 當驅動程式呼叫 IoCsqInsertIrpEx 來插入IRP時,它會指定傳遞為 InsertContext的值。
  • IoCsqInsertIrpEx 會傳回 CsqInsertIrpEx 的傳回值。 驅動程式可以使用傳回值來指出插入作業成功或失敗。
否則, IoCsqInitializeEx 的效果與 IoCsqInitialize 的效果相同。 如需詳細資訊,請參閱 取消安全的 IRP 佇列

請注意, IoCsqXxx 例程會使用 IRP 的 DriverContext[3] 成員來保存 IRP 內容資訊。 使用這些例程來將 IRP 排入佇列的驅動程式,必須讓該成員保持未使用狀態。

規格需求

需求
最低支援的用戶端 適用於 Windows Server 2003 和更新版本的 Windows 作業系統。 此例程也適用於 Windows Driver Kit (WDK) 隨附的 Csq.lib 連結庫,以及適用於 Windows Server 2003 的驅動程式開發工具包 (DDK) 。 也必須在 Windows XP、Windows 2000 和 Windows 98/Me 上運作的驅動程式可以改為連結至 Csq.lib,以使用例程。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL 任何層級

另請參閱

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp