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 |