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 |