DllImportAttribute.SetLastError 欄位
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指出被呼叫者在 Windows 或其他errno
平台上設定錯誤 (SetLastError
) ,是否在從屬性方法傳回之前) 。
public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean
欄位值
範例
在某些情況下,Visual Basic 開發人員會使用 DllImportAttribute,而不是使用 Declare
語句,在 Managed 程式代碼中定義 DLL 函式。
SetLastError設定欄位是其中一種情況。
[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
表示被呼叫者會透過 SetLastError
Windows 或其他 errno
平台上設定錯誤,否則為 false
。 預設值為 false
。
如果此欄位設定 true
為 ,運行時間封送處理器會呼叫 GetLastError
或 errno
,並快取傳回的值,以防止其他 API 呼叫覆寫它。
您可以在 .NET 6.0 和更新版本或 .NET 5 和更新GetLastWin32Error版本或 .NET Framework 上呼叫 GetLastPInvokeError ,以擷取錯誤碼。
在 .NET 上,當此字段設定true
為 時,會先將錯誤資訊設定 0
(為) ,再叫用被呼叫者。 在 .NET Framework 上,不會清除錯誤資訊。
這表示,和 GetLastWin32Error 在 GetLastPInvokeError .NET 上傳回的錯誤資訊只代表最後一個 p/invoke DllImportAttribute.SetLastError 中設定為 true
的錯誤資訊。 在 .NET Framework 上,錯誤資訊可以從一個 p/invoke 保存到下一個。