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,低级驱动程序完成所有关联的 IRP 时,I/O 管理器会自动完成主 IRP。 在这些情况下,当驱动程序确定所有关联的 IRP 都已完成时,调用方必须显式完成主 IRP。
只有主 IRP 与线程相关联;关联的 IRP 不是。 因此,当线程退出时,I/O 管理器无法为关联的 IRP 调用 Cancel 例程。 当主 IRP 的线程退出时,I/O 管理器调用主 IRP 的 Cancel 例程。 Cancel 例程负责跟踪所有关联的 IRP 并调用 IoCancelIrp 来取消它们。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | ntddk.h (包括 Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |