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