DllImportAttribute.SetLastError Mező
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.