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表示被呼叫者會在 Windows 或其他errno平台上透過 SetLastError 設定錯誤,否則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 保存到下一個。

適用於

另請參閱