DllImportAttribute.SetLastError Campo

Definição

Indica se o receptor define um erro (SetLastError no Windows ou errno em outras plataformas) antes de retornar do método atribuído.

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

Valor do campo

Exemplos

Em alguns casos, os desenvolvedores do Visual Basic usam o DllImportAttribute, em vez de usar a Declare instrução , para definir uma função DLL no código gerenciado. Definir o SetLastError campo é um desses 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

Comentários

true para indicar que o receptor definirá um erro via SetLastError no Windows ou errno em outras plataformas; caso contrário, false. O padrão é false.

Se esse campo for definido truecomo , o marshaler de runtime chamará GetLastError ou errno e armazenará em cache o valor retornado para impedir que ele seja substituído por outras chamadas à API. Você pode recuperar o código de erro chamando GetLastPInvokeError no .NET 6.0 e superior ou GetLastWin32Error no .NET 5 e abaixo ou .NET Framework.

No .NET, as informações de erro são limpas (definidas 0como ) antes de invocar o receptor quando esse campo é definido truecomo . Em .NET Framework, as informações de erro não são limpas. Isso significa que as informações de erro retornadas por GetLastPInvokeError e GetLastWin32Error no .NET representam apenas as informações de erro do último p/invoke com definido truecomo DllImportAttribute.SetLastError . Em .NET Framework, as informações de erro podem persistir de um p/invoke para o próximo.

Aplica-se a

Confira também