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

# Reordenación dinámica de fragmentos

> Reordenación dinámica de fragmentos

Cuando comienza la instalación de un título, el sistema de instalación adquiere y copia *fragmentos*, colecciones de archivos que se instalan como grupo, según el orden predeterminado que usted haya definido. Una vez instalados los fragmentos necesarios para que el título se ejecute, el título puede proporcionar un orden personalizado para la instalación de los fragmentos restantes, que el sistema de instalación procesará antes de volver al orden de instalación predeterminado.

De esta manera, los títulos pueden controlar el orden de adquisición del contenido en respuesta a diversas situaciones o tipos de entrada de los usuarios. Esta reordenación dinámica puede minimizar el tiempo que los usuarios pasan esperando a que se instale el contenido y les ofrece la posibilidad de elegir qué quieren tener disponible primero.

Después de cambiar el orden de instalación, si se requieren fragmentos para la jugabilidad o para el uso del título, este puede supervisar el estado de la instalación mediante uno de los métodos descritos en [Instalación por streaming: estado](/build/core-features/common/packaging/packaging-installstatus).

## Cómo cambiar el orden en que se instalan los fragmentos

En el siguiente código de ejemplo, un juego necesita acceder pronto a un archivo para que el usuario pueda seguir jugando. Se define la función **PrioritizeChunk**, que comprueba el estado de instalación actual de un fragmento.

* Si el fragmento aún no está instalado, la función pide al sistema de streaming que instale ese fragmento primero y, a continuación, devuelve un monitor de instalación del progreso del fragmento.

* Si el fragmento ya está instalado, la función devuelve un monitor nulo.

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

- [Empaquetado de títulos, actualizaciones y pruebas de instalación por streaming](/es/build/core-features/common/packaging/title-packaging-streaming-install-testing.md)
- [Intelligent Delivery](/es/build/core-features/common/packaging/overviews/intelligentdelivery.md)
- [Instalación por streaming e Intelligent Delivery: información general](/es/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)
- [Empaquetado e implementación para títulos de XBOX con el GDK](/es/build/core-features/common/packaging/index.md)
- [Actualizaciones de contenido con MSIXVC2](/es/build/core-features/common/packaging/packaging-updates-msixvc2.md)
