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. |