Partager via


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

Voir aussi

IPortWaveRTStream

IPortWaveRTStream ::AllocateContiguousPagesForMdl

IPortWaveRTStream ::MapAllocatedPages