Partager via


Fonction AllocateUserPhysicalPages (memoryapi.h)

Alloue des pages de mémoire physique à mapper et à démapper dans n’importe quelle région AWE ( Address Windowing Extensions ) d’un processus spécifié.

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

Syntaxe

BOOL AllocateUserPhysicalPages(
  [in]      HANDLE     hProcess,
  [in, out] PULONG_PTR NumberOfPages,
  [out]     PULONG_PTR PageArray
);

Paramètres

[in] hProcess

Handle d’un processus.

La fonction alloue de la mémoire qui peut être mappée ultérieurement dans l’espace d’adressage virtuel de ce processus. Le handle doit avoir le droit d’accès PROCESS_VM_OPERATION . Pour plus d’informations, consultez Droits d’accès et de sécurité des processus.

[in, out] NumberOfPages

Taille de la mémoire physique à allouer, en pages.

Pour déterminer la taille de la page de l’ordinateur, utilisez la fonction GetSystemInfo . Lors de la sortie, ce paramètre reçoit le nombre de pages réellement allouées, qui peut être inférieur au nombre demandé.

[out] PageArray

Pointeur vers un tableau pour stocker les numéros de cadre de page de la mémoire allouée.

La taille du tableau alloué doit être au moins la valeur NumberOfPages multipliée par la taille du type de données ULONG_PTR .

N’essayez pas de modifier cette mémoire tampon. Il contient des données de système d’exploitation, et la corruption peut être catastrophique. Les informations contenues dans la mémoire tampon ne sont pas utiles à une application.

Valeur retournée

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

Il est possible d’allouer moins de pages que demandé. L’appelant doit case activée la valeur du paramètre NumberOfPages au retour pour voir le nombre de pages allouées. Tous les numéros de cadres de page alloués sont placés séquentiellement dans la mémoire pointée par le paramètre UserPfnArray .

Si la fonction échoue, la valeur de retour est FALSE et aucune trame n’est allouée. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

La fonction AllocateUserPhysicalPages est utilisée pour allouer de la mémoire physique qui peut être mappée ultérieurement dans l’espace d’adressage virtuel du processus. Le privilège SeLockMemoryPrivilege doit être activé dans le jeton de l’appelant, sinon la fonction échoue avec ERROR_PRIVILEGE_NOT_HELD. Pour plus d’informations, consultez Constantes de privilège.

La mémoire allouée par cette fonction doit être physiquement présente dans le système. Une fois la mémoire allouée, elle est verrouillée et indisponible pour le reste du système de gestion de la mémoire virtuelle.

Les pages physiques ne peuvent pas être mappées simultanément à plusieurs adresses virtuelles.

Les pages physiques peuvent résider à n’importe quelle adresse physique. Vous ne devez faire aucune hypothèse sur la contiguïté des pages physiques.

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.

AllocateUserPhysicalPages2, ajouté au Kit de développement logiciel (SDK) dans une version ultérieure, est identique à AllocateUserPhysicalPages , mais il ajoute les paramètres ExtendedParameters et ExtendedParameterCount .

Exemples

Pour obtenir un exemple, consultez Exemple AWE.

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 memoryapi.h (inclure Windows.h, Memoryapi.h)
Bibliothèque onecore.lib
DLL Kernel32.dll

Voir aussi

Extensions de fenêtrage d’adresse

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

Fonctions de gestion de la mémoire

AllocateUserPhysicalPages2