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

Définit un paramètre de configuration pour XMem.

## Syntaxe

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

### Paramètres

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

Configuration d'option à définir.

### Valeur renvoyée

Type : void

## Remarques

**XMemSetOption** permet de configurer des comportements facultatifs du système XMem.

*eXMEMOPT\_VALIDATE\_XMEMALLOC* (BOOL)<br />
Active la vérification des propriétés de la mémoire renvoyée par un appel à XMemAlloc afin de s'assurer qu'elle respecte l'alignement, la taille de page, les protections de page et les attributs de cache du type de mémoire demandé.  Cette option est destinée à être utilisée pendant le développement pour détecter les erreurs dans les implémentations privées de XMemAlloc. Le code source de la logique de vérification est fourni avec le Microsoft Game Development Kit (GDK). Pour plus d'informations, consultez la fonction `XmpVerifyXMemAllocRoutine` dans `\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 />
Active l'appel du rappel HeapFree configuré par `XMemSetWin32HeapTrackingHooks` lorsque HeapReAlloc a été appelée.  Sans cette option, le rappel HeapReAlloc est appelé après la réallocation, avec l'ancienne et la nouvelle adresse.  Lorsque cette option est définie, le rappel HeapFree est en plus appelé avant l'appel à HeapReAlloc, avec l'ancienne adresse.

```
       // 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 />
Active l'ajout d'une balise de validation à chaque appel à `XMemVirtualAlloc` effectué par `XMemAllocDefault` pour satisfaire une allocation (par exemple, lorsque la requête d'allocation est trop volumineuse pour tenir dans un tas XMem interne).  La balise de validation est ajoutée avec XMemMakeTag('XmVA').  Cela permet à un développeur de calculer la quantité totale de mémoire consommée par `XMemAllocDefault`.  Pour plus d'informations, consultez [Diagnostics et suivi de la mémoire](/fr/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 />
Lorsque cette option est définie, l'espace de stockage alloué pour les balises XMem personnalisées est fixé à la taille spécifiée en mégaoctets.

```
       // 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 />
Lorsque cette option est définie, si l'espace de stockage alloué pour les balises XMem personnalisées est épuisé, un avertissement d'exécution est déclenché via `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 />
Les tas XMem internes utilisés par `XMemAllocDefault` sont initialement créés avec des pages de 2 Mo, mais sont configurés pour rétrograder vers des pages de 64 Ko en cas d'échec de l'agrandissement du tas avec des pages de 2 Mo.  Cet indicateur désactive ce comportement de rétrogradation.  Le code source de la logique de rétrogradation de la taille de page est fourni avec le Microsoft Game Development Kit (GDK). Pour plus d'informations, consultez la fonction `XmpAllocateHeapMemory` dans `\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 />
Cette option configure `XMemAllocDefault` pour promouvoir en appels XMemVirtualAlloc toutes les allocations qui seraient normalement traitées par les tas XMem internes.  En outre, la mémoire est libérée à l'aide de VirtualFree(MEM\_DECOMMIT).  Bien que cela entraîne intentionnellement une fuite d'espace d'adressage virtuel et finisse par provoquer un échec d'allocation, il s'agit d'une aide au diagnostic utile pour détecter les erreurs d'utilisation après libération.  Le code source de la logique de promotion est fourni avec le Microsoft Game Development Kit (GDK). Pour plus d'informations, consultez l'utilisation de la variable `XmpTrapUseAfterFree` dans `\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 />
Cette option configure `XMemAllocDefault` pour utiliser des pages de 64 Ko au lieu de pages de 2 Mo pour les tas XMem internes.  En outre, les tas qui utilisent des pages de 64 Ko ont une granularité de validation/annulation de validation de 512 Ko au lieu de 2 Mo.  Le code source de l'implémentation de `XMemAllocDefalt` est fourni avec le Microsoft Game Development Kit (GDK). Pour plus d'informations, consultez le fichier `\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 />
Lorsque cette option est activée, les appels à `CreateFileMappingA/W` réussissent lorsqu'ils sont effectués avec des indicateurs d'écriture.

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

## Configuration requise

**En-tête :** xmem.h

**Bibliothèque :** xmem.lib\
**Plateformes prises en charge** : consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

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


## Related topics

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