C'è un modo per dire se due riferimenti all'interfaccia COM puntano nella stessa istanza?

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

  •  11-07-2019
  •  | 
  •  

Domanda

Dati due riferimenti all'interfaccia ottenuti da fonti diverse. C'è un modo programmatico per dire se sono implementati dalla stessa istanza?

Un semplice controllo di uguaglianza dei riferimenti dell'interfaccia fallisce sempre.


MODIFICA: gran parte della domanda originale, che si è rivelata un problema indipendente, è stata ora spostata in una nuova domanda .

È stato utile?

Soluzione

È possibile eseguire una query per l'interfaccia IUnknown e confrontare questi puntatori. Non è garantito che tutti gli altri puntatori a interfaccia restituiscano lo stesso valore ogni volta.

da Le regole del modello a oggetti componente :

  

Identità oggetto. È necessario che qualsiasi chiamata a QueryInterface su qualsiasi interfaccia per una determinata istanza di oggetto per l'interfaccia specifica IUnknown debba sempre restituire lo stesso valore di puntatore fisico. Ciò consente di chiamare QueryInterface (IID_IUnknown, ...) su due interfacce e di confrontare i risultati per determinare se puntano alla stessa istanza di un oggetto (la stessa identità dell'oggetto COM).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top