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