> ## 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

Define uma configuração para o XMem.

## Sintaxe

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

### Parâmetros

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

A configuração de opção a ser definida.

### Valor retornado

Tipo: void

## Comentários

**XMemSetOption** é usada para configurar comportamentos opcionais do sistema XMem.

*eXMEMOPT\_VALIDATE\_XMEMALLOC* (BOOL)<br />
Habilita a verificação das propriedades de memória retornadas por uma chamada para XMemAlloc para garantir que ela atenda ao alinhamento, ao tamanho de página, às proteções de página e aos atributos de cache do tipo de memória solicitado.  Isso se destina a ser usado durante o desenvolvimento para detectar erros em implementações privadas de XMemAlloc. O código-fonte da lógica de verificação é fornecido como parte do Microsoft Game Development Kit (GDK). Para obter mais informações, confira a função `XmpVerifyXMemAllocRoutine` em `\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 a chamada do retorno de chamada HeapFree configurado por `XMemSetWin32HeapTrackingHooks` quando HeapReAlloc tiver sido chamado.  Sem essa opção, o retorno de chamada HeapReAlloc é chamado após a realocação ter ocorrido, com o endereço antigo e o novo.  Quando essa opção está definida, o retorno de chamada HeapFree também será chamado antes da chamada de HeapReAlloc, com o endereço antigo.

```
       // 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 a adição de uma marca de confirmação em cada chamada para `XMemVirtualAlloc` feita por `XMemAllocDefault` para atender a uma alocação (por exemplo, quando a solicitação de alocação é grande demais para caber em um heap XMem interno).  A marca de confirmação é adicionada com XMemMakeTag('XmVA').  Isso permite que um desenvolvedor calcule a quantidade total de memória consumida por `XMemAllocDefault`.  Para obter mais informações, confira [Diagnóstico e rastreamento de memória](/pt-BR/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 />
Quando definida, o espaço de armazenamento alocado para marcas XMem personalizadas será definido com o tamanho especificado em 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 />
Quando definida, se o armazenamento alocado para marcas XMem personalizadas se esgotar, um aviso de tempo de execução será gerado por meio 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 />
Os heaps XMem internos usados por `XMemAllocDefault` são inicialmente criados usando páginas de 2 MB, mas são configurados para recorrer ao rebaixamento para páginas de 64 KB caso encontrem uma falha ao aumentar o heap usando páginas de 2 MB.  Esse sinalizador desabilita o comportamento de rebaixamento.  O código-fonte da lógica de rebaixamento do tamanho de página é fornecido como parte do Microsoft Game Development Kit (GDK). Para obter mais informações, confira a função `XmpAllocateHeapMemory` em `\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 />
Essa opção configura `XMemAllocDefault` para promover a chamadas de XMemVirtualAlloc todas as alocações que normalmente seriam atendidas pelos heaps XMem internos.  Além disso, a memória é liberada usando VirtualFree(MEM\_DECOMMIT).  Embora isso cause intencionalmente o vazamento de espaço de endereço virtual e acabe levando a uma falha de alocação, é um recurso de diagnóstico útil para detectar erros de uso após liberação.  O código-fonte da lógica de promoção é fornecido como parte do Microsoft Game Development Kit (GDK). Para obter mais informações, confira o uso da variável `XmpTrapUseAfterFree` em `\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 />
Essa opção configura `XMemAllocDefault` para usar páginas de 64 KB em vez de páginas de 2 MB para os heaps XMem internos.  Além disso, heaps que usam páginas de 64 KB têm uma granularidade de confirmação/descompromisso de 512 KB em vez de 2 MB.  O código-fonte da implementação de `XMemAllocDefalt` é fornecido como parte do Microsoft Game Development Kit (GDK). Para obter mais informações, confira o arquivo `\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 />
Quando habilitada, essa opção permite que chamadas para `CreateFileMappingA/W` tenham êxito quando chamadas com sinalizadores graváveis.

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

## Requisitos

**Cabeçalho:** xmem.h

**Biblioteca:** xmem.lib\
**Plataformas com suporte**: consoles da família XBOX One e consoles XBOX Series

## Confira também

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


## Related topics

- [XMemSetOption](/reference/system/xmem/functions/xmemsetoption.md)
- [XMEM_OPTION](/reference/system/xmem/structs/xmem_option.md)
