Функция 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 |