IofCallDriver 函数 (wdm.h)
谨慎
请改为 IoCallDriver。
将 IRP 发送到与指定设备对象关联的驱动程序。
语法
NTSTATUS IofCallDriver(
PDEVICE_OBJECT DeviceObject,
__drv_aliasesMem PIRP Irp
);
参数
DeviceObject
指向设备对象的指针,表示所请求 I/O作的目标设备。
Irp
指向 IRP的指针。
返回值
返回相应的 NTSTATUS 值。
言论
在调用 IoCallDriver 之前,调用驱动程序必须在目标驱动程序的 IRP 中设置 I/O 堆栈位置。 有关详细信息,请参阅 将 IRP 传递到驱动程序堆栈。
IoCallDriver 将 DeviceObject 输入参数分配给要调用的驱动程序 IO_STACK_LOCATION 结构的 DeviceObject 成员。
在对 IoCallDriver 的调用中传递的 IRP 对更高级别的驱动程序不可访问,除非较高级别的驱动程序已调用 IoSetCompletionRoutine 来设置 IRP IoCompletion 例程。 如果有,则 IoCompletion 例程的 IRP 输入具有由较低驱动程序设置的 I/O 状态块,并且所有较低级别的驱动程序的 I/O 堆栈位置都填充了零。
Windows Server 2003、Windows XP 和 Windows 2000 的驱动程序必须使用 PoCallDriver,而不是 IoCallDriver 来传递电源 IRP(IRP_MJ_POWER)。
有关详细信息,请参阅 呼叫 IoCallDriver 与呼叫 PoCallDriver。
要求
要求 | 价值 |
---|---|
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |
DDI 符合性规则 | CompleteRequestStatusCheck、CompletionRoutineRegistered、DeleteDevice、ForwardedAtBadIrql、ForwardedAtBadIrqlAllocate、ForwardedAtBadIrqlFsdAsync、ForwardedAtBadIrqlFsdSync、HwStorPortProhibitedDDIs(storport)、IoAllocateForward、 IoAllocateIrpSignalEventInCompletionTimeout、IoBuildDeviceControlWait、IoBuildDeviceControlWaitTimeout、IoBuildFsdForward、IoBuildSynchronousFsdRequestWaitWait、IoBuildSynchronousFsdRequestWaitTimeout、IoSetCompletionRoutineExCheck、IrpProcessingComplete、LowerDriverReturn、MarkDevicePower、MarkQueuedIrps、MarkIrpPending、 MarkIrpPending2、MarkPower(wdm)、MarkPowerDown(wdm)、MarkQueryRelations(wdm)、MarkStartDevice(wdm)、PendedCompletedRequest、PendedCompletedRequest2、PendedCompletedRequest3、 PendedCompletedRequestEx, PnpIrpCompletion, PowerDownFail, PowerUpFail, RemoveLockForward, RemoveLockForward2, RemoveLockForwardDeviceControl, RemoveLockForwardDeviceControl2, RemoveLockForwardDeviceControlInternal、RemoveLockForwardDeviceControlInternal2、RemoveLockForwardRead、RemoveLockForwardRead2、RemoveLockForwardWrite、RemoveLockForwardWrite2、RemoveLockMnRemove2、RemoveLockMnSurpriseRemove、RemoveLockQueryMnRemove、TargetRelationNeedsRef、WmiForward |