XPackageEnumerateChunkAvailability
检查安装包并枚举与指定选择器匹配的所有区块的可用性。
语法
HRESULT XPackageEnumerateChunkAvailability(
const char* packageIdentifier,
XPackageChunkSelectorType type,
void* context,
XPackageChunkAvailabilityCallback* callback
)
参数
packageIdentifier _In_z_
类型:char*
唯一标识磁盘上安装的包的字符串。 有关包标识符的详细信息,请参阅管理和许可可下载内容 (DLC)。
type _In_
类型:XPackageChunkSelectorType
要枚举的属性的类型。
context _In_
类型:void*
要传递到在 callback 参数中指定的回调的上下文。
callback _In_
类型:XPackageChunkAvailabilityCallback*
要在完成时调用的回调。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
备注
注意
在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程。
XPackageEnumerateChunkAvailability 用于检查包并枚举特定类型的所有选择器的可用性。 例如,使用 XPackageChunkSelectorType::Language 调用它将枚举包中的所有语言属性及其可用性。
在下面的示例中,游戏将显示它支持的所有语言,并允许用户安装或删除某种语言。 为执行此操作,游戏将查询包以确定哪些语言可用以及是否安装它们。
HRESULT GetPackageLanguages(_Out_ std::map<std::string, bool>& languages)
{
char id[XPACKAGE_IDENTIFIER_MAX_LENGTH];
HRESULT hr = XPackageGetCurrentProcessPackageIdentifier(_countof(id), id);
if (FAILED(hr)) return hr;
hr = XPackageEnumerateChunkAvailability(id,
XPackageChunkSelectorType::Language, &languages,
[](void* context, const XPackageChunkSelector* sel, XPackageChunkAvailability av)
{
auto languages = static_cast<std::map<std::string, bool>*>(context);
switch (av)
{
case XPackageChunkAvailability::Ready:
case XPackageChunkAvailability::Pending:
languages->emplace(sel->language, true);
break;
case XPackageChunkAvailability::Installable:
languages->emplace(sel->language, false);
break;
case XPackageChunkAvailability::Unavailable:
default:
break;
}
return true;
});
return hr;
}
要求
头文件:XPackage.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机