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

## Syntax

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

### Parameters

无。

### Return value

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

如果成功，则返回 **S\_OK**；否则返回错误代码。有关错误代码的列表，请参阅[错误代码](/reference/errorcodes)。如果由于找不到 Gaming Runtime 库 (xgameruntime.dll) 而导致该函数失败，则返回值设置为 **E\_GAMERUNTIME\_DLL\_NOT\_FOUND**。

## Remarks

若要在游戏中使用 Gaming Runtime 功能，请先通过调用 **XGameRuntimeInitialize** 函数初始化 Gaming Runtime。请尽早调用 **XGameRuntimeInitialize** 函数，通常在游戏的入口点函数中调用。同样，通过调用 [XGameRuntimeUninitialize](/reference/system/xgameruntimeinit/functions/xgameruntimeuninitialize) 函数，尽可能晚地（但需在游戏退出之前）取消初始化 Gaming Runtime。

每个针对游戏运行时进行编译和链接的二进制文件都应在启动早期调用 **XGameRuntimeInitialize**。这包括游戏二进制文件和以 DLL 形式使用 Gaming Runtime 功能的任何中间件。在 **XGameRuntimeInitialize** 函数内部，将检查标题所编译对应的所有接口版本，并用于初始化匹配的运行时服务。在两个不同版本的 Gaming Runtime 之间，函数可能会被添加、删除，或在极少数情况下发生破坏性行为更改。从每个组件调用 **XGameRuntimeInitialize** 将有助于检测生成配置问题，例如两个不同二进制文件针对两个不同且不兼容版本的游戏运行时进行编译（这些二进制文件将在同一进程中加载）。此类破坏性配置将导致 **E\_GAMERUNTIME\_VERSION\_MISMATCH** 错误。

以下示例演示了如何在基于 Visual Studio 中 **Direct3D 12 Desktop Game** 模板的游戏的入口点函数中使用 **XGameRuntimeInitialize** 和 [XGameRuntimeUninitialize](/reference/system/xgameruntimeinit/functions/xgameruntimeuninitialize) 函数。在实例化并注册 **Game** 对象之前调用 **XGameRuntimeInitialize** 函数，并在重置 **Game** 对象之后但在入口点函数返回之前调用 **XGameRuntimeUninitialize** 函数。

```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;
}
```

## Requirements

**头文件：** XGameRuntimeInit.h

**库：** xgameruntime.lib

**受支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

## Conceptual documentation

* [什么是 Microsoft 游戏开发工具包？](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/intro/introduction)

## See also

[XGameRuntimeUninitialize](/reference/system/xgameruntimeinit/functions/xgameruntimeuninitialize)\
[XGameRuntimeInitializeWithOptions](/reference/system/xgameruntimeinit/functions/xgameruntimeinitializewithoptions)\
[XGameRuntimeInit](/reference/system/xgameruntimeinit/xgameruntimeinit_members)\
[XGameRuntime 结构](/reference/system/xgameruntimeinit/Structures/xgameruntimeoptions)\
[XGameRuntime 枚举](/reference/system/xgameruntimeinit/Enumerations/xgameruntimegameconfigsource)\
[使用 Gaming Runtime 开发新标题](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/pc-dev/overviews/gr-developing-new-titles-on-gamecore)


## Related topics

- [XGameRuntimeInitializeWithOptions](/zh-CN/reference/system/xgameruntimeinit/functions/xgameruntimeinitializewithoptions.md)
- [XGameRuntimeUninitialize](/zh-CN/reference/system/xgameruntimeinit/functions/xgameruntimeuninitialize.md)
- [XGameRuntimeInit](/zh-CN/reference/system/xgameruntimeinit/xgameruntimeinit_members.md)
- [XSystemGetRuntimeInfo](/zh-CN/reference/system/xsystem/functions/xsystemgetruntimeinfo.md)
- [XGameRuntimeIsFeatureAvailable](/zh-CN/reference/system/xgameruntimefeature/functions/xgameruntimeisfeatureavailable.md)
