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 保存到下一個。

適用於

另請參閱