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, 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 true
hodnotu . V rozhraní .NET Framework mohou informace o chybě přetrvávat od jednoho volání p/invoke k dalšímu.
Platí pro
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro