XErrorSetOptions
ゲーム OS またはゲーム ランタイムでエラーが発生したときに必要な動作を指定します。
構文
void XErrorSetOptions(
XErrorOptions optionsDebuggerPresent,
XErrorOptions optionsDebuggerNotPresent
)
パラメーター
optionsDebuggerPresent _In_
型: xerroroptions
デバッガーをアタッチするときに必要な動作を指定します。
optionsDebuggerNotPresent _In_
型: xerroroptions
デバッガーをアタッチしていないときに必要な動作を指定します。
戻り値
型: void
解説
注意
この関数は、時間依存のスレッドで呼び出すのに安全ではありません。 詳細については、「時間依存のスレッド」を参照してください。
この関数を使用して、ゲーム OS またはゲーム ランタイムでエラーが発生した場合の、ゲームがどのように動作すべきかを指定します。 既定では、デバッガーがアタッチされていない場合はゲームは何も行わず、アタッチされている場合はデバッガーにデバッグメッセージが表示されます。
デバッガーがアタッチされていて optionsDebuggerPresent が [XErrorOptions::DebugBreakOnError] に設定されている場合、システムがデバッガーに割り込み、デバッグ メッセージを出力します。 この動作は、グローバル変数の値を XErrorDisableDebugBreak
から true
に設定することで、[ウォッチ] ウィンドウから一時的に無効にすることができます。
次の例では、エラー オプションを設定する方法、カスタム エラー コールバックを定義する方法、システムからのエラー通知を受け取るためにカスタム コールバックを設定する方法について説明します。
bool CustomGameXErrorCallback(_In_ HRESULT hr, _In_ const char* msg, _In_ void* context)
{
// Capture the error to the game's custom logger
CustomGameLogger* logger = (CustomGameLogger*)context;
logger->ReportGameRuntimeIssue(hr, msg);
// Don't ignore the error. For example, continue on and do whatever
// is specified by XErrorSetOptions().
return true;
}
void SomeGameFunction()
{
// Previously initialize the game's custom logger
// CustomGameLogger* m_logger = InitializeLogger();
// ...
// Setup how you want to handle XErrors
XErrorSetOptions(DebugBreakOnError, FailFastOnError);
XErrorSetCallback(CustomGameXErrorCallback, m_logger);
}
要件
ヘッダー: XError.h
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体