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 |