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 сведения об ошибке не очищаются. Это означает, что сведения об ошибке, возвращаемые и GetLastWin32Error в .NET, представляют только сведения об ошибке из последнего вызова p/invoke с DllImportAttribute.SetLastError параметром GetLastPInvokeError .true На платформа .NET Framework сведения об ошибке могут сохраняться от одного p/invoke к другому.

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

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