共用方式為


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 成員。

除非較高層級驅動程式已呼叫 IoSetCompletionRoutine 來設定 IRP IoCompletion 例程,否則傳入 IoCallDriver 呼叫的 IRP 會變成無法存取。 如果有,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, HwStorPortProhibitedDIs(storport), IoAllocateForward, IoAllocateIrpSignalEventInCompletionTimeout、IoBuildDeviceControlWait、IoBuildDeviceControlWaitTimeout、IoBuildFsdForward、IoBuildSynchronousFsdRequestWait、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