マルチスレッド・プログラムでのエラー処理

GetLastError 関数を使うと,マルチスレッド化したルーチンのいずれかがエラー・コードを返した場合に,エラー情報を取得することができます。これは最後のエラーのエラー・コードを返すのであり,必ずしも最後の呼び出しのエラー状態を返すわけではないことに注意してください。

エラー・コードは 32 ビット値です。ビット 29 はアプリケーション定義のエラー・コードのために予約されています。独自のダイナミック・リンク・ライブラリーを作成しているときには,このビットを設定して SetLastError を使用することで,Win32 API の動作をエミュレートすることができます。Win32 関数は,失敗したときにのみ SetLastError を呼び出し,成功したときには呼び出しません。

最後のエラー・コード値はスレッド・ローカル・ストレージに保持されているので,複数のスレッドが互いの値を上書きするようなことは起こりません。