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 主机

另请参阅

XPersistentLocalStorage
如何使用新的 MicrosoftGame.config 文件
本地存储