Функция IofCallDriver (wdm.h)

Внимание!

Вместо этого вызовите IoCallDriver .

Отправляет IRP драйверу, связанному с указанным объектом устройства.

Синтаксис

NTSTATUS IofCallDriver(
  PDEVICE_OBJECT        DeviceObject,
  __drv_aliasesMem PIRP Irp
);

Параметры

DeviceObject

Указатель на объект устройства, представляющий целевое устройство для запрошенной операции ввода-вывода.

Irp

Указатель на IRP.

Возвращаемое значение

Возвращает соответствующее значение NTSTATUS.

Комментарии

Перед вызовом IoCallDriver вызывающий драйвер должен настроить расположение стека ввода-вывода в IRP для целевого драйвера. Дополнительные сведения см. в разделе Передача IRP в стеке драйверов.

IoCallDriver назначает входной параметр DeviceObject элементу DeviceObject структуры IO_STACK_LOCATION вызываемого драйвера.

IRP, переданный в вызове IoCallDriver, становится недоступным для драйвера более высокого уровня, если драйвер более высокого уровня не вызвал IoSetCompletionRoutine , чтобы настроить подпрограмму IoCompletion для IRP. Если это так, входные данные IRP для подпрограммы IoCompletion имеют блок состояния ввода-вывода, заданный более низкими драйверами, а все расположения стека ввода-вывода драйверов нижнего уровня заполняются нулями.

Драйверы для 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, ForwardedAtBadIrFsdAsync, ForwardedAtBadIrqlFsdSync, HwStorPortProhibitedDDIs(storport), IoAllocateForward, IoAllocateIrpSignalEventInCompletionTimeout, IoBuildDeviceControlWaitTimeout, 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