XStoreCreateContext

创建指定用户的应用商店上下文。

语法

HRESULT XStoreCreateContext(  
         const XUserHandle user,  
         XStoreContextHandle* storeContextHandle  
)  

参数

user _In_opt_
类型:XUserHandle

要为其创建应用商店上下文的用户。
此参数仅适用于电脑游戏:只需传递 nullptr 值即可。 在电脑上,将自动使用登录到 Microsoft Store 的用户,并且此参数将被忽略。 主机游戏需要有效的 XUser。

storeContextHandle _Out_
类型:XStoreContextHandle*

成功时包含创建的存储上下文。

返回值

类型:HRESULT

HRESULT 成功或错误代码。

备注

注意:在主机上,此函数创建的 XStoreContextHandle 将在暂停或快速恢复事件后失效。 为了安全地处理这些情况,建议关闭 XStoreContextHandle 并在游戏从暂停状态恢复时重新创建它。

注意

在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程

完成使用此函数创建的 XStoreContextHandle 后,必须使用 XStoreCloseContextHandle 将其关闭。 未能关闭句柄将导致内存泄漏。 应用商店上下文用于标识用户以从多个 XStore API 调用中检索信息。 以下代码段显示一个创建应用商店上下文的示例。

void CALLBACK GameLicenseChangedCallback(void* context)
{
    UNREFERENCED_PARAMETER(context);
    printf("**** License Changed ****\r\n");
}

void CreateStoreContextHandle(XUserHandle userHandle, XTaskQueueHandle taskQueueHandle)
{
    // As a rule, it would be a good idea to create one of these
    // and keep it alive through the lifetime of the game
    XStoreContextHandle storeContextHandle;

    HRESULT hr = XStoreCreateContext(userHandle, &storeContextHandle);
    if (FAILED(hr))
    {
        printf("Failed creating store context: 0x%x\r\n", hr);
        return;
    }

    XTaskQueueRegistrationToken gameLicenseChangedToken = { 0 };
    hr = XStoreRegisterGameLicenseChanged(
        storeContextHandle,
        taskQueueHandle,
        storeContextHandle,
        GameLicenseChangedCallback,
        &gameLicenseChangedToken);

    if (FAILED(hr))
    {
        printf("Failed register for game license changed callback: 0x%x\r\n", hr);
        XStoreCloseContextHandle(storeContextHandle);
        return;
    }

    //Unregistering the license changed event and closing the XStoreContextHandle would usually go in the cleanup/shutdown sections of your game code. 
    XStoreUnregisterGameLicenseChanged(
        storeContextHandle,
        gameLicenseChangedToken,
        true);

    XStoreCloseContextHandle(storeContextHandle);
}

要求

头文件:XStore.h(包含在 XGameRuntime.h 中)

库:xgameruntime.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XStore
XStoreCloseContextHandle
XStoreRegisterGameLicenseChanged