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 不是。 因此,I/O 管理器无法在线程退出时为关联的 IRP 调用 取消 例程。 当主 IRP 的线程退出时,I/O 管理器调用主 IRP 的 取消 例程。 Cancel 例程负责跟踪所有关联的 IRP 并调用 IoCancelIrp 来取消它们。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 普遍 |
标头 | ntddk.h (包括 Ntddk.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |