2つのCOMインターフェイス参照が同じインスタンスを指しているかどうかを確認する方法はありますか?

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

  •  11-07-2019
  •  | 
  •  

質問

異なるソースから取得した2つのインターフェイス参照を指定します。同じインスタンスによって実装されているかどうかをプログラムで確認する方法はありますか?

インターフェイス参照の単純な同等性チェックは常に失敗します。


編集:独立した問題であることが判明した元の質問の大部分は、新しい質問

役に立ちましたか?

解決

IUnknownインターフェイスを照会して、これらのポインターを比較できます。他のすべてのインターフェイスポインターは、毎回同じ値を返すとは限りません。

コンポーネントオブジェクトモデルのルールから:

  

オブジェクトID。特定のインターフェイスIUnknownの特定のオブジェクトインスタンスのインターフェイスでQueryInterfaceを呼び出す場合は、常に同じ物理ポインター値を返す必要があります。これにより、任意の2つのインターフェイスでQueryInterface(IID_IUnknown、...)を呼び出し、結果を比較して、それらがオブジェクトの同じインスタンス(同じCOMオブジェクトID)を指しているかどうかを判断できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top