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 esito positivo, di avviso e di errore vengono restituiti usando un numero a 32 bit noto come HRESULT. Per un elenco dei valori di 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 ulteriori informazioni sui valori HRESULT , consultare Gestione degli errori.
Nel linguaggio Java viene generata un'istanza di com.ms.com.ComFailException per indicare un errore, in cui l'oggetto ComFailException specifica un HRESULT. Un'istanza di com.ms.com.ComSuccessException indica un esito positivo con un valore restituito di 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 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. Puoi anche inserire un valore digitandolo o incollandolo dagli Appunti dell'IDE e cliccando 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 di 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 (Errore del file versione dell'applicazione) |
Numero di versione non valido nel file dell'applicazione. |
Errore COMADMIN_E_APP_FILE_WRITE: impossibile scrivere il file |
Errore durante la scrittura nel file dell'applicazione. |
COMADMIN_E_APPDIRNOTFOUND |
Impossibile trovare la directory di installazione dell'applicazione. |
COMQC_E_APPLICAZIONE_NON_IN_CODA |
È 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 su questo computer. |
COMADMIN_E_APP_NOT_RUNNING (l'applicazione non è in esecuzione) |
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 |
Impossibile avviare l'applicazione perché si tratta di un'applicazione di libreria o di un proxy di applicazione. |
IMPOSSIBILE ESPORTARE L'APPLICAZIONE DI SISTEMA |
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 metodoGetClassObjectnon è riuscito nella DLL. |
Errore di caricamento DLL nel file del componente (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 componenti né informazioni sui componenti. |
COMADMIN_E_COREQCOMPINSTALLED |
Un componente nella stessa DLL è già installato. |
COMADMIN_E_DLLLOADFAILED |
Impossibile caricare la DLL. |
COMADMIN_E_DLLREGISTERSERVER |
La funzioneDllRegisterServernon è 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_INVALIDUSERIDS |
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_NOSERVERSHARE |
Non è disponibile alcuna condivisione di file del 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_NOUSER |
Uno o più utenti non sono validi. |
COMADMIN_E_OGGETTO_NON_ESISTE |
Impossibile trovare uno degli oggetti specificati. |
Errore COMADMIN_E_OBJECT_PARENT_MISSING: Oggetto principale mancante |
Uno degli oggetti inseriti oppure aggiornati non appartiene a una raccolta padre valida. |
COMADMIN_E_OBJECTERRORS |
Si sono verificati errori durante l'accesso a uno o più oggetti. Per ulteriori informazioni, consultare la raccolta 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 può essere raggruppato 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 nel registro del componente. |
COMADMIN_E_REMOTEINTERFACE |
Le informazioni sull'interfaccia sono mancanti o modificate. |
COMADMIN_E_RICHIEDE_PIATTAFORMA_DIFFERENTE |
Questa operazione non è abilitata in questa piattaforma. |
COMADMIN_E_RUOLO_NON_ESISTE |
Un ruolo assegnato a un componente, un'interfaccia o un metodo non esiste nell'applicazione. |
COMADMIN_E_ROLEEXISTS |
Il ruolo esiste già. |
COMADMIN_E_SERVICENOTINSTALLED |
Il servizio non è installato. |
COMADMIN_E_SESSION |
La versione del catalogo server non è supportata. |
COMADMIN_S_SOMEALREADYPAUSED |
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_NEEDS_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 aggregate o riciclate. |
COMADMIN_E_SYSTEMAPP |
Questa operazione non può essere eseguita sull'applicazione di sistema. |
COMADMIN_E_USER_IN_SET |
Uno o più utenti sono già assegnati a un set di partizioni locale. |
COMADMIN_E_USERPASSWDNOTVALID - La password dell'utente non è valida. |
L'identità o la password impostata nell'applicazione non è valida. |