Existe uma maneira de dizer se as referências de interface dois COM apontar para a mesma instância?

StackOverflow https://stackoverflow.com/questions/323289

  •  11-07-2019
  •  | 
  •  

Pergunta

Dada duas referências de interface obtidos de diferentes fontes. Existe uma maneira programática para dizer se elas são implementadas pela mesma instância?

Uma verificação simples igualdade das referências de interface sempre falha.


EDIT: Grande parte da pergunta original, que acabou por ser um problema independente já foi movido para uma nova pergunta .

Foi útil?

Solução

Você pode consultar a interface IUnknown e comparar esses ponteiros. Todos os outros ponteiros de interface não são garantidos para retornar o mesmo valor cada vez.

As regras do Component Object Modelo :

identidade do objeto. É necessário que qualquer chamada para QueryInterface em qualquer interface de uma determinada ocorrência de objeto para o específico IUnknown interface deve sempre retornar o mesmo valor ponteiro física. Isto permite chamar QueryInterface (IID_IUnknown, ...) em qualquer duas interfaces e comparando os resultados para determinar se eles apontam para a mesma instância de um objeto (a mesma COM identidade de objeto).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top