Méthode IPortWaveRTStream ::AllocatePagesForMdl (portcls.h)
La AllocatePagesForMdl
méthode alloue une liste de pages de mémoire physique non pagées et retourne un pointeur vers une liste de descripteurs de mémoire (MDL) qui les décrit.
Syntaxe
PMDL AllocatePagesForMdl(
[in] PHYSICAL_ADDRESS HighAddress,
[in] SIZE_T TotalBytes
);
Paramètres
[in] HighAddress
Spécifie l’extrémité supérieure de la plage d’adresses à partir de laquelle le stockage du MDL peut être alloué. L’extrémité inférieure de la plage d’adresses est implicitement zéro.
[in] TotalBytes
Spécifie le nombre total d’octets à allouer pour le MDL. Cette méthode alloue toujours un nombre intégral de pages de mémoire.
Valeur retournée
AllocatePagesforMdl
retourne un pointeur vers un MDL qui décrit une liste de pages de mémoire physique. Si la méthode ne parvient pas à allouer la mémoire tampon demandée, elle retourne NULL.
Remarques
Étant donné que la pile audio Windows ne prend pas en charge un mécanisme permettant d’exprimer les exigences d’alignement de l’accès à la mémoire mémoire pour les mémoires tampons, les pilotes audio doivent sélectionner un type de mise en cache pour les mémoires tampons mappées qui n’impose pas d’exigences d’alignement spécifiques à la plateforme. En d’autres termes, le type de mise en cache utilisé par le pilote audio pour les mémoires tampons mappées ne doit pas faire d’hypothèses sur les exigences d’alignement de la mémoire pour une plateforme spécifique.
Le pilote appelle cette méthode pour allouer de la mémoire qui peut être mappée en mode utilisateur ou noyau. Les pages de mémoire physique dans le MDL ne sont pas nécessairement contiguës en mémoire physique, mais elles se situent toutes dans la plage d’adresses spécifiée.
La méthode alloue toujours un nombre intégral de pages. Si suffisamment de mémoire est disponible, l’allocation de mémoire correspond à la taille demandée arrondie à la page suivante. Sinon, l’allocation de mémoire peut être inférieure à la taille demandée. L’appelant doit vérifier le nombre d’octets réellement alloués.
Si le contrôleur DMA du périphérique audio nécessite que les pages de mémoire physique dans la mémoire tampon soient contiguës, le pilote doit appeler IPortWaveRTStream ::AllocateContiguousPagesForMdl à la place.
Comme la fonction MmAllocatePagesForMdl , la AllocatePagesforMdl
méthode alloue des pages de mémoire verrouillées (non paginées) mais non masquées. Si le pilote miniport souhaite configurer l’accès logiciel à cette mémoire, le pilote miniport doit effectuer un appel ultérieur à IPortWaveRTStream ::MapAllocatedPages pour mapper les pages dans l’espace d’adressage en mode noyau.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans les systèmes d’exploitation Windows Vista et ultérieurs. |
Plateforme cible | Universal |
En-tête | portcls.h |
IRQL | Niveau passif |