次の方法で共有


XStoreCreateContext

指定されたユーザーの Microsoft Store コンテキストを作成します。

構文

HRESULT XStoreCreateContext(  
         const XUserHandle user,  
         XStoreContextHandle* storeContextHandle  
)  

パラメーター

user _In_opt_
型: XUserHandle

Microsoft Store コンテキストを作成するユーザー。
このパラメーターは PC ゲームのみの場合はオプションであり、単純に nullptr 値を渡します。 PC では、Microsoft Store にサインインしているユーザーが自動的に使用され、このパラメーターは無視されます。 本体ゲームでは有効な XUser が必要です。

storeContextHandle _Out_
型: XStoreContextHandle*

成功した場合、作成された Microsoft Store コンテキストが格納されます。

戻り値

型: HRESULT

HRESULT 成功またはエラー コード。

解説

注: コンソールで、この関数によって作成された XStoreContextHandle は、Suspend または Quick Resume イベント後に無効になります。 このような条件に安全に対処するには、XStoreContextHandle を閉じて、一時停止状態から再開するたびに再作成することをお勧めします。

注意

この関数は、時間依存のスレッドで呼び出すのに安全ではありません。 詳細については、「時間依存のスレッド」を参照してください。

この関数によって作成された XStoreContextHandle が終了したら、XStoreCloseContextHandle を使用して閉じる必要があります。 ハンドルを閉じないと、メモリ リークが発生します。 Microsoft Store コンテキストは、複数の XStore API 呼び出しの中で情報を取得するユーザーを特定するために使用されます。 次のコード スニペットでは、Microsoft Store コンテキスト作成の例を示します。

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