Tolka felkoder
När du har fastställt vilket program som är orsaken till ett problem måste du ta reda på vilket fel som har inträffat. Fel utlöses och rapporteras i olika format, beroende på vilket språk programmet använder.
I Microsoft Visual C++ returneras värdena för lyckade, varningar och fel med ett 32-bitarstal som kallas HRESULT. En lista över systemdefinierade HRESULT- värden finns i huvudfilen Winerror.h som ingår i Windows SDK. Den här filen innehåller alla COM+-felkoder och beskrivningar. Mer information om HRESULT--värden finns i Felhantering.
I Java-programmeringen genereras en instans av com.ms.com.ComFailException för att signalera ett fel, där ComFailException-objektet anger en HRESULT. En instans av com.ms.com.ComSuccessException indikerar framgång med returvärdet False. Information om hur du tolkar dessa undantag finns i Microsoft Visual J++-dokumentationen.
Note
COM+-programserverprocesser som är värdar för Visual J++-objekt kommer inte att vara inaktiva (även med noll aktiva objekt) om du inte inaktiverar JIT-felsökning i VJ6 IDE. Information om hur du gör det finns i dokumentationen för Visual J++.
I Visual Basic kan du hämta HRESULT- värden genom att undersöka egenskapen Err.Number. En beskrivning av felet kan hämtas med egenskapen Err.Description.
Du kan också använda ERRLOOK-verktyget i Microsoft Visual Studio för att hämta ett systemfelmeddelande eller ett modulfelmeddelande. ERRLOOK hämtar felmeddelandetexten automatiskt om du drar och släpper ett hexadecimalt eller decimalvärde från Visual Studio-felsökningsprogrammet eller något annat Automation-aktiverat program. Du kan också ange ett värde genom att antingen skriva det i eller klistra in det från IDE-urklipp och klicka på alternativet Slå upp.
Följande C++-metod skriver ut en beskrivning av felet baserat på indata 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);
}
Följande tabell innehåller beskrivningar av vanliga felkoder i COM+.
Felkoder | Definitioner |
---|---|
COMADMIN_E_ALREADYINSTALLED |
Objektet är redan registrerat. |
COMADMIN_E_APP_FILE_READFAIL – Misslyckades med att läsa appsfilen |
Det uppstod ett fel vid läsning av programfilen. |
COMADMIN_E_APP_FILE_VERSION |
Ogiltigt versionsnummer i programfilen. |
COMADMIN_E_APP_FILE_WRITEFAIL |
Det uppstod ett fel vid skrivning till programfilen. |
COMADMIN_E_APPDIRNOTFOUND |
Det gick inte att hitta programinstallationskatalogen. |
COMQC_E_APPLICATION_NOT_QUEUED |
Endast COM+-program som är märkta "i kö" kan skapas med hjälp av "kö"-monikern. |
COMADMIN_E_APPLICATIONEXISTS |
Programmet är redan installerat. |
COMADMIN_E_APPLID_MATCHES_CLSID |
Ett CLSID med samma GUID som det nya program-ID:t är redan installerat på den här datorn. |
COMADMIN_E_APP_NOT_RUNNING |
Det angivna programmet körs inte för närvarande. |
COMADMIN_E_AUTHENTICATIONLEVEL |
Det går inte att ange nödvändig autentiseringsnivå för uppdateringsbegäran. |
COMADMIN_E_BADPATH |
Filsökvägen är ogiltig. |
COMADMIN_E_BADREGISTRYLIBID |
Det registrerade typbiblioteks-ID:t är ogiltigt. |
COMADMIN_E_BADREGISTRYPROGID |
Komponentens ProgID saknas eller är skadad. |
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY |
Programproxyn kan inte exporteras. |
COMADMIN_E_KAN_INTE_STARTA_APP |
Det gick inte att starta programmet eftersom det antingen är ett biblioteksprogram eller en programproxy. |
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP |
Systemprogrammet kan inte exporteras. |
COMADMIN_E_KAN_INTE_PRENUMERERA_PÅ_KOMPONENT |
Användaren kan inte prenumerera på den här komponenten eftersom komponenten kan ha importerats. |
COMADMIN_E_CANTCOPYFILE |
Ett fel uppstod när filen skulle kopieras. |
COMADMIN_E_CLSIDORIIDMISMATCH |
CLSID:er eller IID:er i programfilen matchar inte motsvarande DLL:er. |
COMADMIN_E_COMP_MOVE_BAD_DEST - Felaktig måldestination för komponentflytt |
Komponentflytten misslyckades eftersom målprogrammet inte längre finns. |
COMADMIN_E_COMP_MOVE_LOCKED |
Komponentflytten tilläts inte eftersom käll- eller målprogrammet antingen är ett systemprogram eller för närvarande är låst mot ändringar. |
COMADMIN_E_COMPFILE_BADTLB |
Det gick inte att läsa in typbiblioteket. |
COMADMIN_E_COMPFILE_CLASSNOTAVAIL |
DLL-filen stöder inte de komponenter som anges i typbiblioteket. |
COMADMIN_E_COMPFILE_DOESNOTEXIST |
Den här filen finns inte. |
COMADMIN_E_COMPFILE_GETCLASSOBJ |
Metoden GetClassObject misslyckades i DLL-filen. |
COMADMIN_E_COMPFILE_LOADDLLFAIL |
DLL:en kunde inte läsas in. |
COMADMIN_E_COMPFILE_NOREGISTRAR |
Komponentregistratorn som refereras i den här filen är inte tillgänglig. |
COMADMIN_E_COMPFILE_NOTINSTALLABLE |
Filen innehåller inte komponenter eller komponentinformation. |
COMADMIN_E_COREQCOMPINSTALLED |
En komponent i samma DLL är redan installerad. |
COMADMIN_E_DLLLOADFAILED |
DLL:en kunde inte läsas in. |
COMADMIN_E_DLLREGISTERSERVER |
Funktionen DllRegisterServer misslyckades när komponenten installerades. |
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER |
Det går inte att konfigurera en händelseklass som en prenumerantkomponent. När ett försök görs att skapa en prenumeration med en händelseklass som prenumerant returneras det här felet. |
COMADMIN_E_INVALIDUSERIDS |
En eller flera användare i programfilen är inte giltiga. |
COMADMIN_E_KEYMISSING |
Objektet hittades inte i katalogen. |
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE |
Biblioteksprogram och programproxyservrar är inte kompatibla. Det här felet returneras när ett försök görs att exportera en programproxy och programmets aktiveringsegenskap är ett bibliotek. |
COMADMIN_E_NOREGISTRYCLSID |
Komponentens CLSID saknas eller är skadad. |
COMADMIN_E_NOSERVERSHARE |
Ingen serverfildelning är tillgänglig. |
COMADMIN_E_NOTCHANGEABLE |
Ändringar i det här objektet och dess underobjekt har inaktiverats. |
COMADMIN_E_NOTDELETEABLE |
Borttagningsfunktionen har inaktiverats för det här objektet. |
COMADMIN_E_NOTINREGISTRY |
Objektet hittades inte i registret. |
COMADMIN_E_NOUSER |
En eller flera användare är inte giltiga. |
COMADMIN_E_OBJECT_DOES_NOT_EXIST |
Det går inte att hitta något av de angivna objekten. |
COMADMIN_E_OBJEKT_FÖRÄLDRAR_SAKNAS |
Ett av objekten som infogas eller uppdateras tillhör inte en giltig överordnad samling. |
COMADMIN_E_OBJECTERRORS |
Det uppstod fel vid åtkomst till ett eller flera objekt. Mer information finns i samlingen ErrorInfo. |
COMADMIN_E_OBJECTEXISTS |
Det objekt som du försöker lägga till eller byta namn på finns redan. |
COMADMIN_E_OBJECTINVALID |
En eller flera av objektets egenskaper saknas eller är ogiltiga. |
COMADMIN_E_OBJECTNOTPOOLABLE |
Det går inte att poola det här objektet. |
COMADMIN_E_PROPERTYSAVEFAILED (Ett fel inträffade vid sparande av egenskaper) |
En eller flera egenskapsinställningar är antingen ogiltiga eller i konflikt med varandra. |
COMADMIN_E_PROPERTY_OVERFLOW |
Egenskapsvärdet är för stort. |
COMADMIN_E_REGFILE_CORRUPT |
Registreringsfilen är skadad. |
COMADMIN_E_REGISTERTLB |
Det gick inte att registrera typbiblioteket. |
COMADMIN_E_REGISTRARFAILED |
Fel inträffade i komponentregistratorn. |
COMADMIN_E_REMOTEINTERFACE |
Gränssnittsinformation saknas eller ändras. |
KOMADMIN_E_KRÄVER_ANNAN_PLATTFORM |
Den här åtgärden är inte aktiverad på den här plattformen. |
COMADMIN_E_ROLE_DOES_NOT_EXIST |
En roll som tilldelats en komponent, ett gränssnitt eller en metod finns inte i programmet. |
COMADMIN_E_ROLEEXISTS |
Rollen finns redan. |
COMADMIN_E_SERVICENOTINSTALLED |
Tjänsten är inte installerad. |
COMADMIN_E_SESSION |
Serverkatalogversionen stöds inte. |
En del är redan pausade |
En eller flera av de angivna programprocesserna har redan pausats. |
COMADMIN_S_SOMEALREADYRUNNING |
En eller flera av de angivna programprocesserna kördes redan. |
COMADMIN_FEL_START_APP_BEHÖVER_KOMPONENTER |
Om du vill starta programmet måste du ha komponenter i ett program. |
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE |
COM+-programmen som körs som en NT-tjänst kanske inte markeras som poolade eller återanvända. |
COMADMIN_E_SYSTEMAPP |
Det går inte att utföra den här åtgärden i systemprogrammet. |
COMADMIN_E_USER_IN_SET |
En eller flera användare har redan tilldelats en lokal partitionsuppsättning. |
If adding an explanation is necessary, it might look like this:
COMADMIN_E_USERPASSWDNOTVALID – Användarlösenordet är inte giltigt |
Identiteten eller lösenordet som angetts i programmet är inte giltigt. |