Interpretieren von Fehlercodes
Nachdem Sie ermittelt haben, welche Anwendung die Ursache eines Problems ist, müssen Sie herausfinden, welcher Fehler aufgetreten ist. Fehler werden in unterschiedlichen Formaten ausgelöst und gemeldet, abhängig von der Sprache, die Ihre Anwendung verwendet.
In Microsoft Visual C++ werden Erfolgs-, Warnungs- und Fehlerwerte mithilfe einer 32-Bit-Zahl zurückgegeben, die als HRESULT bezeichnet wird. Eine Liste systemdefinierter HRESULT-Werte finden Sie in der Headerdatei Winerror.h, die im Windows SDK enthalten ist. Diese Datei enthält alle COM+-Fehlercodes und -Beschreibungen. Weitere Informationen zu HRESULT-Werten finden Sie unter Fehlerbehandlung.
In der Java-Sprache wird ein instance von com.ms.com.ComFailException ausgelöst, um auf einen Fehler hinzuweisen, bei dem das ComFailException-Objekt ein HRESULT angibt. Eine instance von com.ms.com.ComSuccessException zeigt den Erfolg mit dem Rückgabewert False an. Informationen zum Interpretieren dieser Ausnahmen finden Sie in der Microsoft Visual J++-Dokumentation.
Hinweis
COM+-Anwendungsserverprozesse, die Visual J++-Objekte hosten, werden nicht im Leerlauf (auch nicht mit null aktiven Objekten) ausgeführt, es sei denn, Sie deaktivieren das JIT-Debuggen in der VJ6-IDE. Informationen dazu finden Sie in der Visual J++-Dokumentation.
In Visual Basic können Sie HRESULT-Werte abrufen, indem Sie die Err.Number-Eigenschaft untersuchen. Eine Beschreibung des Fehlers kann mit der Err.Description-Eigenschaft abgerufen werden.
Sie können auch das Hilfsprogramm ERRLOOK in Microsoft Visual Studio verwenden, um eine Systemfehlermeldung oder eine Modulfehlermeldung abzurufen. ERRLOOK ruft den Fehlermeldungstext automatisch ab, wenn Sie einen Hexadezimal- oder Dezimalwert aus dem Visual Studio-Debugger oder einer anderen Automation-fähigen Anwendung ziehen und ablegen. Sie können einen Wert auch eingeben, indem Sie ihn aus der Zwischenablage der IDE eingeben oder einfügen und auf die Option Suchen klicken.
Die folgende C++-Methode gibt basierend auf der Eingabe HRESULT eine Beschreibung des Fehlers aus.
#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);
}
Die folgende Tabelle enthält Beschreibungen allgemeiner Fehlercodes in COM+.
Fehlercodes | Definitionen |
---|---|
COMADMIN_E_ALREADYINSTALLED |
Das Objekt ist bereits registriert. |
COMADMIN_E_APP_FILE_READFAIL |
Fehler beim Lesen der Anwendungsdatei. |
COMADMIN_E_APP_FILE_VERSION |
Ungültige Versionsnummer in der Anwendungsdatei. |
COMADMIN_E_APP_FILE_WRITEFAIL |
Fehler beim Schreiben in die Anwendungsdatei. |
COMADMIN_E_APPDIRNOTFOUND |
Das Anwendungsinstallationsverzeichnis wurde nicht gefunden. |
COMQC_E_APPLICATION_NOT_QUEUED |
Nur com+-Anwendungen, die als "queued" gekennzeichnet sind, können mit dem Moniker "queue" erstellt werden. |
COMADMIN_E_APPLICATIONEXISTS |
Die Anwendung ist bereits installiert. |
COMADMIN_E_APPLID_MATCHES_CLSID |
Auf diesem Computer ist bereits eine CLSID mit derselben GUID wie die neue Anwendungs-ID installiert. |
COMADMIN_E_APP_NOT_RUNNING |
Die angegebene Anwendung wird derzeit nicht ausgeführt. |
COMADMIN_E_AUTHENTICATIONLEVEL |
Die erforderliche Authentifizierungsebene für die Updateanforderung kann nicht festgelegt werden. |
COMADMIN_E_BADPATH |
Der Dateipfad ist ungültig. |
COMADMIN_E_BADREGISTRYLIBID |
Die ID der registrierten Typbibliothek ist ungültig. |
COMADMIN_E_BADREGISTRYPROGID |
Die ProgID der Komponente fehlt oder ist beschädigt. |
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY |
Der Anwendungsproxy kann nicht exportiert werden. |
COMADMIN_E_CAN_NOT_START_APP |
Fehler beim Starten der Anwendung, da es sich entweder um eine Bibliotheksanwendung oder einen Anwendungsproxy handelt. |
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP |
Die Systemanwendung kann nicht exportiert werden. |
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT |
Der Benutzer kann diese Komponente nicht abonnieren, da die Komponente möglicherweise importiert wurde. |
COMADMIN_E_CANTCOPYFILE |
Fehler beim Kopieren der Datei. |
COMADMIN_E_CLSIDORIIDMISMATCH |
Anwendungsdatei-CLSIDs oder -IIDs entsprechen nicht den entsprechenden DLLs. |
COMADMIN_E_COMP_MOVE_BAD_DEST |
Fehler beim Verschieben der Komponente, da die Zielanwendung nicht mehr vorhanden ist. |
COMADMIN_E_COMP_MOVE_LOCKED |
Die Verschiebung der Komponente wurde nicht zugelassen, da die Quell- oder Zielanwendung entweder eine Systemanwendung ist oder derzeit für Änderungen gesperrt ist. |
COMADMIN_E_COMPFILE_BADTLB |
Die Typbibliothek konnte nicht geladen werden. |
COMADMIN_E_COMPFILE_CLASSNOTAVAIL |
Die DLL unterstützt die in der Typbibliothek aufgeführten Komponenten nicht. |
COMADMIN_E_COMPFILE_DOESNOTEXIST |
Diese Datei ist nicht vorhanden. |
COMADMIN_E_COMPFILE_GETCLASSOBJ |
Fehler bei der GetClassObject-Methode in der DLL. |
COMADMIN_E_COMPFILE_LOADDLLFAIL |
Die DLL konnte nicht geladen werden. |
COMADMIN_E_COMPFILE_NOREGISTRAR |
Die Komponentenregistrierungsstelle, auf die in dieser Datei verwiesen wird, ist nicht verfügbar. |
COMADMIN_E_COMPFILE_NOTINSTALLABLE |
Die Datei enthält keine Komponenten oder Komponenteninformationen. |
COMADMIN_E_COREQCOMPINSTALLED |
Eine Komponente in derselben DLL ist bereits installiert. |
COMADMIN_E_DLLLOADFAILED |
Die DLL konnte nicht geladen werden. |
COMADMIN_E_DLLREGISTERSERVER |
Fehler bei der DllRegisterServer-Funktion , als die Komponente installiert wurde. |
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER |
Eine Ereignisklasse kann nicht als Abonnentenkomponente konfiguriert werden. Wenn versucht wird, ein Abonnement mit einer Ereignisklasse als Abonnenten zu erstellen, wird dieser Fehler zurückgegeben. |
COMADMIN_E_INVALIDUSERIDS |
Mindestens ein Benutzer in der Anwendungsdatei ist ungültig. |
COMADMIN_E_KEYMISSING |
Das Objekt wurde nicht im Katalog gefunden. |
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE |
Bibliotheksanwendungen und Anwendungsproxys sind inkompatibel. Dieser Fehler wird zurückgegeben, wenn versucht wird, einen Anwendungsproxy zu exportieren und die Aktivierungseigenschaft der Anwendung eine Bibliothek ist. |
COMADMIN_E_NOREGISTRYCLSID |
Die CLSID der Komponente fehlt oder ist beschädigt. |
COMADMIN_E_NOSERVERSHARE |
Es ist keine Serverdateifreigabe verfügbar. |
COMADMIN_E_NOTCHANGEABLE |
Änderungen an diesem Objekt und seinen Unterobjekten wurden deaktiviert. |
COMADMIN_E_NOTDELETEABLE |
Die Löschfunktion wurde für dieses Objekt deaktiviert. |
COMADMIN_E_NOTINREGISTRY |
Das Objekt wurde in der Registrierung nicht gefunden. |
COMADMIN_E_NOUSER |
Mindestens ein Benutzer ist ungültig. |
COMADMIN_E_OBJECT_DOES_NOT_EXIST |
Eines der angegebenen Objekte kann nicht gefunden werden. |
COMADMIN_E_OBJECT_PARENT_MISSING |
Eines der Objekte, die eingefügt oder aktualisiert werden, gehört nicht zu einer gültigen übergeordneten Auflistung. |
COMADMIN_E_OBJECTERRORS |
Fehler beim Zugriff auf ein oder mehrere Objekte. Weitere Informationen finden Sie in der ErrorInfo-Auflistung . |
COMADMIN_E_OBJECTEXISTS |
Das Objekt, das Sie hinzufügen oder umbenennen möchten, ist bereits vorhanden. |
COMADMIN_E_OBJECTINVALID |
Mindestens eine der Eigenschaften des Objekts fehlt oder ist ungültig. |
COMADMIN_E_OBJECTNOTPOOLABLE |
Dieses Objekt kann nicht in einem Pool zusammengefasst werden. |
COMADMIN_E_PROPERTYSAVEFAILED |
Eine oder mehrere Eigenschafteneinstellungen sind entweder ungültig oder stehen in Konflikt miteinander. |
COMADMIN_E_PROPERTY_OVERFLOW |
Der Eigenschaftswert ist zu groß. |
COMADMIN_E_REGFILE_CORRUPT |
Die Registrierungsdatei ist beschädigt. |
COMADMIN_E_REGISTERTLB |
Das System konnte die Typbibliothek nicht registrieren. |
COMADMIN_E_REGISTRARFAILED |
Fehler sind in der Komponentenregistrierungsstelle aufgetreten. |
COMADMIN_E_REMOTEINTERFACE |
Schnittstelleninformationen fehlen oder werden geändert. |
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM |
Dieser Vorgang ist auf dieser Plattform nicht aktiviert. |
COMADMIN_E_ROLE_DOES_NOT_EXIST |
Eine Rolle, die einer Komponente, Schnittstelle oder Methode zugewiesen ist, ist in der Anwendung nicht vorhanden. |
COMADMIN_E_ROLEEXISTS |
Die Rolle ist bereits vorhanden. |
COMADMIN_E_SERVICENOTINSTALLED |
Der Dienst ist nicht installiert. |
COMADMIN_E_SESSION |
Die Serverkatalogversion wird nicht unterstützt. |
COMADMIN_S_SOMEALREADYPAUSED |
Mindestens einer der angegebenen Anwendungsprozesse wurde bereits angehalten. |
COMADMIN_S_SOMEALREADYRUNNING |
Mindestens einer der angegebenen Anwendungsprozesse wurde bereits ausgeführt. |
COMADMIN_E_START_APP_NEEDS_COMPONENTS |
Zum Starten der Anwendung müssen Komponenten in einer Anwendung vorhanden sein. |
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE |
Die COM+-Anwendungen, die als NT-Dienst ausgeführt werden, werden möglicherweise nicht als pooled oder recycled markiert. |
COMADMIN_E_SYSTEMAPP |
Dieser Vorgang kann nicht für die Systemanwendung ausgeführt werden. |
COMADMIN_E_USER_IN_SET |
Mindestens ein Benutzer ist bereits einer lokalen Partitionsgruppe zugewiesen. |
COMADMIN_E_USERPASSWDNOTVALID |
Die für die Anwendung festgelegte Identität oder das Kennwort ist ungültig. |