共用方式為


DllImportAttribute.SetLastError 欄位

定義

指出被呼叫者在 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為 ,運行時間封送處理器會呼叫 GetLastErrorerrno ,並快取傳回的值,以防止其他 API 呼叫覆寫它。 您可以在 .NET 6.0 和更新版本或 .NET 5 和更新GetLastWin32Error版本或 .NET Framework 上呼叫 GetLastPInvokeError ,以擷取錯誤碼。

在 .NET 上,當此字段設定true為 時,會先將錯誤資訊設定 0 (為) ,再叫用被呼叫者。 在 .NET Framework 上,不會清除錯誤資訊。 這表示,和 GetLastWin32ErrorGetLastPInvokeError .NET 上傳回的錯誤資訊只代表最後一個 p/invoke DllImportAttribute.SetLastError 中設定為 true的錯誤資訊。 在 .NET Framework 上,錯誤資訊可以從一個 p/invoke 保存到下一個。

適用於

另請參閱