Partager via


DllImportAttribute.SetLastError Champ

Définition

Indique si l’appelé définit une erreur (SetLastError sur Windows ou errno sur d’autres plateformes) avant de retourner à partir de la méthode avec attributs.

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

Valeur de champ

Exemples

Dans certains cas, les développeurs Visual Basic utilisent l’instruction DllImportAttribute, au lieu d’utiliser l’instruction Declare , pour définir une fonction DLL dans le code managé. La définition du SetLastError champ est l’un de ces cas.

[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

Remarques

true pour indiquer que l’appelé définit une erreur via SetLastError sur Windows ou errno sur d’autres plateformes ; sinon, false. Par défaut, il s’agit de false.

Si ce champ est défini sur true, le marshaleur d’exécution appelle GetLastError ou errno et met en cache la valeur retournée pour empêcher son remplacement par d’autres appels d’API. Vous pouvez récupérer le code d’erreur en appelant GetLastPInvokeError sur .NET 6.0 et versions ultérieures ou GetLastWin32Error sur .NET 5 et versions antérieures ou .NET Framework.

Sur .NET, les informations d’erreur sont effacées (définie sur 0) avant d’appeler l’appelé lorsque ce champ a la valeur true. Sur .NET Framework, les informations d’erreur ne sont pas effacées. Cela signifie que les informations d’erreur retournées par GetLastPInvokeError et GetLastWin32Error sur .NET représentent uniquement les informations d’erreur du dernier p/invoke avec DllImportAttribute.SetLastError la valeur true. Sur .NET Framework, les informations sur l’erreur peuvent être conservées d’un p/invoke à l’autre.

S’applique à

Voir aussi