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 |