DllImportAttribute.SetLastError Campo
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
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
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.
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 |
Comentarios de .NET
.NET é un proxecto de código aberto. Selecciona unha ligazón para ofrecer comentarios: