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 |