Función MapUserPhysicalPages (memoryapi.h)

Asigna páginas de memoria física asignadas previamente en una dirección especificada en una región de Extensiones de ventanas de direcciones (AWE).

Para realizar la asignación por lotes y desasignación de varias regiones, use la función MapUserPhysicalPagesScatter .

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

Sintaxis

BOOL MapUserPhysicalPages(
  [in] PVOID      VirtualAddress,
  [in] ULONG_PTR  NumberOfPages,
  [in] PULONG_PTR PageArray
);

Parámetros

[in] VirtualAddress

Puntero a la dirección inicial de la región de memoria que se va a reasignar.

El valor de lpAddress debe estar dentro del intervalo de direcciones que devuelve la función VirtualAlloc cuando se asigna la región Extensiones de ventanas de direcciones (AWE).

[in] NumberOfPages

Tamaño de la memoria física y el espacio de direcciones virtuales para el que se establecen traducciones, en páginas.

El intervalo de direcciones virtuales es contiguo a partir de lpAddress. Los marcos físicos se especifican mediante UserPfnArray.

El número total de páginas no se puede extender desde la dirección inicial más allá del final del intervalo especificado en AllocateUserPhysicalPages.

[in] PageArray

Puntero a una matriz de números de marco de página física.

Estos fotogramas se asignan mediante el argumento lpAddress a cambio de esta función. El tamaño de la memoria asignada 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.

Si este parámetro es NULL, el intervalo de direcciones especificado no está asignado. Además, las páginas físicas especificadas no se liberan y debe llamar a FreeUserPhysicalPages para liberarlas.

Valor devuelto

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

Si se produce un error en la función, el valor devuelto es FALSE y no se realiza ninguna asignación, parcial o en caso contrario. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Las páginas físicas no están asignadas, pero no se liberan. Debe llamar a FreeUserPhysicalPages para liberar las páginas físicas.

Se puede especificar cualquier número de páginas de memoria física, pero la memoria no debe extenderse fuera del espacio de direcciones virtuales que VirtualAlloc asigna. Las asignaciones de direcciones existentes se sobrescriben automáticamente con las nuevas traducciones y las traducciones antiguas no se asignan.

No se pueden asignar páginas de memoria física fuera del intervalo especificado en AllocateUserPhysicalPages. Puede asignar varias regiones simultáneamente, pero no se pueden superponer.

Las páginas físicas se pueden ubicar en cualquier dirección física, pero no hacen suposiciones sobre la contiguidad de las páginas físicas.

Para desasignación del intervalo de direcciones actual, especifique NULL como parámetro de matriz de páginas de memoria física. Las páginas asignadas actualmente no están asignadas, pero no se liberan. Debe llamar a FreeUserPhysicalPages para liberar las páginas físicas.

En un entorno de varios procesadores, esta función mantiene la coherencia del búfer de traducción de hardware. A cambio de esta función, se garantiza que todos los subprocesos de todos los procesadores vean la asignación correcta.

Para compilar una aplicación que usa esta función, defina la macro _WIN32_WINNT como 0x0500 o posterior. Para obtener más información, vea Usar los encabezados de Windows.

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 (incluye Windows.h, Memoryapi.h)
Library onecore.lib
Archivo DLL Kernel32.dll

Vea también

Extensiones de ventanas de direcciones

AllocateUserPhysicalPages

FreeUserPhysicalPages

MapUserPhysicalPagesScatter

Funciones de administración de memoria