2009-11-18 12 views

Respuesta

2

Puede probar IDispatch/IDispatchEx si simplemente desea saber qué métodos son exigibles de su consumidor.

En COM, el método QueryInterface en IUnknown no es necesario para exponer las interfaces que puede devolver. Usted solicita uno basado en su IID y lo obtiene o no. La implementación de QI en un objeto COM particular varía considerablemente, aunque se supone que debe seguir el patrón descrito por Microsoft aquí: http://msdn.microsoft.com/en-us/library/ms682521%28VS.85%29.aspx.

+0

Si no recuerdo mal, con IDispatch/IDispatchEx encontrará las interfaces con el atributo oleautomation en el IDL. –

2

Dependencia Walker no mostrará las interfaces, ya que las únicas exportaciones son DllGetClassObject, DllRegisterServer, etc. (para COM alojado en DLL).

Puede, como dice weismat, inspeccionar los archivos TLB. Muchos objetos COM contienen typelibs incrustados en la sección de recursos del ejecutable. Con una herramienta como hacker de recursos puede extraer los TLB y usar las funciones COM de LoadTypeLib para obtener un puntero a la interfaz ITypeLib (puede usar LoadTypeLib/LoadTypeLibEx directamente con una DLL COM o EXE, por supuesto).

Con esta interfaz puede iterar sobre los tipos que contiene.

+2

La evaluación de los contenidos de la TLB no expondrá la información sobre las interfaces privadas que pueda estar utilizando el objeto COM. –

+0

Las interfaces COM privadas no aparecerán, tienes razón. –

Cuestiones relacionadas