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 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.

Isolamento degli errori e criteri failfast

Ricerca dell'origine di un errore

Modalità di modifica dei valori restituiti da COM+

Strategie per la gestione degli errori in COM+

Risoluzione dei problemi