DllImportAttribute.SetLastError Pole
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje, zda volaný nastaví chybu (SetLastError na Windows nebo errno na jiných platformách) před vrácením z atributové metody.
public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean
Hodnota pole
Příklady
V některých případech vývojáři Visual Basic používají DllImportAttribute místo příkazu Declare k definování funkce knihovny DLL ve spravovaném kódu.
SetLastError Nastavení pole je jedním z těchto případů.
[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
Poznámky
true indikuje, že volaný nastaví chybu prostřednictvím SetLastError na Windows nebo errno na jiných platformách; jinak false. Výchozí hodnota je false.
Pokud je toto pole nastavené na true, volání GetLastError zařazování modulu runtime nebo errno uloží vrácenou hodnotu do mezipaměti, aby se zabránilo jeho přepsání jinými voláními rozhraní API.
Kód chyby můžete načíst voláním GetLastPInvokeError na .NET 6.0 nebo novějším nebo GetLastWin32Error v .NET 5 nebo novějším nebo .NET Frameworku.
V .NET se informace o chybě vymažou (nastaví se na 0) před vyvoláním volaného, když je toto pole nastavené na true. V rozhraní .NET Framework nejsou informace o chybě vymazány.
To znamená, že informace o chybách vrácené GetLastPInvokeError a GetLastWin32Error na .NET představují pouze informace o chybě z posledního volání p/invoke s DllImportAttribute.SetLastError nastavenou na true. V rozhraní .NET Framework můžou informace o chybě přetrvat z jednoho volání p/invoke na další.