> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XMemSetOption

> XMemSetOption

# XMemSetOption

Establece una opción de configuración para XMem.

## Sintaxis

```cpp theme={null}
void XMemSetOption(  
         XMEM_OPTION option  
)  
```

### Parámetros

*option*   \_In\_\
Tipo: [XMEM\_OPTION](/reference/system/xmem/structs/xmem_option)

Configuración de opción que se va a establecer.

### Valor devuelto

Tipo: void

## Comentarios

**XMemSetOption** se usa para configurar comportamientos opcionales del sistema XMem.

*eXMEMOPT\_VALIDATE\_XMEMALLOC* (BOOL)<br />
Habilita la verificación de las propiedades de memoria devueltas por una llamada a XMemAlloc para garantizar que cumple la alineación, el tamaño de página, las protecciones de página y los atributos de caché del tipo de memoria solicitado.  Está pensada para usarse en tiempo de desarrollo con el fin de detectar errores en implementaciones privadas de XMemAlloc. El código fuente de la lógica de verificación se proporciona como parte del Microsoft Game Development Kit (GDK). Para obtener más información, consulte la función `XmpVerifyXMemAllocRoutine` en `\GXDK\gameKit\Source\amd64\heap.c`.

```
       // Enable memory validation on XMemAlloc
       XMEM_OPTION option;
       option.Option = eXMEMOPT_VALIDATE_XMEMALLOC;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_RAISE\_HEAPFREE\_CALLBACK\_ON\_REALLOC* (BOOL)<br />
Habilita la llamada a la devolución de llamada de HeapFree configurada por `XMemSetWin32HeapTrackingHooks` cuando se ha llamado a HeapReAlloc.  Sin esta opción, la devolución de llamada de HeapReAlloc se llama después de que se haya producido la reasignación, con la dirección antigua y la nueva.  Cuando se establece esta opción, la devolución de llamada de HeapFree se llamará adicionalmente antes de la llamada a HeapReAlloc con la dirección antigua.

```
       // Enable calling the HeapFree callback on HeapReAlloc
       XMEM_OPTION option;
       option.Option = eXMEMOPT_RAISE_HEAPFREE_CALLBACK_ON_REALLOC;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_XMEMALLOCDEFAULT\_TAG\_VIRTUALALLOC* (BOOL)<br />
Habilita la adición de una etiqueta de confirmación en cada llamada a `XMemVirtualAlloc` realizada por `XMemAllocDefault` para satisfacer una asignación (por ejemplo, cuando la solicitud de asignación es demasiado grande para caber en un montón interno de XMem).  La etiqueta de confirmación se agrega con XMemMakeTag('XmVA').  Esto permite a un desarrollador calcular la cantidad total de memoria consumida por `XMemAllocDefault`.  Para obtener más información, consulte [Diagnóstico y seguimiento de memoria](/build/console-features/memory/system-memory-diagnostics).

```
       // Enable commit tagging on XMemAllocDefault
       XMEM_OPTION option;
       option.Option = eXMEMOPT_XMEMALLOCDEFAULT_TAG_VIRTUALALLOC;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_SET\_XMEM\_TAG\_TREE\_SIZE* (INT)<br />
Cuando se establece, el espacio de almacenamiento asignado para las etiquetas XMem personalizadas se establecerá en el tamaño especificado en megabytes.

```
       // Configure XMem to use the specified size for XMem Tags
       XMEM_OPTION option;
       option.Option = eXMEMOPT_SET_XMEM_TAG_TREE_SIZE;
       option.u.Int = 4; // 4MB
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_XMEM\_WARN\_WHEN\_TAG\_TREE\_FULL* (BOOL)<br />
Cuando se establece, si el almacenamiento asignado para las etiquetas XMem personalizadas se agota, se generará una advertencia en tiempo de ejecución a través de `XError`.

