XPackageChangeChunkInstallOrder

指定首先安装哪些选定的区块。

语法

HRESULT XPackageChangeChunkInstallOrder(  
        const char* packageIdentifier,  
        uint32_t selectorCount,  
        XPackageChunkSelector* selectors
)  

参数

packageIdentifier _In_z_
类型:char*

唯一标识磁盘上安装的包的字符串。 有关包标识符的详细信息,请参阅管理和许可可下载内容 (DLC)

selectorCount _In_
类型:uint32_t

selectors 参数中的选择器数。

selectors _In_reads_(selectorCount)
类型:XPackageChunkSelector*

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

返回值

类型:HRESULT

HRESULT 成功或错误代码。

备注

注意

在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程

XPackageChangeChunkInstallOrder 更新由指定选择器选择的区块,以便首先放置在安装队列中。 这可以采用选择器,而不仅仅是区块 ID 的数组。 您可以在此处传递更复杂的选择器,并且将使它们保持正常运行的区块全部推送到队列的前面。

您可以随时调用 XPackageChangeChunkInstallOrder,而不是仅在未安装这些区块时调用。 如果已安装这些区块,XPackageChangeChunkInstallOrder 将会忽略它们。 如果您提供的区块因智能传递而完全没有按计划安装,则情况也是如此。

在下面的示例中,为使用户继续玩游戏,游戏必须访问名为“soon”的文件。 定义了函数 PrioritizeChunk,用于检查该区块的当前安装状态。 如果尚未安装此区块,则此函数将要求流式系统首先安装该区块,然后返回可监视区块进度的安装监视器。 如果已安装区块,此函数返回 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 主机

另请参阅

XPackage
流式安装和智能交付