Condividi tramite


Funzione IofCallDriver (wdm.h)

Attenzione

Chiama invece 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 all'IRP.

Valore restituito

Restituisce un valore NTSTATUS appropriato.

Commenti

Prima di chiamare IoCallDriver, il driver chiamante deve configurare la posizione dello stack di I/O in IRP per il driver di destinazione. Per altre informazioni, vedere Passaggio dei runtime di integrazione verso il basso 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 IRP. In caso affermativo, l'input IRP nella routine IoCompletion ha il blocco di stato I/O impostato dai driver inferiori e tutte le posizioni dello stack di I/O dei driver di livello inferiore vengono riempite 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 Chiamata di IoCallDriver e Chiamata di PoCallDriver.

Requisiti

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, MarkingQueuedIrps, 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

Vedi anche

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver