DllImportAttribute.SetLastError Pole
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wskazuje, czy obiekt wywoływany ustawia błąd (SetLastError
w systemie Windows lub errno
na innych platformach) przed powrotem z metody przypisanej.
public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean
Wartość pola
Przykłady
W niektórych przypadkach deweloperzy języka Visual Basic używają instrukcji DllImportAttribute, a nie instrukcji Declare
, aby zdefiniować funkcję DLL w kodzie zarządzanym.
SetLastError Ustawienie pola jest jednym z tych przypadków.
[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
Uwagi
true
, aby wskazać, że obiekt wywoływany ustawi błąd za pośrednictwem systemu SetLastError
Windows lub errno
na innych platformach; w przeciwnym razie . false
Wartość domyślna to false
.
Jeśli to pole jest ustawione na true
wartość , marshaler środowiska uruchomieniowego wywołuje GetLastError
lub errno
i buforuje zwracaną wartość, aby zapobiec zastępowaniu jej przez inne wywołania interfejsu API.
Kod błędu można pobrać, wywołując program GetLastPInvokeError .NET 6.0 lub nowszy lub GetLastWin32Error na platformie .NET 5 lub nowszym lub .NET Framework.
Na platformie .NET informacje o błędzie są czyszczone (ustawione na 0
) przed wywołaniem wywoływania obiektu wywoływanego, gdy to pole ma wartość true
. W programie .NET Framework informacje o błędzie nie są czyszczone.
Oznacza to, że informacje o błędzie zwrócone przez program GetLastPInvokeError i na platformie .NET reprezentują tylko informacje o błędzie z ostatniego p/invoke z ustawioną wartością true
DllImportAttribute.SetLastError .GetLastWin32Error W programie .NET Framework informacje o błędzie mogą być utrwalane z jednego p/invoke do następnego.