> ## 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 と併用できるため、1 つの機能ずつ移行することをお勧めします。

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 services 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 の概要](/ja-jp/build/console-features/networking/web-requests/intro-winhttp.md)
- [XBOX services API の概要](/ja-jp/services/xbox-services/fundamentals/xbox-services-api/live-introduction-to-xbox-live-apis.md)
- [移植の概要](/ja-jp/paths/porting/overview.md)
- [XBOX services の概要](/ja-jp/services/xbox-services/fundamentals/live-xbl-overview.md)
- [Multiplayer Session Directory の概要](/ja-jp/services/xbox-services/multiplayer/mpsd/live-mpsd-overview.md)
