Fonction RxCeAllocateIrpWithMDL (rxce.h)
RxCeAllocateIrpWithMDL alloue un IRP et l’associe à une liste de descripteurs mémoire existante.
Syntaxe
PIRP RxCeAllocateIrpWithMDL(
[in] IN CCHAR StackSize,
[in] IN BOOLEAN ChargeQuota,
[in] IN PMDL Buffer
);
Paramètres
[in] StackSize
Taille de pile à allouer pour l’IRP.
[in] ChargeQuota
Ce paramètre doit être défini sur FALSE par les pilotes intermédiaires. Cela peut être défini sur TRUE uniquement par les pilotes de niveau supérieur qui sont appelés dans le contexte du thread à l’origine de la demande d’E/S pour laquelle le pilote alloue un autre IRP.
[in] Buffer
Pointeur vers la mémoire tampon qui contient la liste de descripteurs mémoire à associer à cette IRP.
Valeur retournée
RxCeAllocateIrpWithMDL retourne un pointeur vers l’IRP en cas de réussite ou un pointeur NULL en cas d’erreur.
Remarques
L’objectif de RxCeAllocateIrpWithMDL est de faciliter le débogage des IRP qui sont émis pour d’autres composants, puis se bloquent. Les irPs émis à l’aide de RxCeAllocateIrpWithMDL sont mis en file d’attente vers une liste globale des IRP gérés par RDBSS. Ainsi, lorsqu’un RX_CONTEXT attend une fin d’envoi, il est possible de parcourir la liste globale pour trouver l’IRP en attente dans le transport.
Une IRP allouée avec une liste de descripteurs de mémoire associée allouée avec RxCeAllocateIrpWithMDL doit être libérée lorsque l’IRP est terminée à l’aide de RxCeFreeIrp.
IoAllocateIrp initialise automatiquement les membres de l’IRP et insère l’IRP dans une liste globale des IRP gérés par RDBSS. Si la mémoire de la MDL à associer à l’IRP ne peut pas être allouée, l’IRP qui a été créé est libéré et RxCeAllocateIrpWithMDL retourne un pointeur NULL indiquant un échec.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | La routine RxCeAllocateIrpWithMDL est disponible uniquement sur Windows XP. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | rxce.h (inclure Rxce.h) |
IRQL | <= APC_LEVEL |