Partager via


AllocateUserPhysicalPages2, fonction (memoryapi.h)

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

Syntaxe

BOOL AllocateUserPhysicalPages2(
  [in]     HANDLE                  ObjectHandle,
  [in,out] PULONG_PTR              NumberOfPages,
  [out]    PULONG_PTR              PageArray,
  [in,out] PMEM_EXTENDED_PARAMETER ExtendedParameters,
  [in]     ULONG                   ExtendedParameterCount
);

Paramètres

[in] ObjectHandle

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.

[in,out] ExtendedParameters

Pointeur vers un tableau de structures MEM_EXTENDED_PARAMETER .

[in] ExtendedParameterCount

Nombre de MEM_EXTENDED_PARAMETER dans le tableau ExtendedParameters .

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

AllocateUserPhysicalPages2 est identique à AllocateUserPhysicalPages , mais il ajoute les paramètres ExtendedParameters et ExtendedParameterCount .

La fonction AllocateUserPhysicalPages2 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.

Configuration requise

   
Client minimal pris en charge Windows 11, build 20348
Serveur minimal pris en charge Windows Server, build 20348
En-tête memoryapi.h
Bibliothèque onecore.lib
DLL kernelbase.dll

Voir aussi

AllocateUserPhysicalPages

Extensions de fenêtrage d’adresse

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

Fonctions de gestion de la mémoire