Partager via


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

Voir aussi

IPortWaveRTStream

IPortWaveRTStream ::AllocateContiguousPagesForMdl

IPortWaveRTStream ::MapAllocatedPages