Interpretieren von Fehlercodes

Nachdem Sie ermittelt haben, welche Anwendung die Ursache eines Problems ist, müssen Sie herausfinden, welcher Fehler aufgetreten ist. Fehler werden abhängig von der Sprache, die Ihre Anwendung verwendet, ausgelöst und in unterschiedlichen Formaten gemeldet.

In Microsoft Visual C++ werden Erfolgs-, Warnungs- und Fehlerwerte mithilfe einer 32-Bit-Zahl zurückgegeben, die als HRESULT bezeichnet wird. Eine Liste der systemdefinierte 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 eine Instanz von com.ms.com.ComFailException ausgelöst, um einen Fehler anzugeben, wobei das ComFailException-Objekt ein HRESULT angibt. Eine Instanz von com.ms.com.ComSuccessException gibt 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, befinden sich nicht im Leerlauf (selbst bei null aktiven Objekten), 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 modulfehlermeldung abzurufen. ERRLOOK ruft den Fehlermeldungstext automatisch ab, wenn Sie einen Hexadezimal- oder Dezimalwert per Drag & Drop aus dem Visual Studio Debugger oder einer anderen Automation-fähigen Anwendung ziehen. Sie können einen Wert auch eingeben, indem Sie ihn eingeben oder ihn aus der IDE-Zwischenablage 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-DATEIVERSION _ _
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-ANWENDUNG _ NICHT _ IN WARTESCHLANGE
Nur COM+-Anwendungen, die als "Warteschlange" gekennzeichnet sind, können mit dem Moniker "queue" erstellt werden.
COMADMIN _ E _ APPLICATIONEXISTS
Die Anwendung ist bereits installiert.
COMADMIN _ E _ APPLID _ ENTSPRICHT _ CLSID
Eine CLSID mit der gleichen GUID wie die neue Anwendungs-ID ist bereits auf diesem Computer installiert.
COMADMIN _ _ E-APP _ WIRD NICHT _ AUSGEFÜHRT
Die angegebene Anwendung wird derzeit nicht ausgeführt.
COMADMIN _ E _ AUTHENTICATIONLEVEL
Erforderliche Authentifizierungsebene für 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 _ KANN _ _ _ _ APP-PROXY NICHT EXPORTIEREN
Der Anwendungsproxy kann nicht exportiert werden.
COMADMIN E KANN APP _ _ _ NICHT _ STARTEN _
Fehler beim Starten der Anwendung, da es sich entweder um eine Bibliotheksanwendung oder einen Anwendungsproxy handelt.
COMADMIN _ E _ KANN _ _ _ _ SYS-APP NICHT EXPORTIEREN
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
CLSIDs oder IIDs der Anwendungsdatei stimmen nicht mit den entsprechenden DLLs überein.
COMADMIN _ E _ COMP _ MOVE _ BAD _ DEST
Fehler beim Verschieben der Komponente, weil die Zielanwendung nicht mehr vorhanden ist.
COMADMIN _ E _ COMP _ MOVE _ LOCKED
Das Verschieben der Komponente war nicht zulässig, 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-KLASSENOTAVAIL
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 Abonnent 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 im Katalog nicht gefunden.
COMADMIN _ E _ _ LIB-APP-PROXY _ _ INKOMPATIBEL
Bibliotheksanwendungen und Anwendungsproxys sind nicht kompatibel. 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 delete-Funktion 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-OBJEKT _ IST _ NICHT _ VORHANDEN
Eines der angegebenen Objekte wurde nicht gefunden.
ÜBERGEORDNETES COMADMIN _ _ E-OBJEKT _ _ FEHLT
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-Sammlung.
COMADMIN _ E _ OBJECTEXISTS
Das Objekt, das Sie hinzufügen oder umbenennen möchten, ist bereits vorhanden.
COMADMIN _ E _ OBJECTINVALID
Eine oder mehrere Eigenschaften des Objekts fehlen oder sind 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.
COMADMIN _ E _ PROPERTY _ OVERFLOW
Der Eigenschaftswert ist zu groß.
COMADMIN _ E _ REGFILE _ BESCHÄDIGT
Die Registrierungsdatei ist beschädigt.
COMADMIN _ E _ REGISTERTLB
Das System konnte die Typbibliothek nicht registrieren.
COMADMIN _ E _ REGISTRARFAILED
Fehler bei der Komponentenregistrierungsstelle.
COMADMIN _ E _ REMOTEINTERFACE
Schnittstelleninformationen fehlen oder wurden geändert.
COMADMIN _ E ERFORDERT EINE ANDERE _ _ _ PLATTFORM
Dieser Vorgang ist auf dieser Plattform nicht aktiviert.
COMADMIN _ E ROLE DOES NOT EXIST (COMADMIN _ E-ROLLE _ IST NICHT _ _ VORHANDEN)
Eine Einer Komponente, Schnittstelle oder Methode zugewiesene Rolle 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 benötigen Sie Komponenten in einer Anwendung.
COMADMIN _ E _ SVCAPP _ NOT _ POOLABLE OR _ _ AUSFÜHRBAR
Com+-Anwendungen, die als NT-Dienst ausgeführt werden, werden möglicherweise nicht als in einem Pool zusammengefasst oder wiederverwendet gekennzeichnet.
COMADMIN _ E _ SYSTEMAPP
Dieser Vorgang kann nicht für die Systemanwendung ausgeführt werden.
COMADMIN _ E _ USER _ IN _ SET
Mindestens ein Benutzer ist bereits einem lokalen Partitionssatz zugewiesen.
COMADMIN _ E _ USERPASSWDNOTVALID
Die für die Anwendung festgelegte Identität oder das Kennwort ist ungültig.

Fehlerisolation und Failfast-Richtlinie

Suchen der Fehlerquelle

Ändern von Rückgabewerten durch COM+

Strategien zur Behandlung von Fehlern in COM+

Problembehandlung