Fonction IofCallDriver (wdm.h)

Attention

Appelez Plutôt IoCallDriver .

Envoie un IRP au pilote associé à un objet de périphérique spécifié.

Syntaxe

NTSTATUS IofCallDriver(
  PDEVICE_OBJECT        DeviceObject,
  __drv_aliasesMem PIRP Irp
);

Paramètres

DeviceObject

Pointeur vers un objet d’appareil, représentant l’appareil cible pour l’opération d’E/S demandée.

Irp

Pointeur vers l’IRP.

Valeur retournée

Retourne une valeur NTSTATUS appropriée.

Remarques

Avant d’appeler IoCallDriver, le pilote appelant doit configurer l’emplacement de la pile d’E/S dans l’IRP du pilote cible. Pour plus d’informations, consultez Passage d’IRPs dans la pile des pilotes.

IoCallDriver affecte le paramètre d’entrée DeviceObject au membre DeviceObject de la structure IO_STACK_LOCATION pour le pilote appelé.

Un IRP passé dans un appel à IoCallDriver devient inaccessible au pilote de niveau supérieur, sauf si le pilote de niveau supérieur a appelé IoSetCompletionRoutine pour configurer une routine IoCompletion pour l’IRP. Si c’est le cas, l’entrée IRP de la routine IoCompletion a son bloc d’E/S status défini par les pilotes inférieurs, et tous les emplacements de pile d’E/S de niveau inférieur sont remplis avec des zéros.

Les pilotes pour Windows Server 2003, Windows XP et Windows 2000 doivent utiliser PoCallDriver plutôt qu’IoCallDriver pour passer les irps d’alimentation (IRP_MJ_POWER).

Pour plus d’informations, consultez Appel d’IoCallDriver et Appel de PoCallDriver.

Configuration requise

Condition requise Valeur
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL
Règles de conformité DDI CompleteRequestStatusCheck, CompletionRoutineRegistered, DeleteDevice, ForwardedAtBadIrql, ForwardedAtBadIrqlAllocate, ForwardedAtBadIrqlFsdAsync, ForwardedAtBadIrqlFsdSync, HwStorPortProhibitedDDIs(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

Voir aussi

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver