IPortWaveRTStream ::AllocatePagesForMdl, méthode (portcls.h)
La méthode AllocatePagesForMdl
alloue une liste de pages de mémoire physique non paginé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 le haut de la plage d’adresses à partir de laquelle le stockage du MDL peut être alloué. Le bas de la plage d’adresses est implicitement égal à 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 de retour
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 tampon, les pilotes audio doivent sélectionner un type de mise en cache pour les mémoires tampons mappées qui n’imposent pas les 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 du MDL ne sont pas nécessairement contiguës dans la mémoire physique, mais elles se trouvent toutes dans la plage d’adresses spécifiée.
La méthode alloue toujours un nombre intégral de pages. Si la mémoire est suffisante, l’allocation de mémoire est 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 alloués.
Si le contrôleur DMA du périphérique audio nécessite que les pages de mémoire physique de la mémoire tampon soient contiguës, le pilote doit appeler IPortWaveRTStream ::AllocateContiguousPagesForMdl à la place.
Comme la fonction MmAllocatePagesForMdl , la méthode AllocatePagesforMdl
alloue des pages de mémoire verrouillées (non paginés) mais non mappé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 mapper les pages dans l’espace d’adressage en mode noyau.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible dans Windows Vista et les systèmes d’exploitation Windows ultérieurs. |
plateforme cible | Universel |
d’en-tête | portcls.h |
IRQL | Niveau passif |