DllImportAttribute.SetLastError Поле

Определение

Указывает, задает ли вызывающий объект ошибку (SetLastError на Windows или errno на других платформах) перед возвратом из метода атрибута.

public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean 

Значение поля

Примеры

В некоторых случаях разработчики Visual Basic используют DllImportAttribute вместо использования инструкции Declare для определения функции DLL в управляемом коде. SetLastError Установка поля является одним из этих случаев.

[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

Комментарии

true, чтобы указать, что вызывающий объект установит ошибку через SetLastError на Windows или errno на других платформах; в противном случае false. Значение по умолчанию — false.

Если для этого поля задано trueзначение, маршалер среды выполнения вызывает GetLastError или errno кэширует возвращаемое значение, чтобы предотвратить перезапись другими вызовами API. Код ошибки можно получить, вызвав GetLastPInvokeError на .NET 6.0 и более поздних версий или GetLastWin32Error в .NET 5 и ниже или .NET Framework.

В .NET сведения об ошибке очищаются (задано значение 0) перед вызовом вызываемого объекта, если для этого поля задано значение true. В .NET Framework сведения об ошибке не очищаются. Это означает, что сведения об ошибке, возвращаемые GetLastPInvokeError и GetLastWin32Error на .NET, представляют только сведения об ошибке из последнего p/вызова с DllImportAttribute.SetLastError, для параметра true. В .NET Framework сведения об ошибке могут сохраняться от одного p/вызова к следующему.

Применяется к

См. также раздел