DllImportAttribute.SetLastError Campo

Definición

Indica si el destinatario establece un error (SetLastError en Windows o errno en otras plataformas) antes de devolver desde el método con atributos.

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

Valor de campo

Ejemplos

En algunos casos, los desarrolladores de Visual Basic usan DllImportAttribute, en lugar de usar la Declare instrucción , para definir una función DLL en código administrado. Establecer el SetLastError campo es uno de esos casos.

[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

Comentarios

true para indicar que el destinatario establecerá un error a través SetLastError de en Windows o errno en otras plataformas; en caso contrario, false. El valor predeterminado es false.

Si este campo se establece trueen , el serializador en tiempo de ejecución llama GetLastError a o errno y almacena en caché el valor devuelto para evitar que otras llamadas API lo sobrescriban. Puede recuperar el código de error llamando a GetLastPInvokeError .NET 6.0 y versiones posteriores o GetLastWin32Error en .NET 5 y versiones posteriores o .NET Framework.

En .NET, la información de error se borra (se establece en 0) antes de invocar al destinatario cuando este campo se establece trueen . En .NET Framework, no se borra la información de error. Esto significa que la información de error devuelta por GetLastPInvokeError y en .NET solo representa la información de error de la última p/invoke con establecida en DllImportAttribute.SetLastErrortrue.GetLastWin32Error En .NET Framework, la información de error puede persistir de una p/invoke a la siguiente.

Se aplica a

Consulte también