XMemVirtualAlloc
Reserva, confirma o cambia el estado de una región de páginas en el espacio de direcciones virtuales del proceso que realiza la llamada.A diferencia de la función estándar de Win32 VirtualAlloc, no se garantiza que la memoria asignada por esta función se inicialice automáticamente a cero.
Sintaxis
Parámetros
BaseAddress _In_opt_Tipo: PVOID Dirección inicial de la región que se va a asignar. Si la memoria se está reservando, la dirección especificada se redondea hacia abajo hasta el múltiplo más cercano de la granularidad de asignación (4K, 64K o 2 MB en XBOX). Si la memoria ya está reservada y se está confirmando, la dirección se redondea hacia abajo hasta el siguiente límite de página. Si este parámetro es NULL, el sistema determina dónde asignar la región.
Size _In_
Tipo: SIZE_T Tamaño de la región, en bytes. Si el parámetro BaseAddress es NULL, este valor se redondea hacia arriba hasta el siguiente límite de página. De lo contrario, las páginas asignadas incluyen todas las páginas que contienen uno o más bytes en el intervalo desde BaseAddress hasta BaseAddress+Size. Esto significa que un intervalo de 2 bytes que abarque un límite de página hace que ambas páginas se incluyan en la región asignada.
AllocationType _In_
Tipo: DWORD Tipo de asignación de memoria. Este parámetro debe contener uno de los valores siguientes.
Este parámetro también puede especificar los valores siguientes, según se indica.
Para los títulos de ERA, MEM_LARGE_PAGES representaba páginas de 64K, y en Windows de escritorio representa páginas de 2 MB. Debido a esta ambigüedad, se ha quitado del Microsoft Game Development Kit (GDK).
XMemFlags _In_
Tipo: ULONGLONG Se usa en XBOX para obtener determinados tipos de memoria especializados. Este parámetro debe contener uno de los valores siguientes.
En XBOX es posible asignar memoria con una dirección de memoria virtual restringida que garantiza que no se usen los bits altos. Usar cualquiera de los valores siguientes restringirá la dirección para que use el número de bits indicado. XMEM_40BIT_ADDRESS (0x00007000ULL), XMEM_41BIT_ADDRESS (0x00006000ULL), XMEM_42BIT_ADDRESS (0x00005000ULL), XMEM_43BIT_ADDRESS (0x00004000ULL), XMEM_44BIT_ADDRESS (0x00003000ULL), XMEM_45BIT_ADDRESS (0x00002000ULL), XMEM_46BIT_ADDRESS (0x00001000ULL).
La memoria gráfica no se puede asignar antes de que se haya creado el D3D12Device o de que se haya llamado a D3DConfigureVirtualMemory. Si se solicita memoria que será visible para la GPU, los títulos están obligados a especificar también marcas de protección de página gráfica explícitas; ya no hay un valor predeterminado basado en la configuración de protección de página de la CPU. Esto es un cambio con respecto a las versiones anteriores del sistema operativo de XBOX.
En los dispositivos Anaconda y los dispositivos Dante que emulan Anaconda, mientras se usa el modo de memoria de título Advanced, también se pueden aplicar los parámetros siguientes. Estos parámetros se ignoran en todos los demás casos.
Estas marcas son opcionales. Si no se especifican, todas las asignaciones gráficas usarán de forma predeterminada XMEM_GPU_OPTIMAL_BANDWIDTH_PREFERRED y todas las demás asignaciones usarán de forma predeterminada XMEM_STANDARD_BANDWIDTH_PREFERRED.
El parámetro XMemFlags incluye una etiqueta opcional de código de cuatro caracteres. Los caracteres pueden ser cualquiera de a-z, A-Z, 0-9 y $. La función XMemMakeTag se puede usar para construir la codificación correcta del valor de la etiqueta en la posición de bit correcta. La etiqueta solo se puede asociar a regiones de memoria confirmadas, no a reservas. Esta etiqueta de código de cuatro caracteres estará representada por los 24 bits superiores del parámetro. La etiqueta se puede recuperar a través de XMemVirtualQuery y también se mostrará en el análisis de memoria de PIX.
Ejemplo:
PageProtection _In_
Tipo: DWORD Protección de memoria para la región de páginas que se va a asignar. Si las páginas se están confirmando, puede especificar cualquiera de las constantes de protección de memoria. Los siguientes valores específicos de XBOX se permiten para el parámetro PageProtection, y uno de ellos es obligatorio cuando se especifica XMEM_GRAPHICS o XMEM_GRAPHICS_32BIT_ADDRESS. Este requisito es un cambio con respecto a la versión anterior del sistema operativo de XBOX. Estos valores también se pueden especificar en otras funciones de administración de memoria (por ejemplo, VirtualProtect) para direcciones de memoria dentro de intervalos que se asignaron con XMEM_GRAPHICS.
Este parámetro también puede especificar el valor siguiente, según se indica.
Valor devuelto
Tipo: PVOID Si la función se ejecuta correctamente, el valor devuelto es la dirección base de la región de páginas asignada. Si la función no se ejecuta correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.Comentarios
Cada página tiene asociado un estado de página. La función XMemVirtualAlloc puede realizar las operaciones siguientes:- Confirmar una región de páginas reservadas
- Reservar una región de páginas libres
- Reservar y confirmar simultáneamente una región de páginas libres
Requisitos
Encabezado: xmem.h Biblioteca: xmem.lib Plataformas compatibles: consolas de la familia XBOX One y consolas XBOX SeriesConsulte también
Referencia de XMemXMemMapPhysicalPages
VirtualFree
