Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Po ustaleniu, która aplikacja jest źródłem problemu, należy dowiedzieć się, jaki błąd wystąpił. Błędy są podnoszone i zgłaszane w różnych formatach, w zależności od języka używanego przez aplikację.
W programie Microsoft Visual C++zwracane są wartości powodzenia, ostrzeżenia i niepowodzenia przy użyciu 32-bitowej liczby znanej jako HRESULT. Aby uzyskać listę wartości HRESULT zdefiniowanych przez system, zobacz plik nagłówkowy Winerror.h dołączony do zestawu Windows SDK. Ten plik zawiera wszystkie kody błędów COM+ i opisy. Aby uzyskać więcej informacji na temat wartości HRESULT, zobacz Error Handling.
W języku Java wystąpienie com.ms.com.ComFailException jest zgłaszane w celu wskazania błędu, gdzie obiekt ComFailException określa HRESULT. Wystąpienie com.ms.com.ComSuccessException wskazuje powodzenie z zwracaną wartością False. Aby uzyskać informacje na temat interpretowania tych wyjątków, zobacz dokumentację programu Microsoft Visual J++.
Notatka
Procesy serwera aplikacji COM+ hostujące obiekty Visual J++ nie będą bezczynne (nawet w przypadku zerowych aktywnych obiektów), chyba że wyłączysz debugowanie JIT w środowisku IDE VJ6. Aby uzyskać informacje na temat tego, jak to zrobić, zobacz dokumentację programu Visual J++.
W języku Visual Basic można pobrać wartości HRESULT, sprawdzając właściwość Err.Number. Opis błędu można pobrać za pomocą właściwości Err.Description.
Możesz również użyć narzędzia ERRLOOK w programie Microsoft Visual Studio, aby pobrać komunikat o błędzie systemu lub komunikat o błędzie modułu. ERRLOOK automatycznie pobiera tekst komunikatu o błędzie, jeśli przeciągniesz i upuścisz wartość szesnastkową lub dziesiętną z debugera programu Visual Studio lub innej aplikacji zgodnej z Automation. Możesz również wprowadzić wartość, wpisując ją lub wklejając ze schowka IDE, a następnie klikając opcję Wyszukaj.
Poniższa metoda języka C++ wyświetla opis błędu na podstawie danych wejściowych 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);
}
Poniższa tabela zawiera opisy typowych kodów błędów w modelu COM+.
| Kody błędów | Definicje |
|---|---|
| COMADMIN_E_JUŻZAINSTALOWANE |
Obiekt jest już zarejestrowany. |
| COMADMIN_E_APP_FILE_READFAIL |
Wystąpił błąd podczas odczytywania pliku aplikacji. |
| COMADMIN_E_APP_FILE_VERSION |
Nieprawidłowy numer wersji w pliku aplikacji. |
| COMADMIN_E_APP_FILE_WRITEFAIL |
Błąd wystąpił przy zapisie do pliku aplikacji. |
| COMADMIN_E_APPDIRNOTFOUND |
Nie można odnaleźć katalogu instalacji aplikacji. |
| COMQC_E_APPLICATION_NOT_QUEUED |
Tylko aplikacje COM+ oznaczone jako "w kolejce" można utworzyć przy użyciu monikera "queue". |
| COMADMIN_E_APPLICATIONEXISTS |
Aplikacja jest już zainstalowana. |
| COMADMIN_E_APPLID_MATCHES_CLSID |
Identyfikator CLSID z tym samym identyfikatorem GUID co nowy identyfikator aplikacji został już zainstalowany na tym komputerze. |
| COMADMIN_E_APP_NOT_RUNNING |
Określona aplikacja nie jest obecnie uruchomiona. |
| COMADMIN_E_AUTHENTICATIONLEVEL |
Nie można ustawić wymaganego poziomu uwierzytelniania dla żądania aktualizacji. |
| COMADMIN_E_BADPATH |
Ścieżka pliku jest nieprawidłowa. |
| COMADMIN_E_BADREGISTRYLIBID |
Identyfikator zarejestrowanej biblioteki typów jest nieprawidłowy. |
| COMADMIN_E_BADREGISTRYPROGID |
Brak identyfikatora progID składnika lub jest on uszkodzony. |
| COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY (Nie można wyeksportować proxy aplikacji) |
Serwer proxy aplikacji nie jest eksportowalny. |
| COMADMIN_E_NIE_MOŻNA_URUCHOMIĆ_APLIKACJI |
Nie można uruchomić aplikacji, ponieważ jest to aplikacja biblioteki lub serwer proxy aplikacji. |
| Nie można eksportować aplikacji systemowej. |
Aplikacja systemowa nie jest eksportowalna. |
| NIEMOŻNOŚĆ ZAPISANIA SIĘ DO KOMPONENTU |
Użytkownik nie może zasubskrybować tego składnika, ponieważ mógł zostać zaimportowany składnik. |
| COMADMIN_E_CANTCOPYFILE |
Wystąpił błąd podczas kopiowania pliku. |
| COMADMIN_E_CLSIDORIIDMISMATCH |
Identyfikatory CLSID lub identyfikatory IID pliku aplikacji nie są zgodne z odpowiednimi bibliotekami DLL. |
| COMADMIN_E_COMP_MOVE_BAD_DEST |
Przenoszenie składnika nie powiodło się, ponieważ aplikacja docelowa już nie istnieje. |
| COMADMIN_E_COMP_MOVE_ZABLOKOWANY |
Przenoszenie składnika zostało niedozwolone, ponieważ aplikacja źródłowa lub docelowa jest aplikacją systemową lub jest obecnie zablokowana przed zmianami. |
| COMADMIN_E_COMPFILE_BADTLB |
Nie można załadować biblioteki typów. |
| COMADMIN_E_COMPFILE_CLASSNOTAVAIL |
Biblioteka DLL nie obsługuje składników wymienionych w bibliotece typów. |
| COMADMIN_E_COMPFILE_DOESNOTEXIST (plik nie istnieje) |
Ten plik nie istnieje. |
| COMADMIN_E_COMPFILE_GETCLASSOBJ |
Metoda GetClassObject nie powiodła się w dll. |
| COMADMIN_E_COMPFILE_LOADDLLFAIL (Błąd ładowania pliku DLL) |
Nie można załadować biblioteki DLL. |
| COMADMIN_E_COMPFILE_NOREGISTRAR |
Rejestrator składników, do którego odwołuje się ten plik, jest niedostępny. |
| COMADMIN_E_COMPFILE_NOTINSTALLABLE |
Plik nie zawiera komponentów ani informacji o komponentach. |
| COMADMIN_E_COREQCOMPINSTALLED |
Składnik w tej samej biblioteki DLL jest już zainstalowany. |
| COMADMIN_E_DLLLOADFAILED |
Nie można załadować biblioteki DLL. |
| COMADMIN_E_DLLREGISTERSERVER |
Funkcja DllRegisterServer nie powiodła się, gdy składnik został zainstalowany. |
| COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER |
Nie można skonfigurować klasy zdarzeń jako składnika subskrybenta. Kiedy próbuje się utworzyć subskrypcję, gdzie klasa zdarzeń pełni rolę subskrybenta, zwracany jest ten błąd. |
| COMADMIN_E_INVALIDUSERIDS |
Co najmniej jeden użytkownik w pliku aplikacji jest nieprawidłowy. |
| COMADMIN_E_KEYMISSING |
Nie można odnaleźć obiektu w wykazie. |
| COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE |
Aplikacje biblioteczne i serwery proxy aplikacji są niezgodne. Ten błąd jest zwracany, gdy podejmowana jest próba wyeksportowania serwera proxy aplikacji, a właściwość aktywacji aplikacji to biblioteka. |
| COMADMIN_E_NOREGISTRYCLSID |
Brak identyfikatora CLSID składnika lub jest on uszkodzony. |
| COMADMIN_E_NOSERVERSHARE |
Żaden udział plików na serwerze nie jest dostępny. |
| COMADMIN_E_NOTCHANGEABLE (nie można zmienić) |
Zmiany w tym obiekcie i jego obiektach podrzędnych zostały wyłączone. |
| COMADMIN_E_NOTDELETEABLE (błąd: nie można usunąć) |
Funkcja delete została wyłączona dla tego obiektu. |
| COMADMIN_E_NOTINREGISTRY |
Nie można odnaleźć obiektu w rejestrze. |
| Błąd: brak użytkownika (COMADMIN_E_NOUSER) |
Co najmniej jeden użytkownik jest nieprawidłowy. |
| Obiekt nie istnieje. |
Nie można odnaleźć jednego z określonych obiektów. |
| Since this appears to be a recognized error code, no improvements are needed unless an explanatory translation is required for context. |
Jeden z wstawionych lub zaktualizowanych obiektów nie należy do prawidłowej kolekcji nadrzędnej. |
| COMADMIN_E_OBJECTERRORS |
Wystąpiły błędy podczas uzyskiwania dostępu do co najmniej jednego obiektu. Aby uzyskać więcej informacji, zobacz kolekcję ErrorInfo. |
| COMADMIN_E_OBJECTEXISTS |
Obiekt, który próbujesz dodać lub zmienić nazwę, już istnieje. |
| COMADMIN_E_OBJECTINVALID |
Brakuje co najmniej jednej właściwości obiektu lub jest on nieprawidłowy. |
| COMADMIN_E_OBJECTNOTPOOLABLE |
Nie można dodać do puli tego obiektu. |
| COMADMIN_E_PROPERTYSAVEFAILED |
Co najmniej jedno ustawienie właściwości jest nieprawidłowe lub powoduje konflikt ze sobą. |
| COMADMIN_E_PROPERTY_OVERFLOW |
Wartość właściwości jest za duża. |
| COMADMIN_E_REGFILE_CORRUPT |
Plik rejestracji jest uszkodzony. |
| COMADMIN_E_REGISTERTLB |
System nie może zarejestrować biblioteki typów. |
| COMADMIN_E_REGISTRARFAILED |
Wystąpiły błędy w rejestratorze składników. |
| COMADMIN_E_REMOTEINTERFACE |
Brak informacji o interfejsie lub jego zmiana. |
| COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM |
Ta operacja nie jest włączona na tej platformie. |
| ROLA_COMADMIN_NIE_ISTNIEJE |
Rola przypisana do składnika, interfejsu lub metody nie istnieje w aplikacji. |
| COMADMIN_E_ROLEEXISTS |
Rola już istnieje. |
| COMADMIN_E_SERVICENOTINSTALLED |
Usługa nie jest zainstalowana. |
| COMADMIN_E_SESSION |
Wersja wykazu serwerów nie jest obsługiwana. |
| Część już wstrzymana |
Co najmniej jeden z określonych procesów aplikacji został już wstrzymany. |
| Niektóre już działają |
Co najmniej jeden z określonych procesów aplikacji był już uruchomiony. |
| COMADMIN_E_START_APP_NEEDS_COMPONENTS |
Aby uruchomić aplikację, musisz mieć składniki w aplikacji. |
| COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE (Aplikacja usługi nie jest wspólna ani nadająca się do recyklingu) |
Aplikacje COM+ działające jako usługa NT mogą nie być oznaczone jako z możliwością zestawienia w puli lub recyklingowane. |
| COMADMIN_E_SYSTEMAPP |
Nie można wykonać tej operacji w aplikacji systemowej. |
| COMADMIN_E_UŻYTKOWNIK_W_ZESTAWIE |
Co najmniej jeden użytkownik jest już przypisany do lokalnego zestawu partycji. |
| COMADMIN_E_USERPASSWDNOTVALID |
Tożsamość lub hasło ustawione w aplikacji jest nieprawidłowe. |
Tematy pokrewne
-
izolacja błędów i zasad niepowodzenia
-
strategie obsługi błędów w COM+