DllImportAttribute.SetLastError Pole

Definice

Určuje, jestli volaný nastaví chybu (SetLastError ve Windows nebo errno na jiných platformách) před návratem z přiřazené 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 používají vývojáři jazyka Visual Basic k definování funkce knihovny DLL ve spravovaném DllImportAttributekódu místo Declare příkazu . SetLastError Jedním z těchto případů je nastavení pole.

[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 k označení, že volaný nastaví chybu prostřednictvím systému SetLastError Windows nebo errno na jiných platformách. V opačném případě false. Výchozí formát je false.

Pokud je toto pole nastavené na true, zařazování modulu runtime zavolá GetLastError nebo errno a uloží vrácenou hodnotu do mezipaměti, aby se zabránilo přepsání jinými voláními rozhraní API. Kód chyby můžete načíst voláním GetLastPInvokeError v rozhraní .NET 6.0 a novějším, v GetLastWin32Error .NET 5 a novějším nebo v rozhraní .NET Framework.

V .NET se informace o chybě vymažou (nastaví 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ých technologií GetLastPInvokeError a GetLastWin32Error v .NET představují pouze informace o chybě z posledního volání p/invoke s nastavenou DllImportAttribute.SetLastError na truehodnotu . V rozhraní .NET Framework mohou informace o chybě přetrvávat od jednoho volání p/invoke k dalšímu.

Platí pro

Viz také