Partager via


Méthode IPortWaveRTStream ::AllocateContiguousPagesForMdl (portcls.h)

La AllocateContiguousPagesForMdl méthode alloue une liste de pages de mémoire physique contiguës, non pagées 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 l’extrémité inférieure de la plage d’adresses à partir de laquelle le stockage du MDL peut être alloué.

[in] HighAddress

Spécifie l’extrémité supérieure 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 retournée

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 de la MDL se trouvent dans la plage d’adresses spécifiée par les paramètres LowAddress et HighAddress . Si suffisamment de mémoire est disponible, l’allocation de mémoire correspond à la taille demandée arrondie à la page suivante ; sinon, l’appel échoue.

Une fois qu’un système est en cours d’exécution 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 AllocateContiguousPagesforMdl méthode alloue des pages de mémoire qui sont verrouillées (non pagé) mais non mapliqué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 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 ::AllocatePagesForMdl

IPortWaveRTStream ::MapAllocatedPages