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 .
[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