DllImportAttribute.SetLastError Mező

Definíció

Jelzi, hogy a hívó hibát állít-e be (SetLastError Windows vagy errno más platformokon), mielőtt visszatér az attribútumként megadott metódusból.

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

Mező értéke

Példák

Bizonyos esetekben Visual Basic fejlesztők a DllImportAttribute a Declare utasítás helyett egy DLL-függvényt definiálnak a felügyelt kódban. SetLastError A mező beállítása az ilyen esetek egyike.

[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

Megjegyzések

true jelzi, hogy a hívó SetLastError keresztül fog hibát beállítani Windows vagy errno más platformokon; ellenkező esetben false. Az alapértelmezett érték a false.

Ha ez a mező be van állítva true, a futtatókörnyezeti marsall meghívja GetLastError vagy errno gyorsítótárazza a visszaadott értéket, hogy megakadályozza, hogy más API-hívások felülírják. A hibakódot a GetLastPInvokeError meghívásával lehet lekérni a .NET 6.0-s vagy újabb vagy GetLastWin32Error .NET 5-ös vagy újabb verziójában, illetve az alábbi vagy .NET-keretrendszerben.

.NET a rendszer törli a hibainformációkat (0) mielőtt meghívja a hívót, ha ez a mező true értékre van állítva. A .NET-keretrendszerben a hibainformációk nem törlődnek. Ez azt jelenti, hogy a GetLastPInvokeError és GetLastWin32Error által .NET visszaadott hibainformációk csak az utolsó p/meghívás hibaadatait jelenítik meg a DllImportAttribute.SetLastErrortrue beállítással. A .NET-keretrendszerben a hibainformációk az egyik p/meghívástól a következőig megmaradhatnak.

A következőre érvényes:

Lásd még