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

另请参阅

IRP

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine