> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reordenação dinâmica de chunks

> Reordenação dinâmica de chunks

Quando a instalação de um título começa, o sistema de instalação adquire e copia *chunks*, coleções de arquivos a serem instalados como um grupo, de acordo com a ordem padrão definida por você. Depois que os chunks necessários para a execução do título forem instalados, o título poderá fornecer uma ordem personalizada para a instalação dos chunks restantes, que será processada pelo sistema de instalação antes de ele retornar à ordem de instalação padrão.

Dessa forma, os títulos podem controlar a ordem de aquisição do conteúdo em resposta a várias situações diferentes ou tipos de entrada dos usuários. Essa reordenação dinâmica pode minimizar o tempo que os usuários passam esperando a instalação do conteúdo e lhes oferece a opção de escolher o que desejam ter disponível primeiro.

Depois que a ordem de instalação for alterada, se os chunks forem necessários para a jogabilidade ou para o uso do título, ele poderá monitorar o status da instalação usando um dos métodos descritos em [Instalação por streaming: status](https://docs.xbox.com/pt-BR/build/core-features/common/packaging/packaging-installstatus.md).

## Como alterar a ordem em que os chunks são instalados

No código de exemplo a seguir, um jogo precisa acessar um arquivo em breve para permitir que o usuário continue jogando. A função **PrioritizeChunk** é definida e verifica o status atual de instalação de um chunk.

* Se o chunk ainda não estiver instalado, a função solicita que o sistema de streaming instale esse chunk primeiro e, em seguida, retorna um monitor de instalação do progresso do chunk.

* Se o chunk já estiver instalado, a função retorna um 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

- [Instalação por streaming e Intelligent Delivery: uma visão geral](https://docs.xbox.com/pt-BR/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)
- [Empacotamento e implantação para títulos do XBOX GDK](https://docs.xbox.com/pt-BR/build/core-features/common/packaging/index.md)
- [Empacotamento de títulos, atualizações e teste de instalação por streaming](https://docs.xbox.com/pt-BR/build/core-features/common/packaging/title-packaging-streaming-install-testing.md)
- [Intelligent Delivery](https://docs.xbox.com/pt-BR/build/core-features/common/packaging/overviews/intelligentdelivery.md)
- [Atualizações de conteúdo com MSIXVC2](https://docs.xbox.com/pt-BR/build/core-features/common/packaging/packaging-updates-msixvc2.md)
