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

# 动态重排区块

> 动态重排区块

当游戏开始安装时,安装系统会按你定义的默认顺序获取并复制 *区块(chunks)*,即一组作为整体安装的文件集合。当游戏运行所需的区块安装完毕后,游戏可以为其余区块提供自定义的安装顺序,安装系统会先按此顺序处理这些区块,然后再回到默认的安装顺序。

通过这种方式,游戏可以根据各种不同情境或来自玩家的输入来控制内容的获取顺序。这种动态重排可以最大限度地减少玩家等待内容安装的时间,并让他们能选择希望优先获得哪些内容。

如果安装顺序变更后,某些区块是游玩或使用游戏所必需的,游戏可以使用 [流式安装:状态](/build/core-features/common/packaging/packaging-installstatus) 中描述的方法之一来监控安装状态。

## 如何更改区块的安装顺序

在下面的示例代码中,游戏很快就需要访问某个文件,以便让玩家继续游玩。定义了 **PrioritizeChunk** 函数,用于检查某个区块的当前安装状态。

* 如果该区块尚未安装,函数会请求流式系统优先安装该区块,然后返回一个用于监控该区块进度的安装监视器。

* 如果该区块已安装,函数返回空的监视器。

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

- [游戏打包、更新与流式安装测试](/zh-CN/build/core-features/common/packaging/title-packaging-streaming-install-testing.md)
- [MSIXVC2 打包概述](/zh-CN/build/core-features/common/packaging/overviews/packaging-msixvc2-overview.md)
- [使用 MSIXVC2 进行内容更新](/zh-CN/build/core-features/common/packaging/packaging-updates-msixvc2.md)
- [流式安装与智能交付概述](/zh-CN/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)
- [打包概述](/zh-CN/build/core-features/common/packaging/overviews/packaging.md)