```
       // Configure XMem to raise a warning when XMem Tags storage space has been exhausted.
       XMEM_OPTION option;
       option.Option = eXMEMOPT_XMEM_WARN_WHEN_TAG_TREE_FULL;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_XMEMALLOCDEFAULT\_DISABLEPAGESIZEDEMOTION* (BOOL)<br />
Los montones internos de XMem usados por `XMemAllocDefault` se crean inicialmente con páginas de 2 MB, pero están configurados para degradar a páginas de 64 KB si se produce un error al ampliar el montón con páginas de 2 MB.  Esta marca deshabilita el comportamiento de degradación.  El código fuente de la lógica de degradación del tamaño de página se proporciona como parte del Microsoft Game Development Kit (GDK). Para obtener más información, consulte la función `XmpAllocateHeapMemory` en `\GXDK\gameKit\Source\amd64\heap.c`

```
       // Disables page size demotion
       XMEM_OPTION option;
       option.Option = eXMEMOPT_XMEMALLOCDEFAULT_DISABLEPAGESIZEDEMOTION;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_XMEMALLOCDEFAULT\_TRAPUSEAFTERFREE* (BOOL)<br />
Esta opción configura `XMemAllocDefault` para promover cualquier asignación que normalmente atenderían los montones internos de XMem a llamadas a XMemVirtualAlloc.  Además, la memoria se libera mediante VirtualFree(MEM\_DECOMMIT).  Aunque esto pierde intencionadamente espacio de direcciones virtuales y acabará provocando un error de asignación, es una ayuda de diagnóstico útil para detectar errores de uso después de liberación (use-after-free).  El código fuente de la lógica de promoción se proporciona como parte del Microsoft Game Development Kit (GDK). Para obtener más información, consulte el uso de la variable `XmpTrapUseAfterFree` en `\GXDK\gameKit\Source\amd64\heap.c`

```
       // Enable trapping use-after-free scenarios with XMemAllocDefault
       XMEM_OPTION option;
       option.Option = eXMEMOPT_XMEMALLOCDEFAULT_TRAPUSEAFTERFREE;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_XMEMALLOCDEFAULT\_USE64KPAGES* (BOOL)<br />
Esta opción configura `XMemAllocDefault` para usar páginas de 64 KB en lugar de páginas de 2 MB para los montones internos de XMem.  Además, los montones que usan páginas de 64 KB tienen una granularidad de confirmación/anulación de confirmación de 512 KB en lugar de 2 MB.  El código fuente de la implementación de `XMemAllocDefalt` se proporciona como parte del Microsoft Game Development Kit (GDK). Para obtener más información, consulte el archivo `\GXDK\gameKit\Source\amd64\heap.c`

```
       // Configure XMem heaps to use 64KB pages and 512KB commit/decommit granularity
       XMEM_OPTION option;
       option.Option = eXMEMOPT_XMEMALLOCDEFAULT_USE64KPAGES;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

<br />

*eXMEMOPT\_ALLOW\_WRITEABLE\_FILEMAPPINGS* (BOOL)<br />
Cuando está habilitada, esta opción permite que las llamadas a `CreateFileMappingA/W` se realicen correctamente cuando se llaman con marcas de escritura.

```
       // Configure XMem to allow writeable file mappings
       XMEM_OPTION option;
       option.Option = eXMEMOPT_ALLOW_WRITEABLE_FILEMAPPINGS;
       option.u.Bool = TRUE;
       XMemSetOption(option);
```

## Requisitos

**Encabezado:** xmem.h

**Biblioteca:** xmem.lib\
**Plataformas compatibles**: consolas de la familia XBOX One y consolas XBOX Series

## Consulte también

[XMem](/reference/system/xmem/xmem_members)
[XMemMakeTag](/reference/system/xmem/functions/xmemmaketag)
[XError](/reference/system/xerror/xerror_members)


## Related topics

- [XMEM_OPTION](/es/reference/system/xmem/structs/xmem_option.md)
- [XMemVirtualQuery](/es/reference/system/xmem/functions/xmemvirtualquery.md)
- [XMEM_OPTIONS](/es/reference/system/xmem/enums/xmem_options.md)
- [XErrorSetOptions](/es/reference/system/xerror/functions/xerrorsetoptions.md)
- [DSTORAGE_REQUEST_OPTIONS](/es/reference/system/dstorage/structs/dstorage_request_options.md)
