IofCallDriver, fonction (wdm.h)
Envoie un IRP au pilote associé à un objet d’appareil 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 leIRP.
Valeur de retour
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 vers le bas de la pile des pilotes.
IoCallDriver affecte le paramètre d’entrée DeviceObject au membre DeviceObject de la structure IO_STACK_LOCATION du 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 à la routine IoCompletion a son bloc d’état d’E/S défini par les pilotes inférieurs, et tous les emplacements de pile d’E/S des pilotes de niveau inférieur sont remplis de zéros.
Les pilotes pour Windows Server 2003, Windows XP et Windows 2000 doivent utiliser PoCallDriver au lieu d’IoCallDriver pour passer des IRP power (IRP_MJ_POWER).
Pour plus d’informations, consultez Appel d’IoCallDriver et Appel de PoCallDriver.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | wdm.h (include 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, MarkQueuedIrps, 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 |