Compartilhar via


Função IofCallDriver (wdm.h)

Cuidado

Chame do 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 oIRP.

Valor de retorno

Retorna um valor NTSTATUS apropriado.

Observações

Antes de chamar o 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 de driver.

O 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 de IoCompletion para o IRP. Se tiver, a entrada IRP para a rotina IoCompletion terá seu bloco de status de E/S 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 Calling IoCallDriver vs. Calling PoCallDriver.

Requisitos

Requisito Valor
cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca NtosKrnl.lib
de 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

Consulte também

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver