Condividi tramite


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.

isolamento dei guasti e politica failfast

trovare l'origine di un errore

come COM+ modifica i valori restituiti

Strategie per la gestione degli errori in COM+

risoluzione dei problemi