Skip to main content
2018 年 6 月,XSAPI 中添加了一个 C API 层。C API 层解决了 C++ 和 WinRT API 层出现的一些问题。
注意: C API 目前仅适用于使用 GDK 和 XDK 的标题。目前不支持 UWP 游戏。

XSAPI 的 C API 的优势

  • 允许标题在调用 XSAPI 时控制内存分配。
  • 允许标题在调用 XSAPI 时完全控制线程处理。
  • 使用为游戏开发人员设计的新的 HTTP 库 libHttpClient。
你可以将 C API 与 C++ XSAPI 一起使用,但是使用 C++ API 你将无法获得前面列出的优势。

管理内存分配

使用 C API,你现在可以指定一个函数回调,XSAPI 在尝试分配内存时将调用该回调。如果不指定函数回调,XSAPI 将使用标准的内存分配例程。 要手动指定你的内存例程,可以执行以下操作:
  • 在游戏开始时:
    • 调用 XblMemSetFunctions(memAllocFunc, memFreeFunc) 以指定用于分配和释放内存的分配回调。
    • 调用 XblInitialize() 以初始化库实例。
  • 在游戏运行时:
    • 调用 XSAPI 中任何分配或释放内存的新 C API 都将导致 XSAPI 调用指定的内存处理回调。
  • 当游戏退出时:
    • 调用 XblCleanup() 以回收与 XSAPI 库关联的所有资源。
    • 清理你游戏的自定义内存管理器。

管理异步线程

C API 引入了一种新的异步线程调用模式,允许开发人员完全控制线程模型。有关更多信息,请参阅 XSAPI C 层异步调用的调用模式

将代码迁移到使用 C XSAPI

XSAPI C API 可以在项目中与 XSAPI C++ API 一起使用,因此我们建议你一次迁移一个功能。 C API 和 C++ API 实际上只是围绕一个公共核心的薄包装,只是入口点不同,因此功能应该保持不变。 但是,只有 C API 可以利用自定义内存和线程管理功能。
重要: 你不能将 XSAPI WinRT API 与 C API 混用。

有用的资源

另请参阅

XSAPI C 参考 REST API 参考 HttpClient 参考
最后修改于 2026年8月25日