> ## 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.

# XGameRuntimeInitialize

> XGameRuntimeInitialize

# XGameRuntimeInitialize

初始化 Gaming Runtime。

## 語法

```cpp theme={null}
HRESULT XGameRuntimeInitialize(  
)  
```

### 參數

無。

### 傳回值

類型：[HRESULT](https://learn.microsoft.com/openspecs/windows_protocols/ms-erref/0642cb2f-2075-4469-918c-4441e69c548a)

如果成功，則傳回 **S\_OK**；否則傳回錯誤碼。如需錯誤碼清單，請參閱[錯誤碼](/zh-TW/reference/errorcodes)。如果函式因找不到 Gaming Runtime 程式庫 (xgameruntime.dll) 而失敗，傳回值會設為 **E\_GAMERUNTIME\_DLL\_NOT\_FOUND**。

## 備註

若要在遊戲中使用 Gaming Runtime 功能，請先叫用 **XGameRuntimeInitialize** 函式來初始化 Gaming Runtime。請盡早叫用 **XGameRuntimeInitialize** 函式，通常是在遊戲的進入點函式中。同樣地，請盡可能延後 (但在遊戲結束之前) 叫用 [XGameRuntimeUninitialize](/zh-TW/reference/system/xgameruntimeinit/functions/xgameruntimeuninitialize) 函式來取消初始化 Gaming Runtime。

每個針對遊戲執行階段進行編譯和連結的二進位檔，都應該在啟動初期呼叫 **XGameRuntimeInitialize**。這包括遊戲二進位檔，以及任何使用 Gaming Runtime 功能的 DLL 形式中介軟體。在 **XGameRuntimeInitialize** 函式內部，會檢查遊戲編譯時所針對的所有介面版本，並用來初始化相符的執行階段服務。在兩個不同版本的 Gaming Runtime 之間，函式可能會新增、移除，或在少數情況下出現中斷性的行為變更。從每個元件呼叫 **XGameRuntimeInitialize** 有助於偵測組建設定問題，例如將在同一個處理序中載入的兩個不同二進位檔，分別針對兩個不同且不相容的遊戲執行階段版本進行編譯。此類中斷性設定會導致 **E\_GAMERUNTIME\_VERSION\_MISMATCH** 錯誤。

下列範例示範如何在以 Visual Studio 中 **Direct3D 12 Desktop Game** 範本為基礎之遊戲的進入點函式內，使用 **XGameRuntimeInitialize** 和 [XGameRuntimeUninitialize](/zh-TW/reference/system/xgameruntimeinit/functions/xgameruntimeuninitialize) 函式。**XGameRuntimeInitialize** 函式會在 **Game** 物件具現化並註冊之前叫用，而 **XGameRuntimeUninitialize** 函式會在 **Game** 物件重設之後、進入點函式傳回之前叫用。

```cpp theme={null}
// Entry point
int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // Initialize the Gaming Runtime before
    // performing any other activity.
    if (FAILED(XGameRuntimeInitialize()))
        return 1;

    if (!XMVerifyCPUSupport())
        return 1;

    g_game = std::make_unique<Game>();

    // Register class and create window
    {
        // Code omitted for brevity.
        ...
    }

    // Main message loop
    MSG msg = {};
    while (WM_QUIT != msg.message)
    {
        // Code omitted for brevity.
        ...
    }

    g_game.reset();

    // Uninitialize the Gaming Runtime after
    // all other activity has been completed.
    XGameRuntimeUninitialize();

    return (int) msg.wParam;
}
```

## 需求

**標頭：** XGameRuntimeInit.h

**程式庫：** xgameruntime.lib

**支援的平台：** Windows、XBOX One 系列主機和 XBOX Series 主機

## 概念文件

* [什麼是 Microsoft Game Development Kit？](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/intro/introduction)

## 另請參閱

[XGameRuntimeUninitialize](/zh-TW/reference/system/xgameruntimeinit/functions/xgameruntimeuninitialize)\
[XGameRuntimeInitializeWithOptions](/zh-TW/reference/system/xgameruntimeinit/functions/xgameruntimeinitializewithoptions)\
[XGameRuntimeInit](/zh-TW/reference/system/xgameruntimeinit/xgameruntimeinit_members)\
[XGameRuntime 結構](/zh-TW/reference/system/xgameruntimeinit/Structures/xgameruntimeoptions)\
[XGameRuntime 列舉](/zh-TW/reference/system/xgameruntimeinit/Enumerations/xgameruntimegameconfigsource)\
[使用 Gaming Runtime 開發新遊戲](/zh-TW/build/gdk-and-engines/guides/gdk-project-templates)


## Related topics

- [XGameRuntimeInitialize](/reference/system/xgameruntimeinit/functions/xgameruntimeinitialize.md)
- [XGameRuntimeInitializeWithOptions](/reference/system/xgameruntimeinit/functions/xgameruntimeinitializewithoptions.md)
