Funzione IofCallDriver (wdm.h)
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 |