Partager via


Fonction IoMakeAssociatedIrp (ntddk.h)

Cette routine est réservée aux systèmes de fichiers et aux pilotes de filtre de système de fichiers. La routine IoMakeAssociatedIrp alloue et initialise un IRP à associer à un master IRP envoyé à un pilote de niveau supérieur, ce qui permet à l’appelant de fractionner la demande d’origine et d’envoyer des IRP associés aux pilotes de niveau inférieur.

Syntaxe

PIRP IoMakeAssociatedIrp(
  [in] PIRP  Irp,
  [in] CCHAR StackSize
);

Paramètres

[in] Irp

Pointeur vers le master IRP entré dans la routine Dispatch d’un pilote de niveau supérieur.

[in] StackSize

Spécifie le nombre d’emplacements de pile à allouer pour les IRP associés. La valeur doit être au moins égale à stackSize de l’objet de périphérique du pilote inférieur suivant, mais l’IRP associé peut avoir un emplacement de pile supplémentaire pour l’appelant.

Valeur retournée

IoMakeAssociatedIrp retourne un pointeur vers l’IRP associé ou retourne un pointeur NULL si un IRP ne peut pas être alloué.

Remarques

Seul un pilote de niveau supérieur peut appeler cette routine.

Le gestionnaire d’E/S effectue automatiquement la master IRP lorsque les pilotes inférieurs ont terminé tous les IP associés tant que l’appelant n’a pas défini sa routine IoCompletion dans un IRP associé et renvoyé STATUS_MORE_PROCESSING_REQUIRED à partir de sa routine IoCompletion. Dans ces circonstances, l’appelant doit remplir explicitement les master IRP lorsque ce pilote a déterminé que tous les IRP associés ont été terminés.

Seul le master IRP est associé à un thread ; les IRP associés ne le sont pas. Pour cette raison, le gestionnaire d’E/S ne peut pas appeler les routines Cancel pour les IRP associés lorsqu’un thread se termine. Lorsque le thread de l’IRP master se ferme, le gestionnaire d’E/S appelle la routine Cancel du master IRP. La routine Cancel est chargée de rechercher tous les IRP associés et d’appeler IoCancelIrp pour les annuler.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête ntddk.h (inclure Ntddk.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

Voir aussi

IRP

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine