> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GDK용 Unity C# API 래퍼

> GDK for Unity 패키지의 XGamingRuntime C# 네임스페이스 레퍼런스: 명명 규칙, HRESULT 처리, 비동기 패턴, 네이티브 vs 관리형 예시.

관리형 코드에서 Microsoft Game Development Kit(GDK)와 XBOX 서비스 API를 올바르게 호출하기 위해 API 래퍼를 어떻게 사용하는지 이 항목에서 확인하세요.

## Microsoft Game Development Kit(GDK) API 액세스

Unity에서 Microsoft GDK API 패키지를 임포트한 후에는 XGamingRuntime 네임스페이스 아래에서 기능을 사용할 수 있습니다. 모든 Gaming Runtime API는 SDK 클래스의 정적 메서드로 제공됩니다. 모든 XBOX 서비스 API는 SDK.XBL 클래스의 정적 메서드로 제공됩니다. 다음 예시가 이를 보여줍니다.

```cpp theme={null}
using System;

// "GDK" 기능이 제공되는 네임스페이스입니다.

using XGamingRuntime;

namespace TestGame
{
    static class Program
    {
        static void Main()
        {
            // 모든 API는 SDK 클래스의 정적 메서드로 접근합니다.
            Int32 hr = SDK.XGameRuntimeInitialize();

            // 모든 Xbox 서비스 API는 SDK.XBL 클래스의 정적 메서드로 접근합니다.
            Int32 hr = SDK.XBL.XblInitialize(SCID);
            ...
        }
    }
}
```

## API 커버리지와 규칙

<Note>
  모든 API가 패키지를 통해 제공되는 것은 아닙니다. 전체 목록은 이 항목의 뒷부분에 있는 Microsoft Game Development Kit(GDK) 및 XBOX 서비스 API 목록을 참조하세요.
</Note>

규칙:

* API 이름은 가능한 한 GDK의 대응 API와 일치합니다.
* 예외를 사용하지 않습니다. 오류는 HRESULT로 전달됩니다.
* 객체 지향 캡슐화 없는 플랫한 API 표면.
* 매개변수를 설정하는 API에서는 out 매개변수를 사용합니다.
* 비동기 메서드는 콜백을 사용합니다. 자세한 내용은 다음 섹션을 참조하세요.

## 비동기 프로그래밍 모델

대부분의 비동기 API는 마지막 매개변수로 콜백을 받습니다. 예시는 다음과 같습니다.

```cpp theme={null}
using System;

using XGamingRuntime;

class SignInManager
{
    public void AddUser()
    {
        SDK.XUserAddAsync(XUserAddOptions.None, this.OnUserAddComplete);
    }

    private void OnUserAddComplete(Int32 hresult, XUserHandle userHandle)
    {
        // 결과를 확인한 뒤 핸들로 원하는 작업을 수행합니다.
    }
}
```

스레딩 모델에 대한 정보는 다음과 같습니다.

* 비동기 메서드는 즉시 실행되며, 작업은 스레드 풀에서 사용 가능한 스레드에서 수행됩니다.
  * 스레드 풀은 SDK.XGameRuntimeInitialize() 호출 후 내부적으로 초기화됩니다.
  * 스레드 풀 구성 옵션은 노출되지 않습니다.
* 결과 콜백은 디스패치(예: SDK.XTaskQueueDispatch())가 호출된 후 실행됩니다. 따라서 이상적으로는 게임의 업데이트 루프에서 \_자주 호출\_하는 것이 중요합니다.
* 결과 콜백은 디스패치를 호출한 스레드에서 실행됩니다.

## 네이티브 API와 관리형 래퍼의 예시 차이

네이티브 API와 관리형 래퍼는 차이가 거의 없습니다. 참고로 다음 두 예시는 관리형과 네이티브 코드에서 **XUserAddAsync**와 **XblAchievementsUpdateAchievementAsync**의 시그니처와 호출을 보여줍니다.

### XUserAddAsync 예시

XUserAddAsync의 네이티브 시그니처는 다음과 같습니다.

```cpp theme={null}
STDAPI XUserAddAsync(
    _In_ XUserAddOptions options,
    _Inout_ XAsyncBlock* async
    ) noexcept;

STDAPI XUserAddResult(
    _Inout_ XAsyncBlock* async,
    _Out_ XUserHandle* newUser
    ) noexcept;
```

XUserAddAsync의 관리형 시그니처는 다음과 같습니다.

```csharp theme={null}
public static void XGamingRuntime.SDK.XUserAddAsync(
    XUserAddOptions options,
    XUserAddCompleted completionRoutine
);

public delegate void XUserAddCompleted(Int32 hresult, XUserHandle userHandle);
```

네이티브 코드에서 XUserAddAsync의 함수를 호출하는 예시는 다음과 같습니다.

```cpp theme={null}
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = _queue;
asyncBlock->context = this;
asyncBlock->callback = [](XAsyncBlock* ab)
{
    auto asyncBlock = std::unique_ptr<XAsyncBlock>(ab);
    XUserHandle user;
    RETURN_IF_FAILED(XUserAddResult(ab, &user));
};

if (SUCCEEDED_LOG(XUserAddAsync(
    XUserAddOptions::AddDefaultUserAllowingUI,
    asyncBlock.get())))
{
    // 호출이 성공했으므로 std::unique_ptr의 XAsyncBlock* 소유권을 해제합니다. 콜백이 소유권을 인수합니다.
    // 호출이 실패하면 std::unique_ptr가 소유권을 유지하고 XAsyncBlock*을 삭제합니다.
    asyncBlock.release();
}
```

XUserAddAsync 함수를 호출하는 관리형 예시는 다음과 같습니다.

```csharp theme={null}
Managed add user

SDK.XUserAddAsync(
    XUserAddOptions.AddDefaultUserAllowingUI,
    (hr, userHandle) =>
    {
        LOG("XUserAddAsync", hr);
        if (hr >= 0)
        {
            this.userHandle = userHandle;
            // 로그인 성공.
        }
        else
        {
            // 로그인 실패.
        }
    }
);
```

사용자가 커스텀 큐를 사용하려 하거나 API가 콜백 구현을 포함하지 않는 경우, 다음 예시는 XAsyncBlock을 만드는 방법을 보여줍니다. 또한 사용자는 큐의 적절한 디스패치와 완료를 보장해야 합니다. 자세한 내용은 [XTaskQueue 라이브러리 개요](https://learn.microsoft.com/gaming/gdk/_content/gc/features/common/async/async-libraries/async-library-xtaskqueue)를 참조하세요.

```csharp theme={null}

XAsyncBlock xAsyncBlock = new XAsyncBlock(queue, (_async) =>
{
    XUserHandle userHandle;
    int hr = SDK.XUserAddResult(_async, out userHandle);

    if (hr >= 0)
    {
        this.userHandle = userHandle;
        // 로그인 성공.
    }
    else
    {
        // 로그인 실패.
    }
}, IntPtr.Zero);

SDK.XUserAddAsync(XUserAddOptions.AddDefaultUserAllowingUI, xAsyncBlock);
```

### XblAchievementsUpdateAchievementAsync 예시

XblAchievementsUpdateAchievementAsync의 네이티브 시그니처는 다음과 같습니다.

```cpp theme={null}
STDAPI XblAchievementsUpdateAchievementAsync(
    _In_ XblContextHandle xboxLiveContext,
    _In_ uint64_t xboxUserId,
    _In_z_ const char* achievementId,
    _In_ uint32_t percentComplete,
    _In_ XAsyncBlock* async
) XBL_NOEXCEPT;
```

XblAchievementsUpdateAchievementAsync의 관리형 시그니처는 다음과 같습니다.

```csharp theme={null}
public static void XGamingRuntime.SDK.XBL.XblAchievementsUpdateAchievementAsync(
    XblContextHandle xboxLiveContext,
    UInt64 xboxUserId,
    string achievementId,
    UInt32 percentComplete,
    XblAchievementsUpdateAchievementResult completionRoutine);

public delegate void XblAchievementsUpdateAchievementResult(Int32 hresult);
```

네이티브 코드에서 XblAchievementsUpdateAchievementAsync 함수를 호출하는 예시는 다음과 같습니다.

```cpp theme={null}
auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = Data()->queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // XAsyncBlock*의 소유권 인수
    auto result = XAsyncGetStatus(asyncBlock, false);
    if (SUCCEEDED(result))
    {
        // 업적 업데이트됨.
    }
    else if (result == HTTP_E_STATUS_NOT_MODIFIED)
    {
        // 업적이 수정되지 않음.
    }
    else
    {
        // 업적 업데이트 실패.
    }
};

HRESULT hr = XblAchievementsUpdateAchievementAsync(
    Data()->xboxLiveContext,
    Data()->xboxUserId,
    achievementId.c_str(),
    percentComplete,
    asyncBlock.get()
);
if (SUCCEEDED(hr))
{
    // 호출이 성공했으므로 std::unique_ptr의 XAsyncBlock* 소유권을 해제합니다. 콜백이 소유권을 인수합니다.
    // 호출이 실패하면 std::unique_ptr가 소유권을 유지하고 XAsyncBlock*을 삭제합니다.
    asyncBlock.release();
}
```

XblAchievementsUpdateAchievementAsync 함수를 호출하는 관리형 예시는 다음과 같습니다.

```csharp theme={null}
SDK.XBL.XblAchievementsUpdateAchievementAsync(
    xblContextHandle,
    xboxUserId,
    achievementId,
    percentComplete
    (achievementUpdateResult) => {
        LOG("XblAchievementsUpdateAchievementAsync result", achievementUpdateResult);
        if (achievementUpdateResult == 0)
        {
        	//  업적 업데이트됨.
       	}
        else if (achievementUpdateResult == HTTP_E_STATUS_NOT_MODIFIED) //  0x80190130
        {
       		//  업적이 수정되지 않음.
       	}
        else
        {
       		//  업적 업데이트 실패.
       	}
    }
);
```

### 관리형 코드에서 XBOX Services API(XSAPI) 초기화

참고로, 다음은 관리형 코드에서 [XSAPI](https://learn.microsoft.com/gaming/gdk/_content/gc/services/fundamentals/xbox-services-api/live-gs-xbl-apis)의 초기화입니다. 이는 관리형 코드에서의 XSAPI 시그니처입니다.

```csharp theme={null}
public static Int32 XGamingRuntime.SDK.XBL.XblInitialize(string scid)
```

다음은 관리형 코드에서의 XSAPI 호출 패턴 예시입니다.

```csharp theme={null}
Int32 hresult = SDK.XBL.XblInitialize(SCID);
```

## 관리형 래퍼에 포함된 Microsoft Game Development Kit(GDK) API 목록

다음 Microsoft Game Development Kit(GDK) API가 GDK Unity 패키지의 관리형 래퍼에 포함되어 있습니다. Microsoft Game Development Kit(GDK) API에 대한 자세한 내용은 [System API 레퍼런스](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/gc-reference-system-toc)를 참조하세요.

* [XAccessibility](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xaccessibility/xaccessibility_members)
  * XClosedCaptionGetProperties
  * XClosedCaptionSetEnabled
  * XHighContrastGetMode
  * XSpeechToTextSendString
  * XSpeechToTextSetPositionHint
  * XSpeechToTextBeginHypothesisString
  * XSpeechToTextUpdateHypothesisString
  * XSpeechToTextFinalizeHypothesisString
  * XSpeechToTextCancelHypothesisString
* [XAppCapture](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xappcapture/xappcapture_members)
  * XAppBroadcastGetStatus
  * XAppBroadcastIsAppBroadcasting
  * XAppBroadcastShowUI
  * XAppBroadcastRegisterIsAppBroadcastingChanged
  * XAppCaptureCloseLocalStream
  * XAppCaptureCloseScreenshotStream
  * XAppCaptureEnableRecord
  * XAppCaptureDisableRecord
  * XAppBroadcastUnregisterIsAppBroadcastingChanged
  * XAppCaptureMetadataAddStringEvent
  * XAppCaptureMetadataAddInt32Event
  * XAppCaptureMetadataAddDoubleEvent
  * XAppCaptureMetadataStartStringState
  * XAppCaptureMetadataStartInt32State
  * XAppCaptureMetadataStartDoubleState
  * XAppCaptureMetadataStopState
  * XAppCaptureMetadataStopAllStates
  * XAppCaptureMetadataRemainingStorageBytesAvailable
  * XAppCaptureOpenScreenshotStream
  * XAppCaptureReadScreenshotStream
  * XAppCaptureRecordDiagnosticClip
  * XAppCaptureTakeDiagnosticScreenshot
  * XAppCaptureTakeScreenshot
  * XAppCaptureRegisterMetadataPurged
  * XAppCaptureUnRegisterMetadataPurged
  * XAppCaptureReadLocalStream
  * XAppCaptureRecordTimespan
  * XAppCaptureGetVideoCaptureSettings
* [XAsync](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xasync/xasync_members)
  * XAsyncGetStatus
  * XAsyncGetResultSize
  * XAsyncCancel
  * XAsyncRun
* [XDisplay](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xdisplay/xdisplay_members)
  * XDisplayTryEnableHdrMode
  * XDisplayAcquireTimeoutDeferral
  * XDisplayCloseTimeoutDeferralHandle
* [XError](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xerror/xerror_members)
  * XErrorSetCallback
  * XErrorSetOptions
* [XGameEvent](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgameevent/xgameevent_members)
  * XGameEventWrite
* [XGame](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgame/xgame_members)
  * XGameGetXboxTitleId
  * XLaunchNewGame
  * XLaunchRestartOnCrash
* [XGameInvite](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgameinvite/xgameinvite_members)
  * XGameInviteRegisterForEvent
  * XGameInviteUnregisterForEvent
* [XGameProtocol](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgameprotocol/xgameprotocol_members)
  * XGameProtocolRegisterForActivation
  * XGameProtocolUnregisterForActivation
* [XGameRuntimeFeature](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgameruntimefeature/xgameruntimefeature_members)
  * XGameRuntimeIsFeatureAvailable
* [XGameRuntimeInit](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgameruntimeinit/xgameruntimeinit_members)
  * XGameRuntimeInitialize
  * XGameRuntimeUninitialize
* [XGameSave](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgamesave/xgamesave_members)
  * XGameSaveInitializeProvider
  * XGameSaveInitializeProviderAsync
  * XGameSaveInitializeProviderResult
  * XGameSaveCloseProvider
  * XGameSaveGetRemainingQuota
  * XGameSaveGetRemainingQuotaAsync
  * XGameSaveGetRemainingQuotaResult
  * XGameSaveDeleteContainer
  * XGameSaveDeleteContainerAsync
  * XGameSaveDeleteContainerResult
  * XGameSaveCreateContainer
  * XGameSaveCloseContainer
  * XGameSaveGetContainerInfo
  * XGameSaveEnumerateContainerInfo
  * XGameSaveEnumerateContainerInfoByName
  * XGameSaveEnumerateBlobInfo
  * XGameSaveEnumerateBlobInfoByName
  * XGameSaveReadBlobData
  * XGameSaveReadBlobDataAsync
  * XGameSaveReadBlobDataResult
  * XGameSaveCreateUpdate
  * XGameSaveCloseUpdateHandle
  * XGameSaveSubmitBlobWrite
  * XGameSaveSubmitBlobDelete
  * XGameSaveSubmitUpdate
  * XGameSaveSubmitUpdateAsync
  * XGameSaveSubmitUpdateResult
* [XGameSaveFiles](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgamesavefiles/xgamesavefiles_members)
  * XGameSaveFilesGetFolderWithUiAsync
  * XGameSaveFilesGetFolderWithUiResult
  * XGameSaveFilesGetRemainingQuota
* [XGameStreaming](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgamestreaming/xgamestreaming_members)
  * XGameStreamingInitialize
  * XGameStreamingUninitialize
  * XGameStreamingIsStreaming
  * XGameStreamingGetClientCount
  * XGameStreamingGetClients
  * XGameStreamingGetConnectionState
  * XGameStreamingRegisterConnectionStateChanged
  * XGameStreamingUnregisterConnectionStateChanged
  * XGameStreamingHideTouchControls
  * XGameStreamingHideTouchControlsOnClient
  * XGameStreamingShowTouchControlLayout
  * XGameStreamingShowTouchControlLayoutOnClient
  * XGameStreamingRegisterClientPropertiesChanged
  * XGameStreamingUnregisterClientPropertiesChanged
  * XGameStreamingGetStreamPhysicalDimensions
  * XGameStreamingGetStreamAddedLatency
  * XGameStreamingGetServerLocationNameSize
  * XGameStreamingGetServerLocationName
  * XGameStreamingIsTouchInputEnabled
  * XGameStreamingGetLastFrameDisplayed
  * XGameStreamingUpdateTouchControlsState
  * XGameStreamingUpdateTouchControlsStateOnClient
  * XGameStreamingShowTouchControlsWithStateUpdate
  * XGameStreamingShowTouchControlsWithStateUpdateOnClient
  * XGameStreamingGetTouchBundleVersionNameSize
  * XGameStreamingGetTouchBundleVersion
  * XGameStreamingGetClientIPAddress
  * XGameStreamingGetSessionId
  * XGameStreamingGetDisplayDetails
  * XGameStreamingSetResolution
* [XGameUI](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xgameui/xgameui_members)
  * XGameUIShowAchievementsAsync
  * XGameUIShowAchievementsResult
  * XGameUIShowMessageDialogAsync
  * XGameUIShowMessageDialogResult
  * XGameUIShowErrorDialogAsync
  * XGameUIShowErrorDialogResult
  * XGameUIShowTextEntryAsync
  * XGameUIShowTextEntryResultSize
  * XGameUIShowTextEntryResult
  * XGameUITextEntryClose
  * XGameUITextEntryGetExtents
  * XGameUITextEntryOpen
  * XGameUITextEntryGetState
  * XGameUITextEntryUpdatePositionHint
  * XGameUITextEntryUpdateVisibility
  * XGameUISetNotificationPositionHint
  * XGameUIShowSendGameInviteAsync
  * XGameUIShowSendGameInviteResult
  * XGameUIShowMultiplayerActivityGameInviteAsync
  * XGameUIShowMultiplayerActivityGameInviteResult
  * XGameUIShowWebAuthenticationAsync
  * XGameUIShowWebAuthenticationResult
  * XGameUIShowWebAuthenticationWithOptionsAsync
  * XGameUIShowWebAuthenticationResultSize
  * XGameUIShowPlayerProfileCardAsync
  * XGameUIShowPlayerProfileCardResult
  * XGameUIShowPlayerPickerAsync
  * XGameUIShowPlayerPickerResultCount
  * XGameUIShowPlayerPickerResult
* [XLauncher](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xlauncher/xlauncher_members)
  * XLaunchUri
* [XNetworking](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/networking/xnetworking/xnetworking_members)
  * XNetworkingGetConnectivityHint
  * XNetworkingQueryConfigurationSetting
  * XNetworkingQueryPreferredLocalUdpMultiplayerPort
  * XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync
  * XNetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult
  * XNetworkingQuerySecurityInformationForUrlAsync
  * XNetworkingQuerySecurityInformationForUrlAsyncResultSize
  * XNetworkingQuerySecurityInformationForUrlAsyncResult
  * XNetworkingQuerySecurityInformationForUrlUtf16Async
  * XNetworkingQuerySecurityInformationForUrlUtf16AsyncResultSize
  * XNetworkingQuerySecurityInformationForUrlUtf16AsyncResult
  * XNetworkingQueryStatistics
  * XNetworkingRegisterConnectivityHintChanged
  * XNetworkingUnregisterConnectivityHintChanged
  * XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged
  * XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged
  * XNetworkingVerifyServerCertificate
* [XPackage](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xpackage/xpackage_members)
  * XPackageGetCurrentProcessPackageIdentifier
  * XPackageIsPackagedProcess
  * XPackageGetUserLocale
  * XPackageEnumeratePackages
  * XPackageFindChunkAvailability
  * XPackageChangeChunkInstallOrder
  * XPackageInstallChunks
  * XPackageUninstallChunks
  * XPackageInstallChunksAsync
  * XPackageInstallChunksResult
  * XPackageRegisterPackageInstalled
  * XPackageUnregisterPackageInstalled
  * XPackageEnumerateFeatures
  * XPackageEnumerateChunkAvailability
  * XPackageMount
  * XPackageMountWithUiAsync
  * XPackageMountWithUiResult
  * XPackageGetMountPath
  * XPackageGetMountPathSize
  * XPackageCloseMountHandle
  * XPackageCreateInstallationMonitor
  * XPackageCloseInstallationMonitorHandle
  * XPackageGetInstallationProgress
  * XPackageUpdateInstallationMonitor
  * XPackageRegisterInstallationProgressChanged
  * XPackageUnregisterInstallationProgressChanged
  * XPackageEstimateDownloadSize
  * XPackageGetWriteStats
  * XPackageUninstallUWPInstance
  * XPackageUninstallPackage
* [XPersistentLocalStorage](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xpersistentlocalstorage/xpersistentlocalstorage_members)
  * XPersistentLocalStorageGetPathSize
  * XPersistentLocalStorageGetPath
  * XPersistentLocalStorageGetSpaceInfo
  * XPersistentLocalStoragePromptUserForSpaceAsync
  * XPersistentLocalStoragePromptUserForSpaceResult
* [XSpeechSynthesizer](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xspeechsynthesizer/xspeechsynthesizer_members)
  * XSpeechSynthesizerEnumerateInstalledVoices
  * XSpeechSynthesizerCreate
  * XSpeechSynthesizerCloseHandle
  * XSpeechSynthesizerSetDefaultVoice
  * XSpeechSynthesizerSetCustomVoice
  * XSpeechSynthesizerCreateStreamFromText
  * XSpeechSynthesizerCreateStreamFromSsml
  * XSpeechSynthesizerCloseStreamHandle
  * XSpeechSynthesizerGetStreamDataSize
  * XSpeechSynthesizerGetStreamData
* [XStore](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xstore/xstore_members)
  * XStoreCreateContext
  * XStoreCloseContextHandle
  * XStoreIsAvailabilityPurchasable
  * XStoreAcquireLicenseForPackageAsync
  * XStoreAcquireLicenseForPackageResult
  * XStoreCanAcquireLicenseForPackageAsync
  * XStoreCanAcquireLicenseForPackageResult
  * XStoreCanAcquireLicenseForStoreIdAsync
  * XStoreCanAcquireLicenseForStoreIdResult
  * XStoreCloseLicenseHandle
  * XStoreIsLicenseValid
  * XStoreQueryAddOnLicensesAsync
  * XStoreQueryAddOnLicensesResultCount
  * XStoreQueryAddOnLicensesResult
  * XStoreQueryGameLicenseAsync
  * XStoreQueryGameLicenseResult
  * XStoreQueryLicenseTokenAsync
  * XStoreQueryLicenseTokenResultSize
  * XStoreQueryLicenseTokenResult
  * XStoreRegisterGameLicenseChanged
  * XStoreUnregisterGameLicenseChanged
  * XStoreRegisterPackageLicenseLost
  * XStoreUnregisterGameLicenseChanged
  * XStoreUnregisterPackageLicenseLost
  * XStoreAcquireLicenseForDurablesAsync
  * XStoreQueryGameAndDlcPackageUpdatesAsync
  * XStoreQueryGameAndDlcPackageUpdatesResultCount
  * XStoreQueryGameAndDlcPackageUpdatesResult
  * XStoreDownloadAndInstallPackagesAsync
  * XStoreDownloadAndInstallPackagesResultCount
  * XStoreDownloadAndInstallPackagesResult
  * XStoreDownloadAndInstallPackageUpdatesAsync
  * XStoreDownloadAndInstallPackageUpdatesResult
  * XStoreDownloadPackageUpdatesAsync
  * XStoreDownloadPackageUpdatesResult
  * XStoreQueryPackageIdentifier
  * XStoreShowRedeemTokenUIAsync
  * XStoreShowRedeemTokenUIResult
  * XStoreShowRateAndReviewUIAsync
  * XStoreShowRateAndReviewUIResult
  * XStoreShowPurchaseUIAsync
  * XStoreShowPurchaseUIResult
  * XStoreQueryConsumableBalanceRemainingAsync
  * XStoreQueryConsumableBalanceRemainingResult
  * XStoreReportConsumableFulfillmentAsync
  * XStoreReportConsumableFulfillmentResult
  * XStoreGetUserCollectionsIdAsync
  * XStoreGetUserCollectionsIdResultSize
  * XStoreGetUserCollectionsIdResult
  * XStoreGetUserPurchaseIdAsync
  * XStoreGetUserPurchaseIdResultSize
  * XStoreGetUserPurchaseIdResult
  * XStoreQueryAssociatedProductsAsync
  * XStoreQueryAssociatedProductsResult
  * XStoreQueryEntitledProductsAsync
  * XStoreQueryEntitledProductsResult
  * XStoreQueryProductForCurrentGameAsync
  * XStoreQueryProductForCurrentGameResult
  * XStoreQueryProductForPackageAsync
  * XStoreQueryProductForPackageResult
  * XStoreQueryProductsAsync
  * XStoreQueryProductsResult
  * XStoreProductsQueryNextPageAsync
  * XStoreCloseProductsQueryHandle
  * XStoreAcquireLicenseForDurablesResult
  * XStoreEnumerateProductsQuery
  * XStoreProductsQueryHasMorePages
  * XStoreProductsQueryNextPageResult
  * XStoreShowAssociatedProductsUIAsync
  * XStoreShowAssociatedProductsUIResult
  * XStoreShowProductPageUIAsync
  * XStoreShowProductPageUIResult
* [XSystem](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xsystem/xsystem_members)
  * XSystemGetAnalyticsInfo
  * XSystemGetAppSpecificDeviceId
  * XSystemGetConsoleId
  * XSystemGetDeviceType
  * XSystemGetXboxLiveSandboxId
  * XSystemGetRuntimeInfo
  * XSystemIsHandleValid
  * XSystemHandleTrack
* [XTaskQueue](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xtaskqueue/xtaskqueue_members)
  * XTaskQueueCloseHandle
  * XTaskQueueCreate
  * XTaskQueueCreateComposite
  * XTaskQueueDispatch
  * XTaskQueueDuplicateHandle
  * XTaskQueueGetCurrentProcessTaskQueue
  * XTaskQueueGetPort
  * XTaskQueueRegisterMonitor
  * XTaskQueueRegisterWaiter
  * XTaskQueueSetCurrentProcessTaskQueue
  * XTaskQueueSubmitCallback
  * XTaskQueueSubmitDelayedCallback
  * XTaskQueueTerminate
  * XTaskQueueUnregisterMonitor
  * XTaskQueueUnregisterWaiter
* [XThread](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xthread/xthread_members)
  * XThreadIsTimeSensitive
  * XThreadSetTimeSensitive
  * XThreadAssertNotTimeSensitive
* [XUser](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xuser/xuser_members)
  * XUserDuplicateHandle
  * XUserCloseHandle
  * XUserCompare
  * XUserGetMaxUsers
  * XUserAddAsync
  * XUserAddResult
  * XUserAddByIdWithUiAsync
  * XUserAddByIdWithUiResult
  * XUserGetId
  * XUserFindUserById
  * XUserGetLocalId
  * XUserFindUserByLocalId
  * XUserGetIsGuest
  * XUserGetState
  * XUserGetGamertag
  * XUserGetGamerPictureAsync
  * XUserGetAgeGroup
  * XUserCheckPrivilege
  * XUserResolvePrivilegeWithUiAsync
  * XUserResolvePrivilegeWithUiResult
  * XUserGetTokenAndSignatureUtf16Async
  * XUserResolveIssueWithUiUtf16Async
  * XUserResolveIssueWithUiUtf16Result
  * XUserRegisterForChangeEvent
  * XUserUnregisterForChangeEvent
  * XUserCloseSignOutDeferralHandle
  * XUserFindControllerForUserWithUiAsync
  * XUserFindControllerForUserWithUiResult
  * XUserFindForDevice
  * XUserGetDefaultAudioEndpointUtf16
  * XUserGetGamerPictureResultSize
  * XUserGetGamerPictureResult
  * XUserGetSignOutDeferral
  * XUserGetTokenAndSignatureAsync
  * XUserGetTokenAndSignatureResultSize
  * XUserGetTokenAndSignatureResult
  * XUserGetTokenAndSignatureUtf16ResultSize
  * XUserGetTokenAndSignatureUtf16Result
  * XUserIsStoreUser
  * XUserRegisterForDefaultAudioEndpointUtf16Changed
  * XUserRegisterForDeviceAssociationChanged
  * XUserResolveIssueWithUiAsync
  * XUserResolveIssueWithUiResult
  * XUserUnregisterForDefaultAudioEndpointUtf16Changed
  * XUserUnregisterForDeviceAssociationChanged

## 관리형 래퍼에 포함된 XBOX 서비스 API 목록

다음 XBOX 서비스 API가 GDK Unity 패키지의 관리형 래퍼에 포함되어 있습니다. XBOX 서비스 API에 대한 자세한 내용은 [XBOX Live API 레퍼런스](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/gc-reference-live-toc)를 참조하세요.

* [XblContext](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/xbox_live_context_c/xbox_live_context_c_members)
* [XblAchievements](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/achievements_c/achievements_c_members)
* [XblEvents](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/events_c/events_c_members)
* [XblLeaderboard](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/leaderboard_c/leaderboard_c_members)
* [XblPresence](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/presence_c/presence_c_members)
* [XblPrivacy](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/privacy_c/privacy_c_members)
* [XblSocialManager](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/social_manager_c/social_manager_c_members)
* [XblUserStatistics](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/user_statistics_c/user_statistics_c_members)
* [XblHttpCall](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/http_call_c/http_call_c_members)
* [XblGetErrorCondition](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/errors_c/errors_c_members)
* [XblMultiplayer](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/multiplayer_c/multiplayer_c_members)
* [XblMultiplayerManager](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/multiplayer_manager_c/multiplayer_manager_c_members)
* [XblMultiplayerActivity](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/multiplayer_activity_c/multiplayer_activity_c_members)
* [XblMatchmaking](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/matchmaking_c/matchmaking_c_members)
* [XblProfile](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/profile_c/profile_c_members)
* [XblRealTimeActivity](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/real_time_activity_c/real_time_activity_c_members)
* [XblTitleManagedStats](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/title_managed_statistics_c/title_managed_statistics_c_members)
* [XblSocial](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/social_c/social_c_members)
* [XblTitleStorage](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/title_storage_c/title_storage_c_members)
* [XblUserStatics](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/live/xsapi-c/user_statistics_c/user_statistics_c_members)

## 참고 API 문서

* [XStore (API 콘텐츠)](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xstore/xstore_members)
* [XPackage (API 콘텐츠)](https://learn.microsoft.com/gaming/gdk/_content/gc/reference/system/xpackage/xpackage_members)

## 참고

[PC 개발을 위한 Unity 시작하기](/build/gdk-and-engines/unity/unity)


## Related topics

- [Unity와 함께 GDK 사용](/ko/build/gdk-and-engines/unity/unity.md)
- [XGameRuntimeFeature (API contents)](/ko/reference/system/xgameruntimefeature/xgameruntimefeature_members.md)
- [XGameRuntimeInit](/ko/reference/system/xgameruntimeinit/xgameruntimeinit_members.md)
- [Unity, Unreal 및 기타 엔진과 함께 GDK 사용](/ko/build/gdk-and-engines/gdk-and-engines.md)
- [XAccessibility](/ko/reference/system/xaccessibility/xaccessibility_members.md)
