Partager via


Interprétation des codes d’erreur

Une fois que vous avez déterminé quelle application est la source d’un problème, vous devez déterminer l’erreur qui s’est produite. Les erreurs sont générées et signalées dans différents formats, en fonction de la langue utilisée par votre application.

Dans Microsoft Visual C++, les valeurs de réussite, d’avertissement et d’échec sont retournées à l’aide d’un nombre 32 bits appelé HRESULT. Pour obtenir la liste des valeurs HRESULT définies par le système, consultez le fichier d’en-tête Winerror.h inclus dans le Kit de développement logiciel (SDK) Windows. Ce fichier inclut tous les codes d’erreur ET descriptions COM+. Pour plus d’informations sur les valeurs HRESULT , consultez Gestion des erreurs.

Dans le langage Java, une instance de com.ms.com.ComFailException est levée pour indiquer l’échec, où l’objet ComFailException spécifie un HRESULT. Une instance de com.ms.com.ComSuccessException indique la réussite avec une valeur de retour False. Pour plus d’informations sur l’interprétation de ces exceptions, consultez la documentation Microsoft Visual J++.

Notes

Les processus de serveur d’applications COM+ qui hébergent des objets Visual J++ ne seront pas inactifs (même avec zéro objet actif), sauf si vous désactivez le débogage JIT dans l’IDE VJ6. Pour plus d’informations sur la procédure à suivre, consultez la documentation Visual J++.

En Visual Basic, vous pouvez récupérer les valeurs HRESULT en examinant la propriété Err.Number. Une description de l’erreur peut être récupérée avec la propriété Err.Description.

Vous pouvez également utiliser l’utilitaire ERRLOOK dans Microsoft Visual Studio pour récupérer un message d’erreur système ou un message d’erreur de module. ERRLOOK récupère automatiquement le texte du message d’erreur si vous faites glisser-déplacer une valeur hexadécimale ou décimale à partir du débogueur Visual Studio ou d’une autre application avec Automation. Vous pouvez également entrer une valeur en la tapant ou en la collant à partir du Presse-papiers IDE, puis en cliquant sur l’option Rechercher .

La méthode C++ suivante imprime une description de l’erreur, en fonction de l’entrée HRESULT.

#include <stdio.h>
#include <windows.h>
#include <tchar.h>

void ErrorDescription(HRESULT hr) 
{ 
     if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) 
         hr = HRESULT_CODE(hr); 
     TCHAR* szErrMsg; 

     if(FormatMessage( 
       FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, 
       NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
       (LPTSTR)&szErrMsg, 0, NULL) != 0) 
     { 
         _tprintf(TEXT("%s"), szErrMsg); 
         LocalFree(szErrMsg); 
     } else 
         _tprintf( TEXT("[Could not find a description for error # %#x.]\n"), hr); 
}

Le tableau suivant fournit des descriptions des codes d’erreur courants dans COM+.

