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 は、呼び出されるドライバーのIO_STACK_LOCATION構造体の DeviceObject メンバーに DeviceObject 入力パラメーターを割り当てます。
IoCallDriver への呼び出しで渡された IRP は、上位レベルのドライバーが IRP の IoCompletion ルーチンを設定するために IoSetCompletionRoutine を呼び出していない限り、上位レベルのドライバーにアクセスできなくなります。 存在する場合、IoCompletion ルーチンへの IRP 入力には、下位ドライバーによって設定された I/O 状態ブロックがあり、下位レベルのすべてのドライバーの I/O スタックの場所は 0 で埋められます。
Windows Server 2003、Windows XP、および Windows 2000 用のドライバーは、電源 IRP (IRP_MJ_POWER) を渡すために IoCallDriver ではなく PoCallDriver を使用する必要があります。
詳細については、「 IoCallDriver の呼び出しと PoCallDriver の呼び出し」を参照してください。
要件
要件 | 値 |
---|---|
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | 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、IoSetCompletionRoutineCheckCheck、IrpProcessingComplete、LowerDriverReturn、MarkDevicePower、MarkingQueuedIrps、MarkIrpPending、MarkIrpPending2、 MarkPower(wdm)、 MarkPowerDown(wdm)、 MarkQueryRelations(wdm)、 MarkStartDevice(wdm)、PendedCompletedRequest2、PendedCompletedRequest3、PendedCompletedRequestEx、PnpIrpCompletion、PowerDownFail、PowerUpFail、RemoveLockForward、RemoveLockForward2、RemoveLockForwardDeviceControl、RemoveLockForwardDeviceControl2、RemoveLockForwardDeviceControlInternal、RemoveLockForwardDeviceControlInternal2、RemoveLockForwardRead、RemoveLockForwardRead2、RemoveLockForwardWrite、RemoveLockForwardWrite2、RemoveLockMnRemove2、RemoveLockMnSurpriseRemove、RemoveLockQueryMnRemove、TargetRelationNeedsRef、WmiForward |