Udostępnij za pośrednictwem


DllImportAttribute.SetLastError Pole

Definicja

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 truewartość , 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ą trueDllImportAttribute.SetLastError .GetLastWin32Error W programie .NET Framework informacje o błędzie mogą być utrwalane z jednego p/invoke do następnego.

Dotyczy

Zobacz też