Función AllocateUserPhysicalPages (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.

Windows de 64 bits en sistemas basados en Itanium: Debido a la diferencia en los tamaños de página, AllocateUserPhysicalPages no es compatible con las aplicaciones de 32 bits.

Sintaxis

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

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 .

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.

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

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

Comentarios

La función AllocateUserPhysicalPages se usa para asignar memoria física 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 la macro _WIN32_WINNT como 0x0500 o posterior. Para obtener más información, vea Uso de los encabezados de Windows.

AllocateUserPhysicalPages2, agregado al SDK en una versión posterior, es el mismo que AllocateUserPhysicalPages , pero agrega los parámetros ExtendedParameters y ExtendedParameterCount .

Ejemplos

Para obtener un ejemplo, vea Ejemplo de AWE.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [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

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

Funciones de administración de memoria

AllocateUserPhysicalPages2