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

# Réorganisation dynamique des segments

> Réorganisation dynamique des segments

Lorsque l'installation d'un titre commence, le système d'installation acquiert et copie les *segments* (chunks), c'est-à-dire des collections de fichiers à installer en groupe, selon l'ordre par défaut que vous avez défini. Une fois que les segments requis pour l'exécution du titre ont été installés, le titre peut fournir un ordre personnalisé pour l'installation des segments restants, que le système d'installation traitera avant de revenir à l'ordre d'installation par défaut.

De cette façon, les titres peuvent contrôler l'ordre d'acquisition du contenu en réponse à diverses situations ou à différents types d'entrées des utilisateurs. Cette réorganisation dynamique peut réduire au minimum le temps que les utilisateurs passent à attendre l'installation du contenu, et leur permet de choisir ce qu'ils veulent avoir à leur disposition en premier.

Une fois l'ordre d'installation modifié, si des segments sont requis pour la jouabilité ou pour l'utilisation du titre, celui-ci peut surveiller l'état de l'installation à l'aide de l'une des méthodes décrites dans [Installation en continu : état](/fr-CA/build/core-features/common/packaging/packaging-installstatus).

## Comment modifier l'ordre d'installation des segments

Dans l'exemple de code suivant, un jeu a besoin d'accéder rapidement à un fichier pour permettre à l'utilisateur de continuer à jouer. La fonction **PrioritizeChunk** est définie et vérifie l'état d'installation actuel d'un segment.

* Si le segment n'est pas déjà installé, la fonction demande au système de diffusion en continu d'installer ce segment en premier, puis retourne un moniteur d'installation de la progression du segment.

* Si le segment est déjà installé, la fonction retourne un moniteur nul.

```cpp theme={null}
template<> 
struct std::default_delete<XPackageInstallationMonitorHandle> { 
    typedef XPackageInstallationMonitorHandle pointer; 
    void operator()(XPackageInstallationMonitorHandle handle) const noexcept  
    {   
        XPackageCloseInstallationMonitorHandle(handle);  
    } 
}; 
 
HRESULT PrioritizeChunk(uint32_t chunkId, XPackageInstallationMonitorHandle* monitor) 
{ 
    char id[PACKAGE_IDENTIFIER_MAX_LENGTH]; 
 
    *monitor = nullptr; 
    RETURN_IF_FAILED(XPackageGetCurrentProcessPackageIdentifier(_countof(id), id)); 
 
    XPackageChunkSelector selector; 
    selector.type = XPackageChunkSelectorType::Chunk; 
    selector.chunk = chunkId; 
 
    XPackageInstallationMonitorHandle temp; 
    RETURN_IF_FAILED(XPackageCreateInstallationMonitor(id, 1, &selector, 1000, queue, &temp)); 
    std::unique_ptr<XPackageInstallationMonitorHandle> localMonitor(temp); 
 
    XPackageInstallationProgress progress; 
    XPackageGetInstallationProgress(localMonitor.get(), &progress); 
 
    if (!progress.completed) 
    { 
        RETURN_IF_FAILED(XPackageChangeChunkInstallOrder(id, 1, &selector)); 
        *monitor = localMonitor.release(); 
    } 
 
    return S_OK; 
} 
```


## Related topics

- [XR-074 Perte de connectivité aux services XBOX et des partenaires](/fr-CA/publishing/certification/xr/xr-074.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
- [Notes de version du SDK C++ PlayFab Multiplayer](/fr/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-and-matchmaking-release-notes.md)
- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr-CA/nda/nda-topic-directory.md)
- [XR-074 Perte de connectivité aux services XBOX et partenaires](/fr/publishing/certification/xr/xr-074.md)
