Partager via


IofCallDriver, fonction (wdm.h)

Prudence

Appelez IoCallDriver à la place.

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

Voir aussi

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver