IoMakeAssociatedIrp 函式 (ntddk.h)
此例程保留供文件系統和文件系統篩選驅動程式使用。 IoMakeAssociatedIrp 例程會配置並初始化要與傳送至最高層級驅動程式之主要 IRP 相關聯的 IRP,讓呼叫端能夠分割原始要求,並將相關聯的 IRP 傳送至較低層級的驅動程式。
語法
PIRP IoMakeAssociatedIrp(
[in] PIRP Irp,
[in] CCHAR StackSize
);
參數
[in] Irp
輸入至最高層級驅動程式分派例程之主要 IRP 的指標。
[in] StackSize
指定要配置給相關聯 IRP 的堆疊位置數目。 此值必須至少等於下一個較低驅動程式裝置物件的 StackSize ,但相關聯的 IRP 可以有呼叫端的額外堆疊位置。
傳回值
IoMakeAssociatedIrp 會傳回相關聯 IRP 的指標,如果無法配置 IRP,則會傳回 NULL 指標。
備註
只有最高層級的驅動程式可以呼叫此例程。
只要呼叫端尚未在相關聯的 IRP 中設定 IoCompletion 例程,並從 其 IoCompletion 例程傳回STATUS_MORE_PROCESSING_REQUIRED,I/O 管理員就會在較低的驅動程式完成所有相關聯的 IRP 時自動完成主要 IRP。 在這些情況下,當該驅動程序判斷所有相關聯的 IRP 都已完成時,呼叫端必須明確完成主要 IRP。
只有主要 IRP 與線程相關聯;相關聯的 IRP 不是。 基於這個理由,I/O 管理員無法在線程結束時呼叫相關聯 IRP 的 Cancel 例程。 當主要 IRP 的線程結束時,I/O 管理員會呼叫主要 IRP 的 Cancel 例程。 Cancel 例程負責追蹤所有相關聯的 IRP,並呼叫 IoCancelIrp 來取消它們。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平台 | Universal |
標頭 | ntddk.h (包含 Ntddk.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |