Condividi tramite


Funzione IofCallDriver (wdm.h)

Cautela

Chiamare IoCallDriver.

Invia un IRP al driver associato a un oggetto dispositivo specificato.

Sintassi

NTSTATUS IofCallDriver(
  PDEVICE_OBJECT        DeviceObject,
  __drv_aliasesMem PIRP Irp
);

Parametri

DeviceObject

Puntatore a un oggetto dispositivo, che rappresenta il dispositivo di destinazione per l'operazione di I/O richiesta.

Irp

Puntatore alIRP.

Valore restituito

Restituisce un valore NTSTATUS appropriato .

Osservazioni

Prima di chiamare IoCallDriver, il driver chiamante deve configurare il percorso dello stack di I/O nell'IRP per il driver di destinazione. Per altre informazioni, vedere Passaggio di IRP nello stack di driver.

IoCallDriver assegna il parametro di input DeviceObject al membro DeviceObject della struttura IO_STACK_LOCATION per il driver chiamato.

Un IRP passato in una chiamata a IoCallDriver diventa inaccessibile al driver di livello superiore, a meno che il driver di livello superiore non abbia chiamato IoSetCompletionRoutine per configurare una routine IoCompletion per l'IRP. In caso affermativo, l'input IRP della routine IoCompletion ha il blocco di stato di I/O impostato dai driver inferiori e tutti i percorsi dello stack di I/O dei driver di livello inferiore vengono riempiti con zeri.

I driver per Windows Server 2003, Windows XP e Windows 2000 devono usare PoCallDriver anziché IoCallDriver per passare i runtime di integrazione di alimentazione (IRP_MJ_POWER).

Per altre informazioni, vedere Calling IoCallDriver vs. Calling PoCallDriver.

Fabbisogno

Requisito Valore
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL
regole di conformità DDI CompleteRequestStatusCheck, CompletionRoutineRegistered, DeleteDevice, ForwardedAtBadIrql, ForwardedAtBadIrqlAllocate, ForwardedAtBadIrqlFsdAsync, ForwardedAtBadIrqlFsdSync, HwStorPortProhibitedDDDIs(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

Vedere anche

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

poCallDriver