GetLastError

呼び出し側のスレッドが持つ最新のエラーコードを取得します。エラーコードは、スレッドごとに保持されるため、複数のスレッドが互いの最新のエラーコードを上書きすることはありません。

DWORD GetLastError(VOID);

パラメータ

パラメータはありません。

戻り値

呼び出し側のスレッドが持つ最新のエラーコードが返ります。他の関数は、SetLastError 関数を呼び出して、内部でこのエラーコードを設定します。各関数の「戻り値」では、各関数がどのような条件で最新のエラーコードを設定するのか説明しています。

Windows 95/98:SetLastError は 32 ビット専用の関数なので、Win32 の関数のうち実際は 16 ビットコードで実装されているものは、最新のエラーコードを設定しません。このような関数を呼び出した後は、最新のエラーコードを無視するべきです。ウィンドウ管理関数、GDI 関数、マルチメディア関数がこれに該当します。

解説

システムエラーコードに対応するエラー文字列を取得するには、FormatMessage 関数を使います。エラーコードの詳細なリストについては、「Error Codes」を参照してください。

関数の戻り値から、その関数の呼び出し結果が有効なデータであることがわかった場合、すぐに GetLastError 関数を呼び出すべきです。特定の関数は成功したときに SetLastError(0) を呼び出して、直前に失敗した関数が設定したエラーコードを消去してしまうからです。

ほとんどの Win32 関数は、関数が失敗したときにエラーコードを設定しますが、特定の関数は、関数が成功したときにエラーコードを設定します。通常は、関数が失敗した場合の戻り値は、0、NULL、-1 のいずれかです。特定の関数は、成功したときに SetErrorCode を呼び出します。各関数の「戻り値」では、このような状況について説明しています。

エラーコードは 32 ビット値です(ビット 31 が最上位ビットです)。ビット 29 はアプリケーション定義のエラーコード用に予約されています。システムエラーコードは、このビットをセットしません。アプリケーション独自のエラーコードを定義する場合は、このビットをセットして、システムが定義したエラーコードとの競合を防止してください。

MAPI:詳細については、「」を参照してください。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winbase.h 内で宣言、Windows.h をインクルード
インポートライブラリ:Kernel32.lib を使用

参照

FormatMessage, SetLastError, SetLastErrorEx

表示: