AllocateUserPhysicalPagesNuma, fonction (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é et spécifie le nœud NUMA pour la mémoire physique.
Syntaxe
BOOL AllocateUserPhysicalPagesNuma(
[in] HANDLE hProcess,
[in, out] PULONG_PTR NumberOfPages,
[out] PULONG_PTR PageArray,
[in] DWORD nndPreferred
);
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 .
[in] nndPreferred
Nœud NUMA dans lequel la mémoire physique doit résider.
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 PageArray .
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 la fonction GetLastError.
Notes
La fonction AllocateUserPhysicalPagesNuma est utilisée pour allouer de la mémoire physique au sein d’un nœud NUMA qui peut être mappé 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 _WIN32_WINNT comme 0x0600 ou version ultérieure.
Spécifications
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [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