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.

C#
public bool SetLastError;

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.

C#
internal static class NativeMethods
{
    [DllImport("user32.dll", SetLastError = true)]
    internal static extern int MessageBoxA(
        IntPtr hWnd, string lpText, string lpCaption, uint uType);
}

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

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Consulte también