Función MapUserPhysicalPagesScatter (winbase.h)
Asigna páginas de memoria física asignadas previamente en una dirección especificada en una región de Extensiones de ventana de direcciones (AWE).
Windows de 64 bits en sistemas basados en Itanium: Debido a la diferencia en los tamaños de página, MapUserPhysicalPagesScatter no es compatible con las aplicaciones de 32 bits.
Sintaxis
BOOL MapUserPhysicalPagesScatter(
[in] PVOID *VirtualAddresses,
[in] ULONG_PTR NumberOfPages,
[in] PULONG_PTR PageArray
);
Parámetros
[in] VirtualAddresses
Puntero a una matriz de direcciones iniciales de las regiones de memoria que se van a reasignar.
Cada entrada de VirtualAddresses debe estar dentro del intervalo de direcciones que devuelve la función VirtualAlloc cuando se asigna la región extensiones de ventana de direcciones (AWE). El valor de NumberOfPages indica el tamaño de la matriz. Las entradas pueden ser de varias regiones de 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.
La matriz de VirtualAddresses especifica el intervalo de direcciones virtuales.
[in] PageArray
Puntero a una matriz de valores que indica cómo se debe tratar cada página correspondiente en VirtualAddresses .
Un 0 (cero) indica que se debe asignar la entrada correspondiente en VirtualAddresses y cualquier valor distinto de cero que tenga.
Si este parámetro es NULL, todas las direcciones de la matriz VirtualAddresses no están asignadas.
El valor de NumberOfPages indica el tamaño de la matriz.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es TRUE.
Si se produce un error en la función, el valor devuelto es FALSE y la función no asigna ni desasignación, parcial o de otro modo. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Es posible que las páginas físicas no estén asignadas, pero no se liberan. Debe llamar a FreeUserPhysicalPages para liberar las páginas físicas.
Puede especificar cualquier número de páginas de memoria física, pero la memoria no puede extenderse fuera del espacio de direcciones virtuales asignado por VirtualAlloc. 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 encontrar en cualquier dirección física, pero no realizar suposiciones sobre la contiguidad de 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. Al devolver esta función, se garantiza que todos los subprocesos de todos los procesadores vean la asignación correcta.
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.
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 | winbase.h (incluya Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |