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 volver del 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, Visual Basic desarrolladores usan el
[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 de SetLastError en Windows o errno en otras plataformas; de lo contrario, false. El valor predeterminado es false.
Si este campo se establece trueen , el serializador en tiempo de ejecución llama a GetLastError o errno y almacena en caché el valor devuelto para evitar que se sobrescriba mediante otras llamadas API.
Puede recuperar el código de error llamando a GetLastPInvokeError en .NET 6.0 y versiones posteriores o posteriores o GetLastWin32Error en .NET 5 y versiones posteriores o posteriores o .NET Framework.
En .NET, se borra la información de error (establecida en 0) antes de invocar al destinatario cuando este campo está establecido en true. En .NET Framework, no se borra la información de error.
Esto significa que la información de error devuelta por GetLastPInvokeError y GetLastWin32Error en .NET representa solo la información de error de la última p/invoke con DllImportAttribute.SetLastError establecida en true. En .NET Framework, la información de error puede persistir de una p/invoke a la siguiente.