Microsoft DirectX 8.0

CMediaControl クラス

CMediaControl クラスの階層

CMediaControl クラスは、デュアル インターフェイス IMediaControlIDispatch メソッドの基底クラスの処理を提供する。このクラスは、IMediaControl インターフェイスのプロパティおよびメソッドを純粋仮想のままにしておく。

通常、IMediaControl インターフェイスを実装するオブジェクトはフィルタ グラフ マネージャだけである。フィルタは、IBaseFilter から継承した IMediaFilter インターフェイスを実装して、フィルタ グラフ マネージャからの制御コマンドを受け取る。したがって、このクラス ライブラリを使用するのはフィルタ開発者に限定される。

CMediaControl::GetIDsOfNamesCMediaControl::GetTypeInfoCMediaControl::GetTypeInfoCount、および CMediaControl::Invoke メンバ関数は、IDispatch メソッドの標準的な実装で、CBaseDispatch クラス (およびタイプ ライブラリ) を使用してコマンドを解析し、IMediaControl インターフェイスの純粋仮想メソッドに渡す。

control.odl で定義される IMediaControl は、純粋仮想のままである。

メンバ関数

CMediaControl CMediaControl オブジェクトを作成する。

実装される INonDelegatingUnknown メソッド

NonDelegatingQueryInterface 指定された参照カウントのインターフェイスを返す。

実装される IDispatch メソッド

GetIDsOfNames 単一のメンバおよびオプションのパラメータのセットを、対応する整数のディスパッチ識別子 (DISPID) にマップする。この識別子は、以降の CMediaControl::Invoke メソッドの呼び出しで使用できる。
GetTypeInfo タイプ情報オブジェクトを取得する。インターフェイスのタイプ情報を取得できる。
GetTypeInfoCount オブジェクトによって提供されるタイプ情報インターフェイスの数を取得する。
Invoke オブジェクトによって公開されるプロパティおよびメソッドへのアクセスを提供する。

CMediaControl::CMediaControl

CMediaControl クラス

CMediaControl オブジェクトを作成する。

構文

CMediaControl(
const TCHAR *pName,
LPUNKNOWN pUnk
    );

パラメータ

pName
デバッグのために使用されるオブジェクトの名前へのポインタ。
pUnk
このオブジェクトの所有者へのポインタ。

戻り値

戻り値なし。

注意

スタティック メモリに pName パラメータを割り当てる。この名前は、オブジェクトの作成および削除を行うデバッギング端末上に現れる。

CMediaControl::GetIDsOfNames

CMediaControl クラス

単一のメンバ関数およびオプションのパラメータのセットを、対応する整数のディスパッチ識別子 (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_CLSIDCLSID が認識されなかった。
DISP_E_UNKNOWNNAME1 つ以上の名前が不明だった。返された DISPID には、不明な名前に対応する各エントリの DISPID_UNKNOWN が含まれる。
E_OUTOFMEMORYメモリ不足。
S_OK成功。

CMediaControl::GetTypeInfo

CMediaControl クラス

タイプ情報オブジェクトを取得する。インターフェイスのタイプ情報を取得できる。

構文

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_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
S_OK または NOERROR成功。

CMediaControl::GetTypeInfoCount

CMediaControl クラス

オブジェクトによって提供されるタイプ情報インターフェイスの数を取得する。

構文

HRESULT GetTypeInfoCount(
UINT *pctinfo
    );

パラメータ

pctinfo
オブジェクトが提供するタイプ情報インターフェイスの数へのポインタ。オブジェクトがタイプ情報を提供した場合、この数は 1 である。それ以外の場合は、0 である。

戻り値

pctinfo が無効な場合は、E_POINTER を返す。それ以外の場合は、S_OK を返す。

CMediaControl::Invoke

CMediaControl クラス

オブジェクトによって公開されるプロパティおよびメソッドへのアクセスを提供する。

構文

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 を返す。

CMediaControl::NonDelegatingQueryInterface

CMediaControl クラス

指定された参照カウントのインターフェイスを取得する。

構文

HRESULT NonDelegatingQueryInterface(
REFIID riid,
void **ppv
    );

パラメータ

riid
参照識別子。
ppv
インターフェイスへのポインタのアドレス。

戻り値

ppv が無効な場合は、E_POINTER を返す。クエリが成功した場合は NOERROR、失敗した場合は E_NOINTERFACE を返す。

注意

デフォルトでは、IMediaControl および IUnknown インターフェイスへのポインタを返す。このメンバ関数をオーバーライドして、派生クラスで実装された追加のインターフェイスを公開する。

このメンバ関数は、INonDelegatingUnknown::NonDelegatingQueryInterface メソッドを実装する。