SetUnhandledExceptionFilter 関数 (errhandlingapi.h)
アプリケーションがプロセスの各スレッドの最上位の例外ハンドラーを置き換えるできるようにします。
この関数を呼び出した後、デバッグされていないプロセスで例外が発生し、例外によってハンドルされない例外フィルターに例外が発生した場合、そのフィルターは lpTopLevelExceptionFilter パラメーターで指定された例外フィルター関数を呼び出します。
構文
LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(
[in] LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
);
パラメーター
[in] lpTopLevelExceptionFilter
UnhandledExceptionFilter 関数が制御を取得し、プロセスがデバッグされていないときに呼び出される最上位の例外フィルター関数へのポインター。 このパラメーターの NULL 値は、 UnhandledExceptionFilter 内の既定の処理を指定します。
フィルター関数には UnhandledExceptionFilter と同様の構文があります。これは 、LPEXCEPTION_POINTERS型の単一パラメーターを受け取り、WINAPI 呼び出し規則を持ち、 LONG 型の値を返します。 フィルター関数は、次のいずれかの値を返す必要があります。
値 | 説明 |
---|---|
|
UnhandledExceptionFilter からを返し、関連付けられている例外ハンドラーを実行します。 これは通常、プロセス終了になります。 |
|
UnhandledExceptionFilter から戻り、例外のポイントから実行を続行します。 フィルター関数は、LPEXCEPTION_POINTERS パラメーターを介して指定された例外情報を変更することで、継続状態を自由 に 変更できます。 |
|
UnhandledExceptionFilter の通常の実行に進みます。 つまり、 SetErrorMode フラグに従うか、[アプリケーション エラー] ポップアップ メッセージ ボックスを呼び出します。 |
戻り値
SetUnhandledExceptionFilter 関数は、 関数で確立された以前の例外フィルターのアドレスを返します。 NULL 戻り値は、現在の最上位の例外ハンドラーがないことを意味します。
注釈
SetUnhandledExceptionFilter を発行すると、呼び出し元プロセス内のすべての既存および今後のすべてのスレッドの既存の最上位例外フィルターが置き換えられます。
lpTopLevelExceptionFilter によって指定された例外ハンドラーは、エラーの原因となったスレッドのコンテキストで実行されます。 これは、無効なスタックなど、特定の例外から回復する例外ハンドラーの機能に影響を与える可能性があります。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | errhandlingapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |