XStoreDownloadAndInstallPackagesAsync
下载并安装指定的应用商店包。
语法
HRESULT XStoreDownloadAndInstallPackagesAsync(
const XStoreContextHandle storeContextHandle,
const char** storeIds,
size_t storeIdsCount,
XAsyncBlock* async
)
参数
storeContextHandle _In_
类型:XStoreContextHandle
XStoreCreateContext 返回的用户的应用商店上下文句柄。
storeIds _In_z_count_(storeIdsCount)
类型:char**
程序包标识符字符串的列表。 程序包标识符唯一地标识 Microsoft Store 中的程序包。 有关包标识符的详细信息,请参阅管理和许可可下载内容 (DLC)。
storeIdsCount _In_
类型:size_t
storeIds 中的 ID 数。
async _Inout_
类型:XAsyncBlock*
用于定义正在进行的异步工作的 XAsyncBlock。 XAsyncBlock 可用于轮询调用的状态和检索调用结果。 有关详细信息,请参阅 XAsyncBlock。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
备注
要检索此函数的下载和安装结果,请在调用此函数后调用 XStoreDownloadAndInstallPackagesResult。 检索下载和安装的项目数,请在调用此函数后调用 XStoreDownloadAndInstallPackagesResultCount。 结果计数函数很重要,因为它让您可以确定要传递给结果函数的数组的适当大小。
从正在运行的游戏调用此 API 时,下载将被视为高优先级,并且它们将按照在此 API 的 storeIds 参数中指定它们的顺序转到队列的开头。
以下代码段显示一个下载并安装应用商店包的示例。
void CALLBACK DownloadAndInstallPackagesCallback(XAsyncBlock* asyncBlock)
{
uint32_t count;
HRESULT hr = XStoreDownloadAndInstallPackagesResultCount(
asyncBlock,
&count);
if (FAILED(hr))
{
printf("Failed retrieve the installing packages count: 0x%x\r\n", hr);
return;
}
printf("Number of updates: %d", count);
auto packageIdentifiers = new char[count][XPACKAGE_IDENTIFIER_MAX_LENGTH];
hr = XStoreDownloadAndInstallPackagesResult(
asyncBlock,
count,
&packageIdentifiers[0]);
if (FAILED(hr))
{
delete[] packageIdentifiers;
printf("Failed retrieve the installing packages results: 0x%x\r\n", hr);
return;
}
for (uint32_t index = 0; index < count; index++)
{
printf("packageIdentifier: %s\r\n", packageIdentifiers[index]);
}
delete[] packageIdentifiers;
}
void DownloadAndInstallPackages(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char** storeIds, size_t storeIdsCount)
{
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = taskQueueHandle;
asyncBlock->callback = DownloadAndInstallPackagesCallback;
HRESULT hr = XStoreDownloadAndInstallPackagesAsync(
storeContextHandle,
storeIds,
storeIdsCount,
asyncBlock.get());
if (FAILED(hr))
{
printf("Failed to start download and install: 0x%x\r\n", hr);
return;
}
}
要求
头文件:XStore.h(包含在 XGameRuntime.h 中)
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机
另请参阅
XStore
XStoreDownloadAndInstallPackagesResult
XStoreDownloadAndInstallPackagesResultCount