Codes d’erreur Définitions
COMADMIN_E_ALREADYINSTALLED
L’objet est déjà inscrit.
COMADMIN_E_APP_FILE_READFAIL
Une erreur s’est produite lors de la lecture du fichier d’application.
COMADMIN_E_APP_FILE_VERSION
Numéro de version non valide dans le fichier d’application.
COMADMIN_E_APP_FILE_WRITEFAIL
Une erreur s’est produite lors de l’écriture dans le fichier d’application.
COMADMIN_E_APPDIRNOTFOUND
Le répertoire d’installation de l’application est introuvable.
COMQC_E_APPLICATION_NOT_QUEUED
Seules les applications COM+ marquées « en file d’attente » peuvent être créées à l’aide du moniker « file d’attente ».
COMADMIN_E_APPLICATIONEXISTS
L’application est déjà installée.
COMADMIN_E_APPLID_MATCHES_CLSID
Un CLSID avec le même GUID que le nouvel ID d’application est déjà installé sur cet ordinateur.
COMADMIN_E_APP_NOT_RUNNING
L’application spécifiée n’est pas en cours d’exécution.
COMADMIN_E_AUTHENTICATIONLEVEL
Impossible de définir le niveau d’authentification requis pour la demande de mise à jour.
COMADMIN_E_BADPATH
Le chemin du fichier n’est pas valide.
COMADMIN_E_BADREGISTRYLIBID
L’ID de bibliothèque de type inscrit n’est pas valide.
COMADMIN_E_BADREGISTRYPROGID
Le ProgID du composant est manquant ou endommagé.
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY
Le proxy d’application n’est pas exportable.
COMADMIN_E_CAN_NOT_START_APP
Échec du démarrage de l’application, car il s’agit d’une application de bibliothèque ou d’un proxy d’application.
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP
L’application système n’est pas exportable.
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT
L’utilisateur ne peut pas s’abonner à ce composant, car il a peut-être été importé.
COMADMIN_E_CANTCOPYFILE
Une erreur s’est produite lors de la copie du fichier.
COMADMIN_E_CLSIDORIIDMISMATCH
Les CLSID ou LES ID de fichier d’application ne correspondent pas aux DLL correspondantes.
COMADMIN_E_COMP_MOVE_BAD_DEST
Le déplacement du composant a échoué, car l’application de destination n’existe plus.
COMADMIN_E_COMP_MOVE_LOCKED
Le déplacement du composant a été refusé, car l’application source ou de destination est une application système ou est actuellement verrouillée contre les modifications.
COMADMIN_E_COMPFILE_BADTLB
Impossible de charger la bibliothèque de types.
COMADMIN_E_COMPFILE_CLASSNOTAVAIL
La DLL ne prend pas en charge les composants répertoriés dans la bibliothèque de types.
COMADMIN_E_COMPFILE_DOESNOTEXIST
Ce fichier n’existe pas.
COMADMIN_E_COMPFILE_GETCLASSOBJ
La méthode GetClassObject a échoué dans la DLL.
COMADMIN_E_COMPFILE_LOADDLLFAIL
Impossible de charger la DLL.
COMADMIN_E_COMPFILE_NOREGISTRAR
Le bureau d’enregistrement de composants référencé dans ce fichier n’est pas disponible.
COMADMIN_E_COMPFILE_NOTINSTALLABLE
Le fichier ne contient pas de composants ou d’informations sur les composants.
COMADMIN_E_COREQCOMPINSTALLED
Un composant de la même DLL est déjà installé.
COMADMIN_E_DLLLOADFAILED
Impossible de charger la DLL.
COMADMIN_E_DLLREGISTERSERVER
La fonction DllRegisterServer a échoué lorsque le composant a été installé.
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
Une classe d’événements ne peut pas être configurée en tant que composant d’abonné. Lorsqu’une tentative de création d’un abonnement avec une classe d’événements en tant qu’abonné est effectuée, cette erreur est retournée.
COMADMIN_E_INVALIDUSERIDS
Un ou plusieurs utilisateurs du fichier d’application ne sont pas valides.
COMADMIN_E_KEYMISSING
L’objet est introuvable dans le catalogue.
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE
Les applications de bibliothèque et les proxys d’application ne sont pas compatibles. Cette erreur est retournée lorsqu’une tentative d’exportation d’un proxy d’application est effectuée et que la propriété d’activation de l’application est une bibliothèque.
COMADMIN_E_NOREGISTRYCLSID
Le CLSID du composant est manquant ou endommagé.
COMADMIN_E_NOSERVERSHARE
Aucun partage de fichiers serveur n’est disponible.
COMADMIN_E_NOTCHANGEABLE
Les modifications apportées à cet objet et à ses sous-objets ont été désactivées.
COMADMIN_E_NOTDELETEABLE
La fonction delete a été désactivée pour cet objet.
COMADMIN_E_NOTINREGISTRY
L’objet est introuvable dans le Registre.
COMADMIN_E_NOUSER
Un ou plusieurs utilisateurs ne sont pas valides.
COMADMIN_E_OBJECT_DOES_NOT_EXIST
L’un des objets spécifiés est introuvable.
COMADMIN_E_OBJECT_PARENT_MISSING
L’un des objets insérés ou mis à jour n’appartient pas à une collection parente valide.
COMADMIN_E_OBJECTERRORS
Des erreurs se sont produites lors de l’accès à un ou plusieurs objets. Pour plus d’informations, consultez la collection ErrorInfo .
COMADMIN_E_OBJECTEXISTS
L’objet que vous tentez d’ajouter ou de renommer existe déjà.
COMADMIN_E_OBJECTINVALID
Une ou plusieurs propriétés de l’objet sont manquantes ou non valides.
COMADMIN_E_OBJECTNOTPOOLABLE
Cet objet ne peut pas être mis en pool.
COMADMIN_E_PROPERTYSAVEFAILED
Un ou plusieurs paramètres de propriété ne sont pas valides ou sont en conflit les uns avec les autres.
COMADMIN_E_PROPERTY_OVERFLOW
La valeur de la propriété est trop grande.
COMADMIN_E_REGFILE_CORRUPT
Le fichier d’inscription est endommagé.
COMADMIN_E_REGISTERTLB
Le système n’a pas pu inscrire la bibliothèque de types.
COMADMIN_E_REGISTRARFAILED
Des erreurs se sont produites dans le bureau d’enregistrement de composants.
COMADMIN_E_REMOTEINTERFACE
Les informations d’interface sont manquantes ou modifiées.
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM
Cette opération n’est pas activée sur cette plateforme.
COMADMIN_E_ROLE_DOES_NOT_EXIST
Un rôle attribué à un composant, une interface ou une méthode n’existe pas dans l’application.
COMADMIN_E_ROLEEXISTS
Le rôle existe déjà.
COMADMIN_E_SERVICENOTINSTALLED
Le service n’est pas installé.
COMADMIN_E_SESSION
La version du catalogue de serveurs n’est pas prise en charge.
COMADMIN_S_SOMEALREADYPAUSED
Un ou plusieurs des processus d’application spécifiés ont déjà été suspendus.
COMADMIN_S_SOMEALREADYRUNNING
Un ou plusieurs des processus d’application spécifiés étaient déjà en cours d’exécution.
COMADMIN_E_START_APP_NEEDS_COMPONENTS
Pour démarrer l’application, vous devez avoir des composants dans une application.
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE
Les applications COM+ qui s’exécutent en tant que service NT peuvent ne pas être marquées comme étant regroupées ou recyclées.
COMADMIN_E_SYSTEMAPP
Cette opération ne peut pas être effectuée sur l’application système.
COMADMIN_E_USER_IN_SET
Un ou plusieurs utilisateurs sont déjà affectés à un jeu de partitions local.
COMADMIN_E_USERPASSWDNOTVALID
L’identité ou le mot de passe défini sur l’application n’est pas valide.

Isolation des erreurs et stratégie de restauration rapide

Recherche de la source d’une erreur

Comment COM+ modifie les valeurs de retour

Stratégies de gestion des erreurs dans COM+

Dépannage