Partager via


IPortWaveRTStream ::AllocateContiguousPagesForMdl, méthode (portcls.h)

La méthode AllocateContiguousPagesForMdl alloue une liste de pages de mémoire contiguës, non paginés et retourne un pointeur vers une liste de descripteurs de mémoire (MDL) qui les décrit.

Syntaxe

PMDL AllocateContiguousPagesForMdl(
  [in] PHYSICAL_ADDRESS LowAddress,
  [in] PHYSICAL_ADDRESS HighAddress,
  [in] SIZE_T           TotalBytes
);

Paramètres

[in] LowAddress

Spécifie la partie inférieure de la plage d’adresses à partir de laquelle le stockage du MDL peut être alloué.

[in] HighAddress

Spécifie le haut de la plage d’adresses à partir de laquelle le stockage du MDL peut être alloué.

[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

AllocateContiguousPagesForMdl retourne un pointeur vers un MDL (PMDL) 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

Le pilote appelle cette méthode pour allouer un bloc de pages de mémoire contiguës physiquement. Toutes les pages de mémoire physique du MDL se trouvent dans la plage d’adresses spécifiée par les paramètres LowAddress et HighAddress. Si la mémoire est suffisante, l’allocation de mémoire est la taille demandée arrondie à la page suivante ; sinon, l’appel échoue.

Une fois qu’un système s’exécute depuis un certain temps, le pool de mémoire non paginé du système a tendance à devenir fragmenté, ce qui augmente la probabilité qu’une demande d’allocation d’un grand bloc de mémoire physique contiguë échoue. Si le contrôleur DMA du périphérique audio ne nécessite pas que les pages de mémoire physique soient contiguës, le pilote doit appeler IPortWaveRTStream ::AllocatePagesForMdl à la place. Contrairement à AllocateContiguousPagesForMdl, la méthode AllocatePagesForMdl n’est pas affectée par la fragmentation de la mémoire.

La méthode AllocateContiguousPagesforMdl alloue des pages mémoire verrouillées (non paginés) mais non mappées. Si le pilote miniport nécessite un accès logiciel à cette mémoire, le pilote miniport doit effectuer un appel ultérieur à IPortWaveRTStream ::MapAllocatedPages pour mapper les pages en 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 ::AllocatePagesForMdl

IPortWaveRTStream ::MapAllocatedPages