online mp3tag mp3meta windows com

windows - mp3tag - ¿Cuál es la mejor fuente de información sobre códigos de error COM?



mp3meta (4)

La Búsqueda de errores (ErrLook.exe) en su carpeta% PROGRAMFILES% [Algunas versiones de Visual Studio] / Tools Common7 / le mostrará el mensaje de error a menudo, pero no siempre:

|---------------------------------------------------| | [] Error Lookup | |---------------------------------------------------| | Value: [0x80004027] | | | | Error Message | | +---------------------------------------------+ | | |The component or application containing the | | | |component has been disabled | | | | | | | +---------------------------------------------+ | | [Modules...] [Look up] [Close] [Help] | |----------------------------------------------------

Si esto no funciona, puede seguir algunas ideas desde aquí: http://blogs.msdn.com/oldnewthing/archive/2008/09/01/8914664.aspx

(La búsqueda de errores simplemente llama a FormatMessage () con el indicador FORMAT_MESSAGE_FROM_SYSTEM)

Si el error COM no es un error del sistema, es posible que también deba verificar la documentación del componente que arrojó el error.

Si detecta el error en el código, puede esperar que el componente implemente errores enriquecidos (GetErrorInfo (), igual que el objeto Err en VB) para que pueda obtener un mensaje completo que describa el problema.

No sé dónde encontrar la mejor información sobre el significado, las posibles causas y las posibles soluciones para resolver los errores COM cuando todo lo que tienes es HRESULT.

Buscar términos como ''80004027'' en Google es inútil, ya que te envía a grupos de discusión aleatorios en los que el 90% de las veces, la pregunta ''¿Qué significa 80004027?'' no es respondido

¿Cuál es un buen recurso para esto? ¿Por qué MSDN no es el mejor resultado de Google?


Yo siempre uso WinError.h. Eso tiene la gran mayoría de los códigos de error de Windows de todo tipo.

Un indicador clave a tener en cuenta es la parte Facility del código: el segundo byte más significativo. Es decir, 0x80nnmmmm, donde nn es la Instalación. Eso te dice qué componente generó el código. Cualquier cosa con una facilidad de 7 es un código de error de Windows reenvasado como HRESULT, y debe convertir la palabra baja a decimal y buscarla en WinError.h. También hay rangos de errores que aparecen en sus propios encabezados (por ejemplo, cualquier cosa entre 12000 y 12999 es un código de error de WinInet y debe buscarlo en WinInet.h).

Buscar el código de error le dará el nombre simbólico, que se puede encontrar en más documentación que el código en sí o la redacción del mensaje de error.

FACILITY_ITF (que tiene el valor 4, por lo que estos HRESULT comienzan en 0x8004) indica que el error está definido por la interfaz que está utilizando; deberás consultar con esa interfaz para averiguar qué significa.

Finalmente, COM también ofrece la interfaz IErrorInfo para recuperar información de error extendida: llame a GetErrorInfo para recuperar el objeto de error. Tendrá que consultar ISupportErrorInfo y llamar al método InterfaceSupportsErrorInfo de esa interfaz para determinar si la interfaz que llamó realmente configuró el objeto de error (y, por supuesto, si era un código de plantilla, podría estar mintiendo).


Buen enlace de Prakash (no estaba al tanto de las cosas de RCNr, pensé que esos bytes eran parte de las instalaciones, pero eso solo es cierto en Windows de 16 bits, parece).

A menudo, estos códigos desconocidos son específicos de la interfaz / componente que está utilizando. La instalación se establecerá en FACILITY_ITF. Tengo un viejo programa HRPlus ( ¿enlace? ) Que analiza HRESULT.