Sdílet prostřednictvím


DllImportAttribute.SetLastError Pole

Definice

Určuje, zda volaný nastaví chybu (SetLastError ve Windows nebo errno na jiných platformách) před vrácením z metody s atributem .

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 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 k označení, že volaný nastaví chybu prostřednictvím příkazu ve SetLastError Windows nebo errno na jiných platformách, falsejinak . Výchozí formát je false.

Pokud je toto pole nastavené na true, zařazovač modulu runtime zavolá GetLastError nebo errno a uloží vrácenou hodnotu do mezipaměti, aby se zabránilo jejímu 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 rozhraní .NET 5 a novějším nebo v rozhraní .NET Framework.

V .NET jsou informace o chybě vymazány (nastaveny na 0) před vyvoláním volaného, pokud je toto pole nastaveno na truehodnotu . V rozhraní .NET Framework nejsou informace o chybě vymazány. To znamená, že informace o chybě vrácené rozhraním GetLastPInvokeError a GetLastWin32Error na platformě .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/volání do dalšího.

Platí pro

Viz také