Comment donner un sens aux codes d'erreurs renvoyés par les API ?
Lorsque une erreur se produit lors de l'appel à une API, généralement
celle-ci retourne un code d'erreur différent de 0. Cependant, deux cas de
figures peuvent se présenter. L'API peut soit renvoyer un code qui diffère
pour chaque erreur, soit renvoyer un code générique signalant simplement
qu'une erreur s'est produite. Dans le deuxième cas, vous devrez alors employer
l'API GetLastError qui vous permettra de connaître avec plus de précision le
code de l'erreur.
Une fois que vous connaissez le code exact de l'erreur qui vient de se
produire, il ne vous reste plus qu'à employer l'API FormatMessage. Cette API
permet en effet de retourner le message correspondant à un code d'erreur.
Voici l'exemple d'une fonction mettant en oeuvre l'utilisation de l'API
FormatMessage :
' Déclaration de l'API
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA"
(ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal
dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments
As Long) As Long
' Déclaration des constantes
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
Private Const LANG_NEUTRAL = &H0
Private Function GetAPIErrorMessage(ByVal ErrCode As Long) As String
Dim sBuffer As String ' Définit un buffer contenant le
message
Dim nBufferSize As Long ' Taille du buffer
nBufferSize = 1024
sBuffer = String$(nBufferSize, Chr$(0))
nBufferSize = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal
0&, ErrCode, LANG_NEUTRAL, sBuffer, nBufferSize, ByVal 0&)
If nBufferSize > 0 Then
GetAPIErrorMessage = Left$(sBuffer,
nBufferSize)
ElseIf nBufferSize = 0 Then
GetAPIErrorMessage = "Erreur
" & ErrCode & " non définie."
End If
End Function
Private Sub Form_Load()
Const ERROR_BAD_USERNAME = 2202&
MsgBox GetAPIErrorMessage(ERROR_BAD_USERNAME)
End Sub
Une autre solution pour retrouver la signification des erreurs renvoyées par
les API est de consulter cette page de la SDK : Platform
SDK: Debugging and Error Handling System Error Codes. |
Date de publication : 14 juillet 2002
Dernière modification : 14 juillet 2002
Rubriques : API
Mots-clés : API, erreurs, codes, numéros, sens, messages, FormatMessage, GetLastError, valeurs retournées |