SetErrorMode 関数 (errhandlingapi.h)
システムまたはプロセスが、指定された重大なエラーの種類を処理するかどうかを制御します。
構文
UINT SetErrorMode(
[in] UINT uMode
);
パラメーター
[in] uMode
プロセス エラー モード。 このパラメーターには、次の値のうち 1 つ以上を指定できます。
価値 | 意味 |
---|---|
|
システムの既定値を使用すると、すべてのエラー ダイアログ ボックスが表示されます。 |
|
システムには、重大エラー ハンドラー のメッセージ ボックスは表示されません。 代わりに、システムは呼び出し元のプロセスにエラーを送信します。
ベスト プラクティスは、すべてのアプリケーションが、起動時に SEM_FAILCRITICALERRORS パラメーターを使用してプロセス全体の SetErrorMode 関数を呼び出すということです。 これは、エラー モードダイアログがアプリケーションをハングしないようにするためです。 |
|
システムはメモリアラインメントエラーを自動的に修正し、アプリケーションから見えないようにします。 これは、呼び出し元プロセスとすべての子孫プロセスに対して行われます。 この機能は、特定のプロセッサ アーキテクチャでのみサポートされます。 詳細については、「解説」セクションを参照してください。
プロセスに対してこの値が設定されると、その後の値のクリア試行は無視されます。 |
|
システムは Windows エラー報告を呼び出しません。 Windows エラー報告 UI を無効にするには、WER_FAULT_REPORTING_NO_UI フラグを指定して WerSetFlags を呼び出します。 |
|
OpenFile 関数は、ファイルの検索に失敗してもメッセージ ボックスを表示しません。 代わりに、エラーが呼び出し元に返されます。 このエラー モードは、OF_PROMPT フラグをオーバーライドします。 |
戻り値
戻り値は、エラー モード のビット フラグの以前の状態です。
備考
各プロセスには、アプリケーションが重大なエラーに応答する方法をシステムに示すエラー モードが関連付けられています。 子プロセスは、その親プロセスのエラー モードを継承します。 プロセス エラー モードを取得するには、GetErrorMode 関数を使用します。
エラー モードはプロセス全体に対して設定されるため、マルチスレッド アプリケーションが異なるエラー モード フラグを設定しないようにする必要があります。 これを行うと、一貫性のないエラー処理につながる可能性があります。
システムでは、すべてのプロセッサ アーキテクチャで、アラインメント エラーがアプリケーションに表示されるわけではありません。 したがって、SEM_NOALIGNMENTFAULTEXCEPTを指定してもこのようなアーキテクチャではエラーになりませんが、システムは要求を自由に無視できます。 つまり、x86 コンピューターでは、次のようなコード シーケンスが常に有効であるとは限りません。
C++ |
---|
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); fuOldErrorMode = SetErrorMode(0); ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT); |
Visual Studio 2005: データが揃っていない可能性がある構造体へのポインターを宣言する場合は、__unaligned キーワードを使用して、型を一度に 1 バイトずつ読み取る必要があることを示すことができます。 詳細については、「Windows データ配置」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | errhandlingapi.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
GetErrorMode を
SetThreadErrorMode の