Função IofCallDriver (wdm.h)

Cuidado

Em vez disso, chame IoCallDriver .

Envia um IRP para o driver associado a um objeto de dispositivo especificado.

Sintaxe

NTSTATUS IofCallDriver(
  PDEVICE_OBJECT        DeviceObject,
  __drv_aliasesMem PIRP Irp
);

Parâmetros

DeviceObject

Ponteiro para um objeto de dispositivo, representando o dispositivo de destino para a operação de E/S solicitada.

Irp

Ponteiro para o IRP.

Retornar valor

Retorna um valor NTSTATUS apropriado.

Comentários

Antes de chamar IoCallDriver, o driver de chamada deve configurar o local da pilha de E/S no IRP para o driver de destino. Para obter mais informações, consulte Passando IRPs para baixo na pilha do driver.

IoCallDriver atribui o parâmetro de entrada DeviceObject ao membro DeviceObject da estrutura IO_STACK_LOCATION para o driver que está sendo chamado.

Um IRP passado em uma chamada para IoCallDriver torna-se inacessível para o driver de nível superior, a menos que o driver de nível superior tenha chamado IoSetCompletionRoutine para configurar uma rotina IoCompletion para o IRP. Se tiver, a entrada IRP para a rotina IoCompletion terá seu bloco de E/S status definido pelos drivers inferiores e todos os locais de pilha de E/S de drivers de nível inferior serão preenchidos com zeros.

Os drivers para Windows Server 2003, Windows XP e Windows 2000 devem usar PoCallDriver em vez de IoCallDriver para passar IRPs de energia (IRP_MJ_POWER).

Para obter mais informações, consulte Chamando IoCallDriver vs. Chamando PoCallDriver.

Requisitos

Requisito Valor
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI CompleteRequestStatusCheck, CompletionRoutineRegistered, DeleteDevice, ForwardedAtBadIrql, ForwardedAtBadIrqlAllocate, ForwardedAtBadIrqlFsdAsync, ForwardedAtBadIrqlFsdSync, HwStorPortProhibitedDIs(storport), IoAllocateForward, IoAllocateIrpSignalEventInCompletionTimeout, IoBuildDeviceControlWait, IoBuildDeviceControlWaitTimeout, IoBuildFsdForward, IoBuildSynchronousFsdRequestWait, IoBuildSynchronousFsdRequestWaitTimeout, IoSetCompletionRoutineExCheck, IrpProcessingComplete, LowerDriverReturn, MarkDevicePower, MarkingQueuedIrps, 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

Confira também

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver