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
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, false
jinak . 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 true
hodnotu . 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 true
hodnotu . V rozhraní .NET Framework mohou informace o chybě přetrvávat od jednoho volání p/volání do dalšího.