Compartir a través de


Función IofCallDriver (wdm.h)

Cautela

Llame a IoCallDriver en su lugar.

Envía un IRP al controlador asociado a un objeto de dispositivo especificado.

Sintaxis

NTSTATUS IofCallDriver(
  PDEVICE_OBJECT        DeviceObject,
  __drv_aliasesMem PIRP Irp
);

Parámetros

DeviceObject

Puntero a un objeto de dispositivo, que representa el dispositivo de destino para la operación de E/S solicitada.

Irp

Puntero alIRP de.

Valor devuelto

Devuelve un valor NTSTATUS adecuado .

Observaciones

Antes de llamar a IoCallDriver, el controlador de llamada debe configurar la ubicación de la pila de E/S en irP para el controlador de destino. Para obtener más información, vea pasar IRP hacia abajo en la pila de controladores.

IoCallDriver asigna el parámetro de entrada DeviceObject al miembro DeviceObject de la estructura de IO_STACK_LOCATION para el controlador al que se llama.

Un IRP pasado en una llamada a IoCallDriver deja de estar accesible para el controlador de nivel superior, a menos que el controlador de nivel superior haya llamado a IoSetCompletionRoutine para configurar una rutina de ioCompletion para irP. Si lo tiene, la entrada IRP a la rutina de IoCompletion tiene su bloque de estado de E/S establecido por los controladores inferiores y todas las ubicaciones de pila de E/S de los controladores de nivel inferior se rellenan con ceros.

Los controladores para Windows Server 2003, Windows XP y Windows 2000 deben usar PoCallDriver en lugar de IoCallDriver para pasar IRP de energía (IRP_MJ_POWER).

Para obtener más información, consulte Llamar a IoCallDriver frente a Llamar a PoCallDriver.

Requisitos

Requisito Valor
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL IRQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI CompleteRequestStatusCheck, CompletionRoutineRegistered, DeleteDevice, ForwardedAtBadIrql, ForwardedAtBadIrqlAllocate, ForwardedAtBadIrqlFsdAsync, ForwardedAtBadIrqlFsdSync, HwStorPortProhibitedDIs(storport), IoAllocateForward, IoAllocateIrpSignalEventInCompletionTimeout, IoBuildDeviceControlWait, IoBuildDeviceControlWaitTimeout, IoBuildFsdForward, IoBuildSynchronousFsdRequestWait, 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

Consulte también

ioAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver