DllImportAttribute.SetLastError Поле

Определение

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

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

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

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/invoke к следующему.

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

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