誰かがこの質問に反対票を投じた理由がわかりません。私には完全に妥当な質問のように思えます。彼らは今朝まだコーヒーを飲んでいないだけかもしれません。
GUID、IUnknown、および IDispatch が COM と関係があるかどうかを尋ねているようです。簡単な調査をしてみます。
すべての COM コンポーネントは、共通のインターフェイス IUnknown を公開します。IUnknown には、メソッド AddRef()、Release()、および QueryInterface() があります。AddRef() と Release() は参照カウントをサポートするために使用されるため、オブジェクトへのすべての参照が解放されると、オブジェクトは破棄されます。QueryInterface() は、C++ の dynamic_cast<> 演算子の COM バージョンに似ています。IUnknow ポインターが実際に IDog や ICat などの別の型のオブジェクトを指しているかどうかを確認するために、クライアント コードによって使用されます。
そのため、すべての COM コンポーネントは IUnknown を実装する必要がありますが、ほとんどの COM ライブラリはこれを自動的に実装するため、COM コードを記述する場合、通常は IUnknown を取得するためのコードを記述する必要はありません。無料で入手できます。
GUID は指紋のようなものです。実生活で 2 人がまったく同じ名前を持つことができるのと同じように、COM でも 2 つの COM コンポーネントが同じ名前を持つことができます。たとえば、両方とも IDog インターフェイスを実装する 2 つのライブラリを使用できますが、それらはまったく異なることを行う場合があります。ただし、両方のライブラリをマシンにインストールできるはずであり、GUID を使用して 2 つを区別する必要があります。GUID はグローバルに一意の ID です。つまり、GUID を生成すると、理論的には、他の時点で地球上の他の人が同じ GUID を作成することはできなくなります。したがって、名前に加えて、すべての COM オブジェクト (およびコクラス、ライブラリなど) には GUID があります。
IDispatch は IUnknown によく似たもう 1 つの基本インターフェイスですが、すべての COM オブジェクトに必要な IUnknown とは異なり、IDispatch はオプションであり、すべてではないが多くの COM オブジェクトがサポートする特別な機能を提供します。特定の言語機能をサポートしたり、クライアントがオブジェクトを使いやすくしたりすることなどです。ほとんどの (おそらく) COM オブジェクトは、このインターフェイスを公開します。
COM ライブラリについて; はい、Windows に登録する必要があります。