最後のエラーコード

エラーが発生すると、ほとんどのシステム関数はエラー コード (通常は 0、NULL、または –1) を返します。 多くのシステム関数では、最後のエラー コードと呼ばれる追加のエラー コードも設定されています。 このエラー コードは、実行中のスレッドごとに個別に保持されます。あるスレッドでエラーが発生しても、別のスレッドの最後のエラー コードは上書きされません。 任意の関数で SetLastError または SetLastErrorEx 関数を呼び出して、現在のスレッドの最後のエラー コードを設定できます。 これらの関数は主にダイナミック リンク ライブラリ (DLL) を対象としているため、呼び出し元のアプリケーションに情報を提供できます。 一部の関数では、成功すると SetLastError または SetLastErrorEx が 0 で呼び出され、最後に失敗した関数によって設定されたエラー コードが消去されますが、そうでない関数もあります。

アプリケーションは GetLastError 関数を使用して最後のエラー コードを取得できます。エラー コードは、関数が失敗するために実際に何が発生したかを詳しく知ることができます。 システム関数のドキュメントでは、関数が最後のエラー コードを設定する条件を示します。

システムは、最後のエラー コードとして設定したり、これらの関数から返したりできる一連のエラー コードを定義します。 エラー コードは 32 ビット値です (ビット 31 は最上位ビットです)。 ビット 29 は、アプリケーション定義のエラー コード用に予約されています。システム エラー コードにこのビットが設定されていません。 アプリケーションのエラー コードを定義する場合は、このビットを設定して、エラー コードがアプリケーションによって定義されていることを示し、エラー コードがシステム定義のエラー コードと競合しないようにします。 詳細については、「WinError.h」および「システム エラー コード」を参照してください。