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