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

# XSAPI C 概述

> 介绍 GDK 标题中用于 XBOX Live 的 XSAPI C API 层，涵盖内存分配回调、线程控制和 libHttpClient。

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 层异步调用的调用模式](/services/xbox-services/fundamentals/xbox-services-api/live-flatc-async-patterns)。

## 将代码迁移到使用 C XSAPI

XSAPI C API 可以在项目中与 XSAPI C++ API 一起使用，因此我们建议你一次迁移一个功能。

C API 和 C++ API 实际上只是围绕一个公共核心的薄包装，只是入口点不同，因此功能应该保持不变。

但是，只有 C API 可以利用自定义内存和线程管理功能。

> **重要：**
> 你不能将 XSAPI WinRT API 与 C API 混用。

## 有用的资源

* [使用 XSAPI C API 的示例](https://github.com/Microsoft/xbox-live-samples)
* [libHttpClient GitHub 存储库](https://github.com/Microsoft/libHttpClient)
* 要查看 C API，请参阅 XSAPI C 头文件。它在作为 GDK 一部分的 XBOX 服务 SDK 中。

## 另请参阅

[XSAPI C 参考](/reference/live/xsapi-c/atoc-xsapi-c)

[REST API 参考](/reference/live/rest/atoc-xboxlivews-reference)

[HttpClient 参考](/reference/live/httpclient/atoc-httpclient)


## Related topics

- [WinHTTP 概述](/zh-CN/build/console-features/networking/web-requests/intro-winhttp.md)
- [隐私和权限概述](/zh-CN/services/xbox-services/fundamentals/identity/privacy/live-privacy-overview.md)
- [概述](/zh-CN/build/console-features/audio/overviews/index.md)
- [XBOX services 概述](/zh-CN/services/xbox-services/fundamentals/live-xbl-overview.md)
- [XBOX 服务 API 概述](/zh-CN/services/xbox-services/fundamentals/xbox-services-api/live-introduction-to-xbox-live-apis.md)
