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

# XPackageChangeChunkInstallOrder

> XPackageChangeChunkInstallOrder

# XPackageChangeChunkInstallOrder

指定要优先安装的选定区块。

## 语法

```cpp theme={null}
HRESULT XPackageChangeChunkInstallOrder(  
        const char* packageIdentifier,  
        uint32_t selectorCount,  
        XPackageChunkSelector* selectors
)  
```

### 参数

*packageIdentifier*   \_In\_z\_\
类型：char\*

唯一标识磁盘上已安装程序包的字符串。有关程序包标识符的详细信息，请参阅[管理和许可可下载内容 (DLC)](https://docs.xbox.com/zh-CN/publishing/xstore-commerce/xstore-dlc.md)。

*selectorCount*   \_In\_\
类型：uint32\_t

*selectors* 参数中的选择器数。

*selectors*   \_In\_reads\_(selectorCount)\
类型：[XPackageChunkSelector\*](https://docs.xbox.com/zh-CN/reference/system/xpackage/structs/xpackagechunkselector.md)

指定要影响的区块类型的选择器数组。

### 返回值

类型：HRESULT

HRESULT 成功或错误代码。

## 备注

> [!NOTE]
>
> 此函数在时间敏感线程上调用不安全。有关详细信息，请参阅[时间敏感线程](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)。

**XPackageChangeChunkInstallOrder** 将由指定选择器选中的区块更新为在安装队列中排在最前面。它可以接受选择器，而不仅仅是区块 ID 数组。你可以在此处传递更复杂的选择器，构成它们的所有区块都将被推到队列的前面。

你可以随时调用 **XPackageChangeChunkInstallOrder**，而不仅在区块尚未安装时。如果区块已经安装，**XPackageChangeChunkInstallOrder** 会忽略它们。如果由于 Intelligent Delivery 的原因所提供的区块根本不计划安装，也是如此。

在下面的示例中，为了让用户继续游玩，游戏必须访问名为 “soon” 的文件。定义了函数 PrioritizeChunk，用于检查区块的当前安装状态。如果区块尚未安装，该函数会请求流式系统安装它，并返回一个可以监视区块进度的安装监视器。如果区块已经安装，该函数返回空监视器。

```cpp theme={null}
HRESULT PrioritizeChunk( 
    XTaskQueueHandle queue, uint32_t chunkId, XPackageInstallationMonitorHandle* monitor) 
{ 
    char id[XPACKAGE_IDENTIFIER_MAX_LENGTH]; 
 
    *monitor = nullptr; 
    HRESULT hr = XPackageGetCurrentProcessPackageIdentifier(_countof(id), id); 
    if (FAILED(hr)) return hr; 
 
    XPackageChunkSelector selector; 
    selector.type = XPackageChunkSelectorType::Chunk; 
    selector.chunkId = chunkId; 
 
    hr = XPackageCreateInstallationMonitor(id, 1, &selector, 1000, queue, monitor); 
 
    if (SUCCEEDED(hr)) 
    { 
        XPackageInstallationProgress progress; 
        XPackageGetInstallationProgress(*monitor, &progress); 
    }

    if (!progress.completed) 
    { 
        hr = XPackageChangeChunkInstallOrder(id, 1, &selector); 
    } 
 
    if (progress.completed || FAILED(hr)) 
    { 
        XPackageCloseInstallationMonitorHandle(*monitor); 
        *monitor = nullptr; 
    } 
 
    return hr; 
} 
```

## 要求

**头文件：** XPackage.h

**库：** xgameruntime.lib

**支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

## 概念性文档

* [时间敏感线程](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## 另请参阅

[XPackage](https://docs.xbox.com/zh-CN/reference/system/xpackage/xpackage_members.md)\
[流式安装和 Intelligent Delivery](https://docs.xbox.com/zh-CN/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)


## Related topics

- [XPackage（API 内容）](https://docs.xbox.com/zh-CN/reference/system/xpackage/xpackage_members.md)
- [在 Unity 项目中使用 GDK API 的 C# 包装器](https://docs.xbox.com/zh-CN/build/gdk-and-engines/unity/unity-api-wrappers.md)
- [XPackageInstallChunks](https://docs.xbox.com/zh-CN/reference/system/xpackage/functions/xpackageinstallchunks.md)
- [XPackageInstallChunksAsync](https://docs.xbox.com/zh-CN/reference/system/xpackage/functions/xpackageinstallchunksasync.md)
- [XPackageInstallChunksResult](https://docs.xbox.com/zh-CN/reference/system/xpackage/functions/xpackageinstallchunksresult.md)
