Fonction MapUserPhysicalPagesScatter (winbase.h)

Mappe les pages de mémoire physique précédemment allouées à une adresse spécifiée dans une région Extensions de fenêtrage d’adresses (AWE).

Windows 64 bits sur les systèmes Itanium : En raison de la différence de tailles de page, MapUserPhysicalPagesScatter n’est pas pris en charge pour les applications 32 bits.

Syntaxe

BOOL MapUserPhysicalPagesScatter(
  [in] PVOID      *VirtualAddresses,
  [in] ULONG_PTR  NumberOfPages,
  [in] PULONG_PTR PageArray
);

Paramètres

[in] VirtualAddresses

Pointeur vers un tableau d’adresses de départ des régions de mémoire à remappper.

Chaque entrée dans VirtualAddresses doit se trouver dans la plage d’adresses renvoyée par la fonction VirtualAlloc lorsque la région Extensions de fenêtrage d’adresses (AWE) est allouée. La valeur dans NumberOfPages indique la taille du tableau. Les entrées peuvent provenir de plusieurs régions AWE (Address Fening Extensions).

[in] NumberOfPages

Taille de la mémoire physique et de l’espace d’adressage virtuel pour lesquels établir des traductions, en pages.

Le tableau de VirtualAddresses spécifie la plage d’adresses virtuelles.

[in] PageArray

Pointeur vers un tableau de valeurs qui indique comment chaque page correspondante dans VirtualAddresses doit être traitée.

La valeur 0 (zéro) indique que l’entrée correspondante dans VirtualAddresses doit être décochée et que toute valeur différente de zéro doit être mappée.

Si ce paramètre a la valeur NULL, chaque adresse du tableau VirtualAddresses n’est pas mappée.

La valeur dans NumberOfPages indique la taille du tableau.

Valeur retournée

Si la fonction réussit, la valeur de retour est TRUE.

Si la fonction échoue, la valeur de retour est FALSE, et la fonction ne mappe pas ou n’annule pas le mappage( partiel ou non). Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Les pages physiques peuvent être démaquées, mais elles ne sont pas libérées. Vous devez appeler FreeUserPhysicalPages pour libérer les pages physiques.

Vous pouvez spécifier un nombre quelconque de pages de mémoire physique, mais la mémoire ne peut pas s’étendre en dehors de l’espace d’adressage virtuel alloué par VirtualAlloc. Toutes les cartes d’adresses existantes sont automatiquement remplacées par les nouvelles traductions, et les anciennes traductions ne sont pas maappées.

Vous ne pouvez pas mapper des pages de mémoire physique en dehors de la plage spécifiée dans AllocateUserPhysicalPages. Vous pouvez mapper plusieurs régions simultanément, mais elles ne peuvent pas se chevaucher.

Les pages physiques peuvent être situées à n’importe quelle adresse physique, mais ne font pas d’hypothèses sur la contiguïté des pages physiques.

Dans un environnement multiprocesseur, cette fonction maintient la cohérence de la mémoire tampon de traduction matérielle. Au retour de cette fonction, tous les threads sur tous les processeurs sont garantis pour voir le mappage correct.

Pour compiler une application qui utilise cette fonction, définissez la macro _WIN32_WINNT comme 0x0500 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

Extensions de fenêtrage d’adresses

AllocateUserPhysicalPages

FreeUserPhysicalPages

MapUserPhysicalPages

Fonctions de gestion de la mémoire