Función IofCallDriver (wdm.h)

Precaución

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 al IRP.

Valor devuelto

Devuelve un valor NTSTATUS adecuado.

Comentarios

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

IoCallDriver asigna el parámetro de entrada DeviceObject al miembro DeviceObject de la estructura 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 IoSetCompletionRoutine para configurar una rutina de IoCompletion para irP. Si lo tiene, la entrada IRP de la rutina 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, vea Llamar a IoCallDriver frente a llamar a PoCallDriver.

Requisitos

Requisito Valor
Header wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI CompleteRequestStatusCheck, CompletionRoutineRegistered, DeleteDevice, ForwardedAtBadIrql, ForwardedAtBadIrqlAllocate, ForwardedAtBadIrqlFsdAsync, ForwardedAtBadIrqlFsdSync, HwStorPortProhibitedDDIs(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