Freigeben über


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.

Fehlerisolation und Failfast-Richtlinie

Ermitteln der Fehlerquelle

So ändert COM+ Rückgabewerte

Strategien für die Behandlung von Fehlern in COM+

Problembehandlung