COMのおさらい
C++のついでにCOMについてもおさらいします。
COMとは何か?
Component Object Modelの略。カプセル化とダイナミックリンクが特徴。言語依存せず、再利用性が高く、プロセス間通信が容易。必要なインターフェースは動的にクライアントから要求される。
interface
COMではインターフェースクラスを用いてインターフェースを記述する。インターフェースクラスはIUnknownを継承する。IUnknownには以下のメソッドが存在する。
QueryInterface
第一引数のIID型を用いて提供するインターフェースについて応答を行う。インターフェースが存在する場合には第二引数にインターフェースのポインタをセットし、S_OKを返却する。存在しない場合はE_NOINTERFACEを返却する。
AddRef
参照カウンタのインクリメントを行い、参照カウンタを返却する。ちなみにQueryInterfaceでも一度呼び出される
Release
参照カウンタのデクリメントと参照カウンタの返却を行う。参照カウンタが0以下の場合はコンポーネントの解放を行う