XPersistentLocalStorageMountForPackage
将指定包的持久本地存储 (PLS) 装载为只读光盘。
语法
HRESULT XPersistentLocalStorageMountForPackage (
const char* packageIdentifier,
XPackageMountHandle* mountHandle
)
参数
packageIdentifier _In_
类型: char*
唯一标识 PLS 所属的存储包的字符串。 有关包标识符的详细信息,请参阅管理和许可可下载内容 (DLC)。
mountHandle _Out_writes_to_ (pathSize,pathUsed)
类型:XPackageMountHandle
安装 PLS 的光盘的装载手柄。
返回值
类型:HRESULT
如果成功,则返回 S_OK;否则返回错误代码。 有关错误代码的列表,请参阅错误代码。 如果函数因指定游戏的 PLS 不存在而失败,则它将设置为 FILE_NOT_FOUND。 如果函数因尝试访问未启用可共享持久本地存储的游戏的 PLS 而失败,则它将 ACCESS_DENIED。
备注
注意
在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程。
要使游戏支持可共享 PLS,需要在 MicrosoftGame.config 中声明为 。有关可共享持久本地存储的更多详细信息,请参阅 本地存储
注意
如果游戏将 PLS 标记为可共享,则它应确保在暂停游戏之前关闭其 PLS 的所有句柄,否则游戏暂停将失败,游戏将终止。
以下代码片段演示了访问另一个游戏的可共享 PLS 的示例。
HRESULT MountPersistentLocalStorageForPackage(char* packageIdentifier)
{
XPackageMountHandle* mountHandle;
HRESULT hr = XPersistentLocalStorageMountForPackage (packageIdentifier, &mountHandle);
if (FAILED(hr)) return hr;
size_t pathSize;
hr = XGetMountPathSize(mountHandle, &pathSize);
if (FAILED(hr))
{
XPackageCloseMountHandle(mountHandle);
return hr;
}
char* path = new (std::nothrow) char[pathSize];
if (path == nullptr)
{
XPackageCloseMountHandle (mountHandle);
return E_OUTOFMEMORY;
}
hr = XPackageGetMountPath (mountHandle, pathSize, path);
if (FAILED(hr))
{
XPackageCloseMountHandle(mountHandle);
delete[] path;
return hr;
}
printf("PLS %s mounted at path %s\n", packageIdentifier, path);
delete[] path;
// Unmounts PLS path if this is the last handle
// to it.
XPackageCloseMountHandle(mountHandle);
return S_OK;
}
要求
头文件:XPersistentLocalStorage.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机