XPackageMountWithUiAsync
异步装载指定内容的安装,并向其返回装载句柄。 显示用户家长同意 UI 内容根据所有已登录用户的家长设置受到年龄限制。
语法
HRESULT XPackageMountWithUiAsync(
const char * packageIdentifier,
XAsyncBlock * async
) noexcept;
参数
packageIdentifier _In_z_
类型:const char *
唯一标识磁盘上安装的包的字符串。 传入从 XPackageEnumerationCallback 返回的 XPackageDetails 结构中的 packageIdentifier 字段。 有关包标识符的详细信息,请参阅管理和许可可下载内容 (DLC)。
async _Inout_
类型:XAsyncBlock *
用于监视异步调用的状态的 XAsyncBlock。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
备注
请注意,如果装载的内容不适合所有登录用户的年龄,则此 API 将向用户显示家长同意提示。 如果家长同意获得批准,则装载将成功。 如果在提示中拒绝家长同意,则装载将失败。
在此方案中,如果内容受年龄限制,游戏将以黑白方式呈现 DLC。 当用户选择要使用的一段 DLC 时,游戏中的外部代码将调用 MountDlc。
extern void RenderDlc(const char* packageId, const char* displayName, bool monochrome);
void ShowDlc()
{
// Enumerate all DLC for the game and render it to the user
XPackageEnumeratePackages(XPackageKind::Content, XPackageEnumerationScope::ThisAndRelated, nullptr,
[](void*, const XPackageDetails* details)
{
RenderDlc(details->packageIdentifier,
details->displayName,
details->ageRestricted);
});
}
HRESULT MountDlc(const char* packageId, XPackageMountHandle* handle)
{
XAsync async{};
RETURN_IF_FAILED(XPackageMountWithUiAsync(packageId, &async));
RETURN_IF_FAILED(XAsyncGetStatus(&async, true));
RETURN_IF_FAILED(XPackageMountWithUiResult(&async, handle));
return S_OK;
}
要求
头文件:XPackage.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机
另请参阅
XPackageMountWithUiResultXPackage
XPackageEnumeratePackages
XPackageEnumerationCallback
XPackageDetails
XPackageGetMountPath
XPackageGetMountPathSize
如何创建和使用面向电脑和 Xbox One 的可下载内容包 (DLC)。