Win32 API のエラー情報を取得する
Win32 APIを実行したあとでエラー情報を取得するには次の2段階の処理を経て取得します。(Win32APIは失敗しても例外は発生しません)
1.Marshal.GetHRForLastWin32Errorでエラー情報のHRESULT値を取得します。
2.Marshal.GetExceptionForHRでHRESULT値から例外オブジェクトを作成します。
取得した例外は、Throwする事もできるし、エラーメッセージを抜き出して処理を行うことも出来ます。
Dim result As Boolean = FreeLibrary(_libraryModule)
If result = False ThenDim lastError As Integer = Marshal.GetHRForLastWin32Error
Dim ex As Exception = Marshal.GetExceptionForHR(lastError)_lastErrorNo = lastError
_errorMessage = ex.MessageReturn False
End If
エラー情報を取得するためにはDllImport属性でSetLastError:=Trueに設定しておく必要があります。
_
Private Shared Function FreeLibrary(ByVal hModule As IntPtr) As Boolean
End Function