Interpretazione dei codici di errore
Dopo aver determinato quale applicazione è l'origine di un problema, è necessario individuare l'errore che si è verificato. Gli errori vengono generati e segnalati in formati diversi, a seconda della lingua usata dall'applicazione.
In Microsoft Visual C++, i valori di operazione riuscita, avviso e errore vengono restituiti usando un numero a 32 bit noto come HRESULT. Per un elenco dei valori HRESULT definiti dal sistema, vedere il file di intestazione Winerror.h incluso in Windows SDK. Questo file include tutti i codici di errore COM+ e le descrizioni. Per altre informazioni sui valori HRESULT , vedere Gestione degli errori.
Nel linguaggio Java viene generata un'istanza di com.ms.com.ComFailException per indicare l'errore, in cui l'oggetto ComFailException specifica un HRESULT. Un'istanza di com.ms.com.ComSuccessException indica l'esito positivo con il valore restituito False. Per informazioni sull'interpretazione di queste eccezioni, vedere la documentazione di Microsoft Visual J++.
Nota
I processi del server applicazioni COM+ che ospitano oggetti Visual J++ non saranno inattivi (anche con zero oggetti attivi) a meno che non si disattiva il debug JIT nell'IDE VJ6. Per informazioni su come eseguire questa operazione, vedere la documentazione di Visual J++.
In Visual Basic è possibile recuperare i valori HRESULT esaminando la proprietà Err.Number. È possibile recuperare una descrizione dell'errore con la proprietà Err.Description.
È anche possibile usare l'utilità ERRLOOK in Microsoft Visual Studio per recuperare un messaggio di errore di sistema o un messaggio di errore del modulo. ERRLOOK recupera automaticamente il testo del messaggio di errore se si trascina un valore esadecimale o decimale dal debugger di Visual Studio o da un'altra applicazione abilitata per l'automazione. È anche possibile immettere un valore digitandolo o incollandolo dagli Appunti dell'IDE e facendo clic sull'opzione Cerca.
Il metodo C++ seguente stampa una descrizione dell'errore, in base all'input 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);
}
Nella tabella seguente vengono fornite descrizioni dei codici di errore comuni in COM+.
Codici errore | Definizioni |
---|---|
COMADMIN_E_ALREADYINSTALLED |
L'oggetto è già registrato. |
COMADMIN_E_APP_FILE_READFAIL |
Errore durante la lettura del file dell'applicazione. |
COMADMIN_E_APP_FILE_VERSION |
Numero di versione non valido nel file dell'applicazione. |
COMADMIN_E_APP_FILE_WRITEFAIL |
Errore durante la scrittura nel file dell'applicazione. |
COMADMIN_E_APPDIRNOTFOUND |
Impossibile trovare la directory di installazione dell'applicazione. |
COMQC_E_APPLICATION_NOT_QUEUED |
È possibile creare solo le applicazioni COM+ contrassegnate come "in coda" usando il moniker "queue". |
COMADMIN_E_APPLICATIONEXISTS |
L'applicazione è già installata. |
COMADMIN_E_APPLID_MATCHES_CLSID |
Un CLSID con lo stesso GUID del nuovo ID applicazione è già installato in questo computer. |
COMADMIN_E_APP_NOT_RUNNING |
L'applicazione specificata non è attualmente in esecuzione. |
COMADMIN_E_AUTHENTICATIONLEVEL |
Impossibile impostare il livello di autenticazione richiesto per la richiesta di aggiornamento. |
COMADMIN_E_BADPATH |
Il percorso del file non è valido. |
COMADMIN_E_BADREGISTRYLIBID |
L'ID della libreria dei tipi registrati non è valido. |
COMADMIN_E_BADREGISTRYPROGID |
Il ProgID del componente è mancante o danneggiato. |
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY |
Il proxy dell'applicazione non è esportabile. |
COMADMIN_E_CAN_NOT_START_APP |
Impossibile avviare l'applicazione perché si tratta di un'applicazione di libreria o di un proxy di applicazione. |
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP |
L'applicazione di sistema non è esportabile. |
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT |
L'utente non può sottoscrivere questo componente perché il componente potrebbe essere stato importato. |
COMADMIN_E_CANTCOPYFILE |
Errore durante la copia del file. |
COMADMIN_E_CLSIDORIIDMISMATCH |
I CLSID o i ID del file dell'applicazione non corrispondono alle DLL corrispondenti. |
COMADMIN_E_COMP_MOVE_BAD_DEST |
Lo spostamento del componente non è riuscito perché l'applicazione di destinazione non esiste più. |
COMADMIN_E_COMP_MOVE_LOCKED |
Lo spostamento del componente non è consentito perché l'applicazione di origine o di destinazione è un'applicazione di sistema o è attualmente bloccata per le modifiche. |
COMADMIN_E_COMPFILE_BADTLB |
Impossibile caricare la libreria dei tipi. |
COMADMIN_E_COMPFILE_CLASSNOTAVAIL |
La DLL non supporta i componenti elencati nella libreria dei tipi. |
COMADMIN_E_COMPFILE_DOESNOTEXIST |
Questo file non esiste. |
COMADMIN_E_COMPFILE_GETCLASSOBJ |
Il metodo GetClassObject non è riuscito nella DLL. |
COMADMIN_E_COMPFILE_LOADDLLFAIL |
Impossibile caricare la DLL. |
COMADMIN_E_COMPFILE_NOREGISTRAR |
Il registrar del componente a cui si fa riferimento in questo file non è disponibile. |
COMADMIN_E_COMPFILE_NOTINSTALLABLE |
Il file non contiene informazioni sui componenti o sui componenti. |
COMADMIN_E_COREQCOMPINSTALLED |
Un componente nella stessa DLL è già installato. |
COMADMIN_E_DLLLOADFAILED |
Impossibile caricare la DLL. |
COMADMIN_E_DLLREGISTERedizione Standard RVER |
La funzione DllRegisterServer non è riuscita quando il componente è stato installato. |
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER |
Una classe di evento non può essere configurata come componente del sottoscrittore. Quando si tenta di creare una sottoscrizione con una classe di evento come sottoscrittore, viene restituito questo errore. |
COMADMIN_E_INVALIDUedizione Standard RIDS |
Uno o più utenti nel file dell'applicazione non sono validi. |
COMADMIN_E_KEYMISSING |
L'oggetto non è stato trovato nel catalogo. |
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE |
Le applicazioni di libreria e i proxy dell'applicazione non sono compatibili. Questo errore viene restituito quando si tenta di esportare un proxy di applicazione e la proprietà di attivazione dell'applicazione è una libreria. |
COMADMIN_E_NOREGISTRYCLSID |
Il CLSID del componente è mancante o danneggiato. |
COMADMIN_E_NOedizione Standard RVERSHARE |
Non è disponibile alcuna condivisione file server. |
COMADMIN_E_NOTCHANGEABLE |
Le modifiche apportate a questo oggetto e ai relativi oggetti secondari sono state disabilitate. |
COMADMIN_E_NOTDELETEABLE |
La funzione delete è stata disabilitata per questo oggetto. |
COMADMIN_E_NOTINREGISTRY |
L'oggetto non è stato trovato nel Registro di sistema. |
COMADMIN_E_NOUedizione Standard R |
Uno o più utenti non sono validi. |
COMADMIN_E_OBJECT_DOES_NOT_EXIST |
Impossibile trovare uno degli oggetti specificati. |
COMADMIN_E_OBJECT_PARENT_MISSING |
Uno degli oggetti inseriti o aggiornati non appartiene a una raccolta padre valida. |
COMADMIN_E_OBJECTERRORS |
Si sono verificati errori durante l'accesso a uno o più oggetti. Per altre informazioni, vedere l'insieme ErrorInfo . |
COMADMIN_E_OBJECTEXISTS |
L'oggetto che si sta tentando di aggiungere o rinominare esiste già. |
COMADMIN_E_OBJECTINVALID |
Una o più proprietà dell'oggetto sono mancanti o non validi. |
COMADMIN_E_OBJECTNOTPOOLABLE |
Non è possibile eseguire il pool di questo oggetto. |
COMADMIN_E_PROPERTYSAVEFAILED |
Una o più impostazioni delle proprietà non sono valide o sono in conflitto tra loro. |
COMADMIN_E_PROPERTY_OVERFLOW |
Il valore della proprietà è troppo grande. |
COMADMIN_E_REGFILE_CORRUPT |
Il file di registrazione è danneggiato. |
COMADMIN_E_REGISTERTLB |
Il sistema non è riuscito a registrare la libreria dei tipi. |
COMADMIN_E_REGISTRARFAILED |
Si sono verificati errori durante il registrar del componente. |
COMADMIN_E_REMOTEINTERFACE |
Le informazioni sull'interfaccia sono mancanti o modificate. |
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM |
Questa operazione non è abilitata in questa piattaforma. |
COMADMIN_E_ROLE_DOES_NOT_EXIST |
Un ruolo assegnato a un componente, un'interfaccia o un metodo non esiste nell'applicazione. |
COMADMIN_E_ROLedizione Enterprise XISTS |
Il ruolo esiste già. |
COMADMIN_E_edizione Standard RVICENOTINSTALLED |
Il servizio non è installato. |
COMADMIN_E_edizione Standard SSION |
La versione del catalogo server non è supportata. |
COMADMIN_S_SOMEALREADYPAUedizione Standard D |
Uno o più processi dell'applicazione specificati sono già stati sospesi. |
COMADMIN_S_SOMEALREADYRUNNING |
Uno o più processi dell'applicazione specificati erano già in esecuzione. |
COMADMIN_E_START_APP_Nedizione EnterpriseDS_COMPONENTS |
Per avviare l'applicazione, è necessario disporre di componenti in un'applicazione. |
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE |
Le applicazioni COM+ in esecuzione come servizio NT potrebbero non essere contrassegnate come in pool o riciclate. |
COMADMIN_E_SYSTEMAPP |
Questa operazione non può essere eseguita sull'applicazione di sistema. |
COMADMIN_E_Uedizione StandardR_IN_edizione Standard T |
Uno o più utenti sono già assegnati a un set di partizioni locale. |
COMADMIN_E_Uedizione Standard RPASSWDNOTVALID |
L'identità o la password impostata nell'applicazione non è valida. |