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,或失敗時的適當錯誤碼。
言論
IoCsqInitialize 和 IoCsqInitializeEx 例程會初始化描述驅動程式取消安全 IRP 佇列的 IO_CSQ 結構。 您可以使用 IoCsqInitializeEx 來指定具有擴充功能的 IRP 佇列,而不是 IoCsqInitialize指定的佇列:
- 驅動程式會實作 CsqInsertIrpEx 例程,而不是 CsqInsertIrp 例程。 CsqInsertIrpEx 會採用額外的參數,InsertContext。 當驅動程式呼叫 IoCsqInsertIrpEx 以插入 IRP 時,它會指定傳遞為 insertContext 的值。
- IoCsqInsertIrpEx 會傳回 CsqInsertIrpEx的傳回值。 驅動程式可以使用傳回值來指出插入作業是否成功或失敗。
請注意,IoCsqXxx 例程會使用 IRP 的 DriverContext[3] 成員來保存 IRP 內容資訊。 使用這些例程將 IRP 排入佇列的驅動程式必須讓該成員未使用。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows Server 2003 和更新版本的 Windows作系統。 此例程也適用於隨附於 Windows Driver Kit (WDK) 和適用於 Windows Server 2003 的驅動程式開發工具包 (DDK) 的 Csq.lib 連結庫中。 也必須在 Windows XP、Windows 2000 和 Windows 98/Me 上運作的驅動程式可以改為連結到 Csq.lib 以使用例程。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何層級 |