> ## 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-CA/reference/system/xmem/structs/xmem_option)

La configuration d'option à définir.

### Valeur de retour

Type : void

## Remarques

**XMemSetOption** est utilisée pour configurer les comportements facultatifs du système XMem.

*eXMEMOPT\_VALIDATE\_XMEMALLOC* (BOOL)<br />
Active la vérification des propriétés de la mémoire retourné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 dans le cadre du 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 sera 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 demande d'allocation est trop grande 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-CA/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é aux balises XMem personnalisées sera 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é aux balises XMem personnalisées est épuisé, un avertissement d'exécution sera déclenché au moyen 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 />
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 dans le cadre du 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.  De plus, 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 dans le cadre du 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.  De plus, les tas utilisant 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 dans le cadre du 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, elle permet aux appels à `CreateFileMappingA/W` de réussir 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-CA/reference/system/xmem/xmem_members)
[XMemMakeTag](/fr-CA/reference/system/xmem/functions/xmemmaketag)
[XError](/fr-CA/reference/system/xerror/xerror_members)


## Related topics

- [XMemSetOption](/reference/system/xmem/functions/xmemsetoption.md)
- [XMEM_OPTION](/reference/system/xmem/structs/xmem_option.md)
- [XMemVirtualQuery](/reference/system/xmem/functions/xmemvirtualquery.md)
- [XMEM_OPTIONS](/reference/system/xmem/enums/xmem_options.md)
- [PartySetTranscriptionOptionsCompletedStateChange](/services/playfab/multiplayer/networking/reference/structs/partysettranscriptionoptionscompletedstatechange.md)
