次の方法で共有


XSystemHandleTrack

ゲーム ランタイムでハンドルの有効期間イベントを追跡するコールバックを登録します。

構文

HRESULT XSystemHandleTrack(
  XSystemHandleCallback callback,
  void * context
)

パラメーター

callback _In_
型: XSystemHandleCallback

ハンドルの作成時と破棄時に呼び出されるユーザー定義コールバック。 このコールバックでハンドルのトラッキングを無効にするには、NULL を渡します。

context _In_opt_
型: void *

コールバックに渡されるユーザー定義コンテキスト。

戻り値

型: HRESULT

正常に実行された場合は S_OK が返され、それ以外の場合はエラー コードが返されます。 エラー コードの一覧については、「エラー コード」を参照してください。

解説

ゲーム開発者は、ハンドルの不適切な使用に関係するバグをトラブルシューティングできる必要があります。 GRTS API のほとんどでは、プラットフォームの実装での内部オブジェクトの有効期間に対応するハンドルが利用されます。 ゲームでは、多くの場合、開発者がこれらの API に誤って無効なハンドル (NULL や以前に解放されたものなど) を提供することで、タイトルがクラッシュする問題が発生します。 また、開発者が誤ってハンドルをリークし、リソースが過剰に使用されることもあります。 ハンドル トラッキング API の目標は、開発者がこれらの問題を診断して修正できるようにすることです。

この API には、アクティブとパッシブの 2 つのコンポーネントがあります。 デバッグとリテールの両方のシナリオで、GRTS で作成されたすべてのハンドルが継続的に追跡されます。 ハンドルが API に渡されるたびに、プラットフォームで検証が実行されて、これらのハンドルが有効な内部オブジェクトに対応していることが確認されます。 無効なハンドルが検出された場合、プラットフォームによりエラーがログに記録され、XErrorReport が呼び出されて開発者に問題が通知されます。 プラットフォームでは、この機能より重要な、無効なハンドルの使用を抑制したりアプリケーションのクラッシュを許可したりする追加の作業は行われません。 最後に、XErrorReport により、XGameRuntimeUninitialize の時点のハンドル リークも報告されます。 現時点では、ハンドル トラッキング システムでは GRTS 外のハンドルのトラッキングは有効にはなりません。

要件

ヘッダー: XSystem.h

ライブラリ: xgameruntime.lib

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XSystem メンバー

XSystemHandleCallback