DllImportAttribute.SetLastError Campo
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 true
en , 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 true
en . 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.