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 la pile doit être défini.

Valeur de retour

Aucun

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é, par eux-mêmes, pour envoyer à un autre pilote.

IoSetNextIrpStackLocation n’est généralement pas nécessaire, car l’une ou l’autre :

  • 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, 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.
Vous devez prendre soin 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 IRPs 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 les deux routines.

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

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 2000.
plateforme cible Bureau
d’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