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 입력 매개 변수를 할당합니다.
상위 수준 드라이버가 IRP에 대한 IoCompletion 루틴을 설정하기 위해 IoSetCompletionRoutine을 호출하지 않는 한 IoCallDriver에 대한 호출에서 전달된 IRP는 상위 수준 드라이버에 액세스할 수 없게 됩니다. 있는 경우 IoCompletion 루틴에 대한 IRP 입력에는 하위 드라이버에서 설정한 I/O 상태 블록이 있으며 모든 하위 수준 드라이버의 I/O 스택 위치는 0으로 채워집니다.
Windows Server 2003, Windows XP 및 Windows 2000용 드라이버는 전원 IRP(IRP_MJ_POWER)를 전달하기 위해 IoCallDriver 대신 PoCallDriver를 사용해야 합니다.
자세한 내용은 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, HwStorPortProhibitedDDDIs(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 |