다음을 통해 공유


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은 일시 중단 또는 빠른 다시 시작 이벤트 후에 무효화됩니다. 해당 조건을 안전하게 처리하려면 일시 중단 상태에서 게임이 다시 시작될 때마다 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