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

另请参阅

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver