Win32 API のエラー情報を取得する

Win32 APIを実行したあとでエラー情報を取得するには次の2段階の処理を経て取得します。(Win32APIは失敗しても例外は発生しません)

1.Marshal.GetHRForLastWin32Errorでエラー情報のHRESULT値を取得します。
2.Marshal.GetExceptionForHRでHRESULT値から例外オブジェクトを作成します。

取得した例外は、Throwする事もできるし、エラーメッセージを抜き出して処理を行うことも出来ます。


Dim result As Boolean = FreeLibrary(_libraryModule)
If result = False Then

Dim lastError As Integer = Marshal.GetHRForLastWin32Error
Dim ex As Exception = Marshal.GetExceptionForHR(lastError)

_lastErrorNo = lastError
_errorMessage = ex.Message

Return False

End If

エラー情報を取得するためにはDllImport属性でSetLastError:=Trueに設定しておく必要があります。


_
Private Shared Function FreeLibrary(ByVal hModule As IntPtr) As Boolean
End Function