XSAPI C 概述
2018 年 6 月,向 XSAPI 添加了 C API 层。 C API 层解决了 C++ 和 WinRT API 层出现的一些问题。
注意:
C API 目前仅适用于使用 Xbox 开发者工具包 (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 API 的示例
- libHttpClient GitHub 存储库
- 若要查看 C API,请参阅 XSAPI C 头文件。 它位于属于 GDK 的 Xbox 服务 SDK 中。