DllImportAttribute.SetLastError 欄位

定義

指出被呼叫者在從屬性方法傳回之前, SetLastError 是否會在Windows或其他 errno 平臺上設定錯誤 () 。

public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean 

欄位值

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

適用於

另請參閱