Share via


Función AllocateUserPhysicalPagesNuma (memoryapi.h)

Asigna páginas de memoria física que se asignarán y desasignarán dentro de cualquier región de extensiones de ventanas de direcciones (AWE) de un proceso especificado y especifica el nodo NUMA para la memoria física.

Sintaxis

BOOL AllocateUserPhysicalPagesNuma(
  [in]      HANDLE     hProcess,
  [in, out] PULONG_PTR NumberOfPages,
  [out]     PULONG_PTR PageArray,
  [in]      DWORD      nndPreferred
);

Parámetros

[in] hProcess

Identificador de un proceso.

La función asigna memoria que se puede asignar más adelante en el espacio de direcciones virtuales de este proceso. El identificador debe tener el derecho de acceso PROCESS_VM_OPERATION. Para obtener más información, consulte Derechos de acceso y seguridad de procesos.

[in, out] NumberOfPages

Tamaño de la memoria física que se va a asignar, en páginas.

Para determinar el tamaño de página del equipo, use la función GetSystemInfo . En la salida, este parámetro recibe el número de páginas que se asignan realmente, lo que podría ser menor que el número solicitado.

[out] PageArray

Puntero a una matriz para almacenar los números de marco de página de la memoria asignada.

El tamaño de la matriz que se asigna debe ser al menos numberOfPages el tamaño del tipo de datos ULONG_PTR .

Precaución No intente modificar este búfer. Contiene datos del sistema operativo y los daños podrían ser catastróficos. La información del búfer no es útil para una aplicación.
 

[in] nndPreferred

Nodo NUMA donde debe residir la memoria física.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es TRUE.

Se pueden asignar menos páginas de las solicitadas. El autor de la llamada debe comprobar el valor del parámetro NumberOfPages en la devolución para ver cuántas páginas se asignan. Todos los números de fotogramas de página asignados se colocan secuencialmente en la memoria a la que apunta el parámetro PageArray .

Si se produce un error en la función, el valor devuelto es FALSE y no se asignan marcos. Para obtener información ampliada de los errores, llame a la función GetLastError.

Comentarios

La función AllocateUserPhysicalPagesNuma se usa para asignar memoria física dentro de un nodo NUMA que posteriormente se puede asignar dentro del espacio de direcciones virtuales del proceso. El privilegio SeLockMemoryPrivilege debe estar habilitado en el token del autor de la llamada o se producirá un error en la función con ERROR_PRIVILEGE_NOT_HELD. Para más información, consulte Constantes de privilegios.

La memoria asignada por esta función debe estar presente físicamente en el sistema. Una vez asignada la memoria, se bloquea y no está disponible para el resto del sistema de administración de memoria virtual.

Las páginas físicas no se pueden asignar simultáneamente en más de una dirección virtual.

Las páginas físicas pueden residir en cualquier dirección física. No debe realizar ninguna suposición sobre la contiguidad de las páginas físicas.

Para compilar una aplicación que use esta función, defina _WIN32_WINNT como 0x0600 o posterior.

Requisitos

   
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado memoryapi.h (incluya Windows.h, Memoryapi.h)
Library onecore.lib
Archivo DLL Kernel32.dll

Vea también

Extensiones de ventana de direcciones

AllocateUserPhysicalPages

FreeUserPhysicalPages

Funciones de administración de memoria

Compatibilidad NUMA