Compartir a través de


Interpretación de códigos de error

Después de determinar qué aplicación es el origen de un problema, debe averiguar qué error se ha producido. Los errores se generan y notifican en diferentes formatos, en función del idioma que use la aplicación.

En Microsoft Visual C++, los valores correctos, de advertencia y de error se devuelven mediante un número de 32 bits conocido como HRESULT. Para obtener una lista de valores HRESULT definidos por el sistema, consulte el archivo de encabezado Winerror.h incluido con Windows SDK. Este archivo incluye todos los códigos de error y descripciones com+. Para obtener más información sobre los valores HRESULT , vea Control de errores.

En el lenguaje Java, se produce una instancia de com.ms.com.ComFailException para indicar un error, donde el objeto ComFailException especifica un HRESULT. Una instancia de com.ms.com.ComSuccessException indica que se ha realizado correctamente con un valor devuelto de False. Para obtener información sobre cómo interpretar estas excepciones, consulte la documentación de Microsoft Visual J++.

Nota:

Los procesos del servidor de aplicaciones COM+ que hospedan objetos de Visual J++ no estarán inactivos (incluso con cero objetos activos) a menos que desactive la depuración JIT en el IDE de VJ6. Para obtener información sobre cómo hacerlo, consulte la documentación de Visual J++.

En Visual Basic, puede recuperar valores HRESULT examinando la propiedad Err.Number. Se puede recuperar una descripción del error con la propiedad Err.Description.

También puede usar la utilidad ERRLOOK en Microsoft Visual Studio para recuperar un mensaje de error del sistema o un mensaje de error del módulo. ERRLOOK recupera automáticamente el texto del mensaje de error si arrastra y coloca un valor hexadecimal o decimal desde el depurador de Visual Studio u otra aplicación habilitada para Automation. También puede escribir un valor escribiendo o pegandolo desde el Portapapeles del IDE y haciendo clic en la opción Buscar .

El siguiente método de C++ imprime una descripción del error, en función de la entrada 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); 
}

En la tabla siguiente se proporcionan descripciones de códigos de error comunes en COM+.

