XSAPI C の概要
2018 年 6 月に、C API レイヤーが XSAPI に追加されました。 この 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 と一緒に使用できるため、一度に 1 つの機能を移行することをお勧めします。
C API と C++ API は、実際には共通のコアを囲むシン ラッパーであり、エントリ ポイントが異なるだけです。そのため、機能は変わりません。
ただし、カスタム メモリおよびスレッド管理機能を利用できるのは C API だけです。
重要:
XSAPI WinRT API と C API を混在させることはできません。
有用なリソース
- XSAPI C API を使用したサンプル
- libHttpClient GitHub repo
- C API を表示するには、XSAPI C ヘッダー ファイルを参照してください。 これは、GDK の一部である Xbox サービス SDK に含まれています。