Partager via


Fonction IoSetNextIrpStackLocation (wdm.h)

La routine IoSetNextIrpStackLocation définit l’emplacement de la pile IRP dans un IRP alloué par le pilote à celui de l’appelant.

Syntaxe

void IoSetNextIrpStackLocation(
  [in, out] PIRP Irp
);

Paramètres

[in, out] Irp

Pointeur vers l’IRP dont l’emplacement de pile doit être défini.

Valeur de retour

None

Remarques

En général, cette routine est rarement utilisée par les conducteurs. Il est principalement utilisé par les pilotes qui nécessitent leur propre emplacement de pile dans un IRP qu’ils ont alloué, eux-mêmes, à envoyer à un autre pilote.

IoSetNextIrpStackLocation n’est généralement pas nécessaire, car :

  • Le pilote a reçu l’IRP qu’il passe d’un autre pilote de niveau supérieur, et il possède donc déjà un emplacement de pile,
  • Ou bien, le pilote a alloué l’IRP, mais n’a pas besoin de son propre emplacement de pile, car il peut conserver tout ce dont il a besoin dans un bloc de contexte dont l’adresse peut être passée à sa routine IoCompletion .
Faites attention si cette routine est appelée, en particulier lors de l’allocation de l’IRP avec IoAllocateIrp ou IoMakeAssociatedIrp. L’enregistreur du pilote d’allocation doit se rappeler qu’un emplacement de pile spécifique à l’appelant n’est pas inclus dans le nombre d’emplacements de pile requis par les pilotes de niveau inférieur auxquels il envoie des IRP avec IoCallDriver. Un pilote doit spécifier explicitement un emplacement de pile pour lui-même dans son appel à IoAllocateIrp ou IoMakeAssociatedIrp s’il appelle IoSetNextIrpStackLocation avec l’IRP retourné par l’une ou l’autre routine.

Un pilote ne peut pas appeler IoSetNextIrpStackLocation avec un IRP qu’il alloue en appelant IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequest ou IoBuildSynchronousFsdRequest.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Desktop (Expérience utilisateur)
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL N’importe quel niveau

Voir aussi

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine