_set_abort_behavior

プログラムが異常終了した場合に実行するアクションを指定します。

Note

テストまたはデバッグのシナリオを abort 除き、この関数を使用して Microsoft Store アプリをシャットダウンしないでください。 プログラムまたは UI を使用して Store アプリを閉じる方法は、Microsoft Store ポリシーでは許可されていません。 詳細については、UWP アプリのライフサイクルに関するページを参照してください。

構文

unsigned int _set_abort_behavior(
   unsigned int flags,
   unsigned int mask
);

パラメーター

flags
abort フラグの新しい値。

mask
設定する abort フラグのビットのマスク。

戻り値

フラグの元の値。

解説

abort フラグには、_WRITE_ABORT_MSG_CALL_REPORTFAULT の 2 つの種類があります。 _WRITE_ABORT_MSG は、プログラムが異常終了したときに説明のテキスト メッセージを出力するかどうかを指定します。 メッセージは、アプリケーションが abort の関数を呼び出したことを示します。 既定の動作はメッセージを表示することです。 _CALL_REPORTFAULTが設定されている場合は、Windows エラー報告 サービス メカニズム (旧称ワトソン博士) を呼び出して、呼び出されたときに abort Microsoft にエラーを報告します。 既定では、クラッシュ ダンプのレポートは、非デバッグ ビルドで有効になっています。 Windows エラー報告ハンドラーが呼び出されていない場合は、 abort 終了コード 3 でプロセスを終了するために呼び出 _exit し、親プロセスまたはオペレーティング システムに制御を返します。 _exit はストリーム バッファーをフラッシュしたり、処理を行ったり atexit/_onexit しません。

Windows の互換性上の理由から、呼び出し時abortに Windows ExitProcess API が呼び_exit出される可能性があります。これにより、DLL 終了ルーチンを実行できるようになります。 デストラクターは実行可能ファイルで実行されませんが、実行可能ファイルのプロセス空間に読み込まれた DLL でも同じではない可能性があります。 この動作は、C++ 標準に厳密に準拠していません。 DLL を含むプロセスを直ちに終了するには、Windows TerminateProcess API を使用します。 標準準拠の動作を呼び出 TerminateProcess す中止シグナル ハンドラーを登録することもできます。 準拠している動作は、Windows の互換性に多少のコストがかかる場合があります。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 これを変更するには、「CRT でのグローバル状態」を参照してください。

必要条件

ルーチンによって返される値 必須ヘッダー
_set_abort_behavior <stdlib.h>

互換性の詳細については、「 Compatibility」を参照してください。

// crt_set_abort_behavior.c
// compile with: /TC
#include <stdlib.h>

int main()
{
   printf("Suppressing the abort message. If successful, this message"
          " will be the only output.\n");
   // Suppress the abort message
   _set_abort_behavior( 0, _WRITE_ABORT_MSG);
   abort();
}
Suppressing the abort message. If successful, this message will be the only output.

関連項目

abort