Códigos de error Definiciones
COMADMIN_E_ALREADYINSTALLED
El objeto ya está registrado.
COMADMIN_E_APP_FILE_READFAIL
Error al leer el archivo de aplicación.
COMADMIN_E_APP_FILE_VERSION
Número de versión no válido en el archivo de aplicación.
COMADMIN_E_APP_FILE_WRITEFAIL
Error al escribir en el archivo de aplicación.
COMADMIN_E_APPDIRNOTFOUND
No se encontró el directorio de instalación de la aplicación.
COMQC_E_APPLICATION_NOT_QUEUED
Solo se pueden crear aplicaciones COM+ marcadas como "en cola" mediante el moniker "queue".
COMADMIN_E_APPLICATIONEXISTS
La aplicación ya está instalada.
COMADMIN_E_APPLID_MATCHES_CLSID
Un CLSID con el mismo GUID que el nuevo identificador de aplicación ya está instalado en esta máquina.
COMADMIN_E_APP_NOT_RUNNING
La aplicación especificada no se está ejecutando actualmente.
COMADMIN_E_AUTHENTICATIONLEVEL
No se puede establecer el nivel de autenticación necesario para la solicitud de actualización.
COMADMIN_E_BADPATH
La ruta de acceso del archivo no es válida.
COMADMIN_E_BADREGISTRYLIBID
El identificador de la biblioteca de tipos registrado no es válido.
COMADMIN_E_BADREGISTRYPROGID
Falta el ProgID del componente o está dañado.
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY
El proxy de aplicación no se puede exportar.
COMADMIN_E_CAN_NOT_START_APP
No se pudo iniciar la aplicación porque es una aplicación de biblioteca o un proxy de aplicación.
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP
La aplicación del sistema no se puede exportar.
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT
El usuario no puede suscribirse a este componente porque es posible que el componente se haya importado.
COMADMIN_E_CANTCOPYFILE
Error al copiar el archivo.
COMADMIN_E_CLSIDORIIDMISMATCH
Los ARCHIVOS de aplicación CLSID o IID no coinciden con los archivos DLL correspondientes.
COMADMIN_E_COMP_MOVE_BAD_DEST
Error en el movimiento del componente porque la aplicación de destino ya no existe.
COMADMIN_E_COMP_MOVE_LOCKED
No se pudo mover el componente porque la aplicación de origen o de destino es una aplicación del sistema o está bloqueada actualmente en los cambios.
COMADMIN_E_COMPFILE_BADTLB
No se pudo cargar la biblioteca de tipos.
COMADMIN_E_COMPFILE_CLASSNOTAVAIL
El archivo DLL no admite los componentes enumerados en la biblioteca de tipos.
COMADMIN_E_COMPFILE_DOESNOTEXIST
Este archivo no existe.
COMADMIN_E_COMPFILE_GETCLASSOBJ
Error en el método GetClassObject en el archivo DLL.
COMADMIN_E_COMPFILE_LOADDLLFAIL
No se pudo cargar el archivo DLL.
COMADMIN_E_COMPFILE_NOREGISTRAR
El registrador de componentes al que se hace referencia en este archivo no está disponible.
COMADMIN_E_COMPFILE_NOTINSTALLABLE
El archivo no contiene información de componentes ni componentes.
COMADMIN_E_COREQCOMPINSTALLED
Ya está instalado un componente en el mismo archivo DLL.
COMADMIN_E_DLLLOADFAILED
No se pudo cargar el archivo DLL.
COMADMIN_E_DLLREGISTERSERVER
Error en la función DllRegisterServer cuando se instaló el componente.
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
Una clase de eventos no se puede configurar como un componente de suscriptor. Cuando se intenta crear una suscripción con una clase de eventos como suscriptor, se devuelve este error.
COMADMIN_E_INVALIDUSERIDS
Uno o varios usuarios del archivo de aplicación no son válidos.
COMADMIN_E_KEYMISSING
El objeto no se encontró en el catálogo.
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE
Las aplicaciones de biblioteca y los servidores proxy de aplicación son incompatibles. Este error se devuelve cuando se intenta exportar un proxy de aplicación y la propiedad de activación de la aplicación es una biblioteca.
COMADMIN_E_NOREGISTRYCLSID
Falta el CLSID del componente o está dañado.
COMADMIN_E_NOSERVERSHARE
No hay ningún recurso compartido de archivos de servidor disponible.
COMADMIN_E_NOTCHANGEABLE
Se han deshabilitado los cambios realizados en este objeto y sus subobjetos.
COMADMIN_E_NOTDELETEABLE
La función delete se ha deshabilitado para este objeto.
COMADMIN_E_NOTINREGISTRY
No se encontró el objeto en el Registro.
COMADMIN_E_NOUSER
Uno o varios usuarios no son válidos.
COMADMIN_E_OBJECT_DOES_NOT_EXIST
No se encuentra uno de los objetos especificados.
COMADMIN_E_OBJECT_PARENT_MISSING
Uno de los objetos que se insertan o actualizan no pertenece a una colección primaria válida.
COMADMIN_E_OBJECTERRORS
Se produjo un error al obtener acceso a uno o varios objetos. Para obtener más información, vea la colección ErrorInfo .
COMADMIN_E_OBJECTEXISTS
El objeto que está intentando agregar o cambiar el nombre ya existe.
COMADMIN_E_OBJECTINVALID
Faltan una o varias de las propiedades del objeto o no son válidas.
COMADMIN_E_OBJECTNOTPOOLABLE
Este objeto no se puede agrupar.
COMADMIN_E_PROPERTYSAVEFAILED
Uno o varios valores de propiedad no son válidos o están en conflicto entre sí.
COMADMIN_E_PROPERTY_OVERFLOW
El valor de la propiedad es demasiado grande.
COMADMIN_E_REGFILE_CORRUPT
El archivo de registro está dañado.
COMADMIN_E_REGISTERTLB
El sistema no pudo registrar la biblioteca de tipos.
COMADMIN_E_REGISTRARFAILED
Se produjeron errores mientras se encuentra en el registrador de componentes.
COMADMIN_E_REMOTEINTERFACE
Falta o cambia la información de la interfaz.
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM
Esta operación no está habilitada en esta plataforma.
COMADMIN_E_ROLE_DOES_NOT_EXIST
Un rol asignado a un componente, interfaz o método no existe en la aplicación.
COMADMIN_E_ROLEEXISTS
El rol ya existe.
COMADMIN_E_SERVICENOTINSTALLED
El servicio no está instalado.
COMADMIN_E_SESSION
No se admite la versión del catálogo de servidores.
COMADMIN_S_SOMEALREADYPAUSED
Uno o varios de los procesos de aplicación especificados ya estaban en pausa.
COMADMIN_S_SOMEALREADYRUNNING
Uno o varios de los procesos de aplicación especificados ya se estaban ejecutando.
COMADMIN_E_START_APP_NEEDS_COMPONENTS
Para iniciar la aplicación, debe tener componentes en una aplicación.
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE
Es posible que las aplicaciones COM+ que se ejecutan como un servicio NT no se marquen como agrupadas o recicladas.
COMADMIN_E_SYSTEMAPP
Esta operación no se puede realizar en la aplicación del sistema.
COMADMIN_E_USER_IN_SET
Uno o varios usuarios ya están asignados a un conjunto de particiones local.
COMADMIN_E_USERPASSWDNOTVALID
La identidad o contraseña establecida en la aplicación no es válida.

Aislamiento de errores y directiva de conmutación por error

Buscar el origen de un error

Cómo COM+ modifica los valores devueltos

Estrategias para controlar errores en COM+

Solución de problemas