Platform SDK: DirectX

IUnknown インターフェイス

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「Visual Basic プログラミングについて」を参照すること。

[C++]

COM オブジェクトはいずれも、IUnknown というインターフェイスをサポートする。このインターフェイスは、オブジェクトの寿命を制御する機能およびオブジェクトに実装されるほかのインターフェイスを取得する機能を DirectX に提供する。IUnknown は、次の 3 つのメソッドを持つ。

AddRef メソッドと Release メソッドは、オブジェクトの参照カウントを管理する。たとえば、DirectDrawSurface オブジェクトを作成したとする。作成直後、このオブジェクトの参照カウントは 1 に設定される。このオブジェクトのインターフェイスへのポインタを返す関数を作成する場合は、返すポインタを使って AddRef を呼び出し、ポインタを返すたびに参照カウントをインクリメントしておくようにしなければならない。また、AddRef を呼び出した場合は、必ず対応する Release を呼び出さなければならない。ポインタを破棄するには、その前にそのポインタを使って Release を呼び出さなければならない。オブジェクトの参照カウントが 0 になると、オブジェクトは破棄され、そのオブジェクトへのインターフェイスはすべて無効になる。

QueryInterface メソッドは、オブジェクトが指定されたインターフェイスをサポートしているかどうかを調べる。目的のインターフェイスがサポートされていた場合は、そのインターフェイスへのポインタが返される。このポインタを取得できたら、そのインターフェイスが持つ各種メソッドを使ってオブジェクトとやり取りできるようになる。正常にインターフェイスへのポインタが返された場合、QueryInterface はその内部で AddRef を呼び出して参照カウントをインクリメントしている。このため、QueryInterface により取得したポインタを破棄するときは、その前にアプリケーションから Release を呼び出して参照カウントをデクリメントしておかなければならない。

動作環境

  Windows NT/2000 : Windows NT 3.1 以降が必要。
  Windows 95/98 : Windows 95 以降が必要。
  ヘッダー : unknwn.h で宣言。