Obtenir le message d'erreur d'une fonction Win32

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 142 fois - Téléchargée 6 fois

Contenu du snippet

.5 ' using System.Runtime.InteropServices;

<DllImport("kernel32.dll", CharSet := CharSet.Auto)> _
Private Shared Function FormatMessage(ByVal dwFlags As UInteger, ByVal lpSource As IntPtr, ByVal dwMessageId As UInteger, ByVal dwLanguageId As UInteger, ByRef lpBuffer As IntPtr, ByVal nSize As UInteger, _ 
ByVal Arguments As IntPtr) As UInteger

End Function
Public Function GetLastWin32ErrorMessage() As String 
Return GetLastWin32ErrorMessage(Marshal.GetLastWin32Error())

End Function
Public Function GetLastWin32ErrorMessage(ByVal errorCode As Integer) As String 
Dim buffer As IntPtr = IntPtr.Zero
Dim cnt As UInteger = FormatMessage(256 Or 512 Or 4096, IntPtr.Zero, DirectCast(errorCode, UInteger), 0, buffer, 0, _ 
IntPtr.Zero)
If cnt = 0 OrElse buffer = IntPtr.Zero Then 
Return [String].Format("Unknown error: {0}.", errorCode)
End IfDim errorMessage As String = Marshal.PtrToStringAuto(buffer, DirectCast(cnt, Integer)) 
Marshal.FreeHGlobal(buffer)

Return errorMessage

End Function


Compatibilité : VB 2005, VB.NET 1.x

Disponible dans d'autres langages :

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.