Microsoft DirectX 8.0 |
CMediaControl クラスは、デュアル インターフェイス IMediaControl の IDispatch メソッドの基底クラスの処理を提供する。このクラスは、IMediaControl インターフェイスのプロパティおよびメソッドを純粋仮想のままにしておく。
通常、IMediaControl インターフェイスを実装するオブジェクトはフィルタ グラフ マネージャだけである。フィルタは、IBaseFilter から継承した IMediaFilter インターフェイスを実装して、フィルタ グラフ マネージャからの制御コマンドを受け取る。したがって、このクラス ライブラリを使用するのはフィルタ開発者に限定される。
CMediaControl::GetIDsOfNames、CMediaControl::GetTypeInfo、CMediaControl::GetTypeInfoCount、および CMediaControl::Invoke メンバ関数は、IDispatch メソッドの標準的な実装で、CBaseDispatch クラス (およびタイプ ライブラリ) を使用してコマンドを解析し、IMediaControl インターフェイスの純粋仮想メソッドに渡す。
control.odl で定義される IMediaControl は、純粋仮想のままである。
CMediaControl CMediaControl オブジェクトを作成する。
実装される INonDelegatingUnknown メソッド
NonDelegatingQueryInterface 指定された参照カウントのインターフェイスを返す。
GetIDsOfNames 単一のメンバおよびオプションのパラメータのセットを、対応する整数のディスパッチ識別子 (DISPID) にマップする。この識別子は、以降の CMediaControl::Invoke メソッドの呼び出しで使用できる。 GetTypeInfo タイプ情報オブジェクトを取得する。インターフェイスのタイプ情報を取得できる。 GetTypeInfoCount オブジェクトによって提供されるタイプ情報インターフェイスの数を取得する。 Invoke オブジェクトによって公開されるプロパティおよびメソッドへのアクセスを提供する。
CMediaControl オブジェクトを作成する。
構文
CMediaControl( const TCHAR *pName, LPUNKNOWN pUnk );
パラメータ
- pName
- デバッグのために使用されるオブジェクトの名前へのポインタ。
- pUnk
- このオブジェクトの所有者へのポインタ。
戻り値
戻り値なし。
注意
スタティック メモリに pName パラメータを割り当てる。この名前は、オブジェクトの作成および削除を行うデバッギング端末上に現れる。
単一のメンバ関数およびオプションのパラメータのセットを、対応する整数のディスパッチ識別子 (DISPID) にマップする。この識別子は、以降の CMediaControl::Invoke メンバ関数の呼び出しで使用できる。
構文
HRESULT GetIDsOfNames( REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid );
パラメータ
- riid
- 参照識別子。将来的な使用のために予約されている。NULL でなければならない。
- rgszNames
- 渡されたマップする名前の配列へのポインタのアドレス。
- cNames
- マップされる名前の数。
- lcid
- 名前を解釈するロケール コンテキスト。
- rgdispid
- 呼び出し元割り当て済み配列へのポインタ。各要素には、rgszNames 配列に渡される名前の 1 つに対応する ID が含まれる。最初の要素はメンバの名前を表し、以降の要素は各メンバのパラメータを表す。
戻り値
次のいずれかの値を返す。
DISP_E_UNKNOWN_CLSID CLSID が認識されなかった。 DISP_E_UNKNOWNNAME 1 つ以上の名前が不明だった。返された DISPID には、不明な名前に対応する各エントリの DISPID_UNKNOWN が含まれる。 E_OUTOFMEMORY メモリ不足。 S_OK 成功。
タイプ情報オブジェクトを取得する。インターフェイスのタイプ情報を取得できる。
構文
HRESULT GetTypeInfo( UINT itinfo, LCID lcid, ITypeInfo **pptinfo );
パラメータ
- itinfo
- 返されるタイプ情報。ゼロを渡して、IDispatch 実装のタイプ情報を取得する。
- lcid
- タイプ情報のロケール ID。ローカライズされたメンバ名をサポートするクラスの場合、オブジェクトは異なる言語の異なるタイプ情報を返すことができる場合がある。ローカライズされたメンバ名をサポートしないクラスの場合、このパラメータは無視することができる。
- pptinfo
- 要求されたタイプ情報オブジェクトへのポインタのアドレス。
戻り値
pptinfo が無効な場合は、E_POINTER を返す。itinfo がゼロ以外の場合は、TYPE_E_ELEMENTNOTFOUND を返す。成功した場合は、S_OK を返す。それ以外の場合は、タイプを取得するための呼び出しの 1 つから HRESULT を返す。HRESULT はエラーを示し、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL 失敗。 E_POINTER Null ポインタ引数。 E_INVALIDARG 無効な引数。 S_OK または NOERROR 成功。
オブジェクトによって提供されるタイプ情報インターフェイスの数を取得する。
構文
HRESULT GetTypeInfoCount( UINT *pctinfo );
パラメータ
- pctinfo
- オブジェクトが提供するタイプ情報インターフェイスの数へのポインタ。オブジェクトがタイプ情報を提供した場合、この数は 1 である。それ以外の場合は、0 である。
戻り値
pctinfo が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。
オブジェクトによって公開されるプロパティおよびメソッドへのアクセスを提供する。
構文
HRESULT Invoke( DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr );
パラメータ
- dispidMember
- メンバの識別子。ディスパッチ識別子を取得するには、CMediaControl::GetIDsOfNames またはオブジェクトのドキュメントを使用する。
- riid
- 将来的な使用のために予約されている。IID_NULL でなければならない。
- lcid
- 引数を解釈するロケール コンテキスト。
- wFlags
- CMediaControl::Invoke 呼び出しのコンテキストを記述するフラグ。
- pdispparams
- 引数の配列、名前付き引数の引数ディスパッチ ID の配列、および配列内の要素の数を含む構造体へのポインタ。
- pvarResult
- 結果が格納されるポインタ、または呼び出し元が結果を求めていない場合は NULL。
- pexcepinfo
- 例外情報を含む構造体へのポインタ。
- puArgErr
- DISPPARAMS 構造体の rgvarg 配列内で、エラーがある最初の引数のインデックスへのポインタ。DISPPARAMS の詳細については、Platform SDK を参照すること。
戻り値
riid が IID_NULL 以外の場合は、DISP_E_UNKNOWNINTERFACE を返す。呼び出しが失敗した場合は、CMediaControl::GetTypeInfo からエラー コードの 1 つを返す。それ以外の場合は、IDispatch::Invoke への呼び出しから HRESULT を返す。
指定された参照カウントのインターフェイスを取得する。
構文
HRESULT NonDelegatingQueryInterface( REFIID riid, void **ppv );
パラメータ
- riid
- 参照識別子。
- ppv
- インターフェイスへのポインタのアドレス。
戻り値
ppv が無効な場合は、E_POINTER を返す。クエリが成功した場合は NOERROR、失敗した場合は E_NOINTERFACE を返す。
注意
デフォルトでは、IMediaControl および IUnknown インターフェイスへのポインタを返す。このメンバ関数をオーバーライドして、派生クラスで実装された追加のインターフェイスを公開する。
このメンバ関数は、INonDelegatingUnknown::NonDelegatingQueryInterface メソッドを実装する。