DllImportAttribute.SetLastError フィールド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
呼び出し先が、属性付きメソッドから戻る前に(SetLastError
Windows または errno
他のプラットフォームで) エラーを設定するかどうかを示します。
public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean
フィールド値
例
場合によっては、Visual Basic 開発者は DllImportAttribute、 ステートメントを使用する代わりに を使用 Declare
して、マネージ コードで DLL 関数を定義します。 フィールドの SetLastError 設定は、そのようなケースの 1 つです。
[DllImport("user32.dll", SetLastError = true)]
int MessageBoxA(IntPtr hWnd, String^ Text,
String^ Caption, unsigned int Type);
internal static class NativeMethods
{
[DllImport("user32.dll", SetLastError = true)]
internal static extern int MessageBoxA(
IntPtr hWnd, string lpText, string lpCaption, uint uType);
}
Friend Class NativeMethods
<DllImport("user32.dll", SetLastError:=True)>
Friend Shared Function MessageBoxA(hWnd As IntPtr, lpText As String,
lpCaption As String, uType As UInteger) As Integer
End Function
End Class
注釈
true
呼び出し先が Windows またはerrno
他のプラットフォームで エラーをSetLastError
設定することを示す場合は 。それ以外の場合false
は 。 既定では、 false
です。
このフィールドが に設定されている場合、ランタイム マーシャラーは または errno
をtrue
呼び出GetLastError
し、返された値をキャッシュして、他の API 呼び出しによって上書きされないようにします。
エラー コードを取得するには、.NET 6.0 以降または GetLastWin32Error .NET 5 以降または .NET Framework で を呼び出GetLastPInvokeErrorします。
.NET では、このフィールドが に設定されている場合、 0
呼び出し先を呼び出す前にエラー情報がクリア (に true
設定) されます。 .NET Framework では、エラー情報はクリアされません。
つまり、.NET で および GetLastWin32Error によってGetLastPInvokeError返されるエラー情報は、 が にtrue
設定された最後の p/invoke DllImportAttribute.SetLastError からのエラー情報のみを表します。 .NET Framework では、エラー情報は 1 回の p/invoke から次の呼び出しまで保持できます。
適用対象
こちらもご覧ください
.NET