¿Hay alguna manera de saber si dos referencias de interfaz COM apuntan a la misma instancia?
-
11-07-2019 - |
Pregunta
Dadas dos referencias de interfaz obtenidas de diferentes fuentes. ¿Hay alguna forma programática para saber si se implementan en la misma instancia?
Una simple comprobación de igualdad de las referencias de la interfaz siempre falla.
EDITAR: Gran parte de la pregunta original, que resultó ser un problema independiente, ahora se ha trasladado a una nueva pregunta .
Solución
Puede consultar la interfaz IUnknown y comparar estos punteros. No se garantiza que todos los demás punteros de interfaz devuelvan el mismo valor cada vez.
de Las reglas del modelo de objetos componentes :
Identidad de objeto. Se requiere que cualquier llamada a QueryInterface en cualquier interfaz para una instancia de objeto dada para la interfaz específica IUnknown siempre debe devolver el mismo valor de puntero físico. Esto permite llamar a QueryInterface (IID_IUnknown, ...) en cualquiera de las dos interfaces y comparar los resultados para determinar si apuntan a la misma instancia de un objeto (la misma identidad de objeto COM).