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 |