Microsoft DirectX 8.0 |
IUnknown インターフェイスを実装する。Microsoft® DirectShow® のほとんどの Component Object Model (COM) オブジェクトは CUnknown から派生する。
宣言 : Cobmase.h
オブジェクトを実装する場合、CUnknown から派生させたい場合もある。CUknown から派生させると、スレッド対応の実装が提供されるほか、IUnknown を実装する面倒がなくなる。
この基底クラスの使い方については、「IUnknown の実装方法」を参照すること。以下にその要約を示す。
Protected メンバ変数 m_cRef 参照カウント。 Public メソッド CUnknown コンストラクタ メソッド。 ~CUnknown デストラクタ メソッド。 GetOwner 制御する IUnknown へのポインタを取得する。 INonDelegatingUnknown メソッド NonDelegatingAddRef 参照カウントをインクリメントする。 NonDelegatingQueryInterface インターフェイス ポインタを取得し、参照カウントをインクリメントする。 NonDelegatingRelease 参照カウントをデクリメントする。
参照カウント。
構文
volatile LONG m_cRef;
注意
NonDelegatingAddRef または NonDelegatingRelease メソッドをオーバーライドする場合はこのメンバ変数を使用する。
コンストラクタ メソッド。
構文
CUnknown( const TCHAR *pName, LPUNKNOWN pUnk );
パラメータ
- pName
- オブジェクトの名前を格納している文字列。デバッギングのために CBaseObject コンストラクタで使用される。
- pUnk
- このオブジェクトの所有者へのポインタ。オブジェクトが集成されている場合は、集成オブジェクトの IUnknown インターフェイスにポインタを渡す。それ以外の場合は、このパラメータを NULL に設定する。
注意
オブジェクトは参照カウントがゼロとして初期化される。
デストラクタ メソッド。
構文
virtual ~CUnknown(void);
所有コンポーネントの IUnknown インターフェイスへのポインタを取得する。集成したコンポーネントの場合、その所有者は外部コンポーネントである。それ以外の場合、コンポーネントはそれ自体を所有する。
構文
LPUNKNOWN GetOwner(void);
戻り値
制御する IUnknown インターフェイスへのポインタを返す。
オブジェクトの参照カウントをインクリメントする。INonDelegatingUnknown::NonDelegatingAddRef メソッドを実装する。
構文
ULONG NonDelegatingAddRef(void);
戻り値
参照カウントを返す。
インターフェイス ポインタを取得し、参照カウントをインクリメントする。INonDelegatingUnknown::NonDelegatingQueryInterface メソッドを実装する。
構文
HRESULT NonDelegatingQueryInterface( REFIID riid, void **ppv );
パラメータ
- riid
- インターフェイスの識別子。
- ppv
- インターフェイスを受け取るポインタのアドレス。
戻り値
次の表に示されるいずれかの HRESULT 値を返す。
S_OK 成功。 E_NOINTERFACE オブジェクトはこのインターフェイスをサポートしていない。 E_POINTER NULL ポインタ引数。
注意
CUnknown クラスは IUknown インターフェイスのみを公開する。このメソッドのオーバーライド方法については、「IUnknown の実装方法」を参照すること。
オブジェクトの参照カウントをデクリメントする。INonDelegatingUnknown::NonDelegatingRelease メソッドを実装する。
構文
ULONG NonDelegatingRelease(void);
戻り値
参照カウントを返す。
注意
参照カウントがゼロになると、オブジェクトはそれ自体を削除する。