Microsoft DirectX 8.0

CDeferredCommand クラス

CDeferredCommand クラスの階層

遅延コマンドは、IQueueCommand インターフェイスでのメソッドの呼び出しによってキューに入れられ、フィルタ グラフ マネージャおよび一部のフィルタによって公開される。このようなメソッドの呼び出しが成功すると、キューに入れられたコマンドを表す IDeferredCommand インターフェイスが返される。

CDeferredCommand オブジェクトは単一の遅延コマンドを表し、IDeferredCommand インターフェイスおよびタイム チェックと実際の実行を可能にするその他のメソッドを公開する。CDeferredCommand オブジェクトには、入れられるキューとなる CCmdQueue オブジェクトへの参照が含まれる。

参照カウントによって、CDeferredCommand クラスの有効期間が制御される。CDeferredCommand::Invoke メンバ関数を呼び出すと、呼び出し元のアプリケーションは参照がカウントされたインターフェイス ポインタを取得し、CCmdQueue オブジェクトも遅延コマンドの参照カウントを保持する。IDeferredCommand::Cancel メンバ関数を呼び出すと、遅延コマンドはコマンド キューから削除され、参照カウントは 1 減らされる。コマンドをキューから削除すると、キューに戻すことはできない。

プロテクト データ メンバ

m_bStream メソッドを呼び出すために渡されるストリーム タイムまたはプレゼンテーション時間のフラグ。
m_Dispatch ITypeInfo インターフェイスにアクセスする。
m_dispidMethod 実行するインターフェイス上のメソッド。
m_DispParams DISPPARAMS パラメータ リストを含む CDispParams オブジェクト。
m_hrResult 返される HRESULT 値を格納する。
m_iid インターフェイスのグローバル ユニーク識別子 (GUID)。
m_pQueue IQueueCommand インターフェイスを公開する CCmdQueue オブジェクトへのポインタ。
m_pUnk コマンドが実行されるインターフェイスへの IUnknown ポインタ。
m_pvarResult 呼び出されたメソッドからの結果の情報。
m_time コマンドが実行される時間。
m_wFlags 呼び出しのコンテキストを指定するフラグ。

メンバ関数

CDeferredCommand CDeferredCommand オブジェクトを作成する。
GetFlags この遅延コマンドに関連付けられたコンテキスト フラグを取得する。
GetIID メソッドが実行されるインターフェイスのインターフェイス識別子 (IID) を取得する。
GetMethod 実行されるメソッドのディスパッチ識別子を取得する。
GetParams メソッドに対する DISPPARAMS 引数リストを取得する。
GetResult 存在する場合は、結果の引数リストを取得する。
GetTime メソッドが実行される時間を取得する。
Invoke オブジェクトによって公開されるメソッドおよびプロパティへのアクセスを提供する。
IsStreamTime コマンドをストリーム タイムまたはプレゼンテーション時間のどちらで実行するかを指定する。

実装される IDeferredCommand メソッド

Cancel 以前にキューに入れられた CDeferredCommand::Invoke 要求を取り消す。
Confidence 現在は実装されていない。
Postpone 以前にキューに入れられたコマンドの新しいプレゼンテーション時間を指定する。
GetHResult 呼び出したメソッドの HRESULT 値を取得する。

実装される INonDelegatingUnknown メソッド

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

CDeferredCommand::Cancel

CDeferredCommand クラス

以前にキューに入れられた CDeferredCommand::Invoke 要求を取り消す。

構文

HRESULT Cancel(void);

戻り値

m_pQueue が NULL の場合は、VFW_E_ALREADY_CANCELLED を返す。呼び出しがエラーを生成する場合は、CCmdQueue::Remove からの HRESULT を返す。成功した場合は、S_OK を返す。

注意

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

CDeferredCommand::CDeferredCommand

CDeferredCommand クラス

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

構文

CDeferredCommand(
CCmdQueue *pQ,
LPUNKNOWN pUnk,
HRESULT *phr,
LPUNKNOWN pUnkExecutor,
REFTIME time,
GUID *iid,
long dispidMethod,
short wFlags,
long cArgs,
VARIANT *pDispParams,
VARIANT *pvarResult,
short *puArgErr,
BOOL bStream
    );

パラメータ

pQ
IQueueCommand インターフェイスを公開するオブジェクトへのポインタ。
pUnk
集成のための外部 IUnknown インターフェイスへのポインタ。
phr
返された HRESULT 値へのポインタ。
pUnkExecutor
このコマンドを実行するオブジェクトへのポインタ。
time
コマンドが実行される時間。
iid
メソッドを含むインターフェイスのグローバル ユニーク識別子 (GUID) へのポインタ。
dispidMethod
呼び出すインターフェイス上のメソッド。
wFlags
呼び出しのコンテキスト。
cArgs
渡される引数の数。
pDispParams
引数バリアント型のリストへのポインタ。
pvarResult
返されたバリアント型リストへのポインタ。
puArgErr
エラーが発生した pDispParams パラメータ リスト内の最後の引数へのポインタ。
bStream
遅延コマンドの時間がストリームタイム (TRUE) であるか、プレゼンテーションタイム (FALSE) であるかを示す値。

戻り値

戻り値なし。

CDeferredCommand::Confidence

CDeferredCommand クラス

このメソッドは現在実装されていない。E_NOTIMPL を返す。

構文

HRESULT Confidence(
LONG *pConfidence
    );

パラメータ

pConfidence
コンフィデンス レベルへのポインタ。

戻り値

E_NOTIMPL を返す。

注意

このメソッドの実装については、「IDeferredCommand::Confidence」を参照すること。

CDeferredCommand::GetFlags

CDeferredCommand クラス

この遅延コマンドに関連付けられたコンテキスト フラグを取得する。

構文

short GetFlags(void);

戻り値

取得される値は次のいずれかの値になる。
DISPATCH_METHOD メンバをメソッドとして実行する。プロパティが同じ名前である場合は、これと DISPATCH_PROPERTYGET フラグの両方を設定できる。
DISPATCH_PROPERTYGET メンバはプロパティまたはデータ メンバとして取得されている。
DISPATCH_PROPERTYPUT メンバはプロパティまたはデータ メンバとして変更されている。
DISPATCH_PROPERTYPUTREF メンバは、値の割り当てではなく、参照の割り当てによって変更されている。このフラグは、プロパティがオブジェクトへの参照を受け入れる場合にのみ有効である。

CDeferredCommand::GetHResult

CDeferredCommand クラス

呼び出したコマンドからの HRESULT 値を取得する。

構文

HRESULT GetHResult(
HRESULT *phrResult
    );

パラメータ

phrResult
HRESULT 値へのポインタ。

戻り値

m_pQueue が NULL の場合は、E_ABORT を返す。それ以外の場合は、S_OK を返す。

注意

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

CDeferredCommand::GetIID

CDeferredCommand クラス

メソッドが実行されるインターフェイスのインターフェイス識別子 (IID) を取得する。

構文

REFIID GetIID(void);

戻り値

メソッドが実行されるインターフェイスの IID を取得する。

CDeferredCommand::GetMethod

CDeferredCommand クラス

実行されるメソッドのディスパッチ識別子 (DISPID) を取得する。

構文

long GetMethod(void);

戻り値

実行するメソッドの DISPID を返す。

CDeferredCommand::GetParams

CDeferredCommand クラス

メソッドに対する DISPPARAMS 引数リストを取得する。

構文

DISPPARAMS* GetParams(void);

戻り値

DISPPARAMS 引数リストを返す。

CDeferredCommand::GetResult

CDeferredCommand クラス

存在する場合は、結果の引数リストを取得する。

構文

VARIANT* GetResult(void);

戻り値

存在する場合は、メソッドの引数リストを含むバリアントを返す。

CDeferredCommand::GetTime

CDeferredCommand クラス

メソッドが実行される時間を取得する。

構文

CRefTime GetTime(void);

戻り値

基準タイムを含む CRefTime オブジェクトを返す。

CDeferredCommand::Invoke

CDeferredCommand クラス

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

構文

HRESULT Invoke(void);

戻り値

m_pQueue が NULL の場合は、VFW_E_ALREADY_CANCELLED を返す。それ以外の場合は、IDispatch::GetTypeInfo または IUnknown::QueryInterface の呼び出しの結果の HRESULT を返す。

CDeferredCommand::IsStreamTime

CDeferredCommand クラス

コマンドをストリーム タイムまたはプレゼンテーション時間のどちらで実行するかを指定する。

構文

BOOL IsStreamTime(void);

戻り値

ストリーム タイムに設定されている場合は TRUE を返す。それ以外の場合は FALSE を返す。

CDeferredCommand::NonDelegatingQueryInterface

CDeferredCommand クラス

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

構文

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

パラメータ

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

戻り値

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

注意

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

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

CDeferredCommand::Postpone

CDeferredCommand クラス

以前にキューに入れられたコマンドの新しいプレゼンテーション時間を指定する。

構文

HRESULT Postpone(
REFTIME newtime
    );

パラメータ

newtime
新しいプレゼンテーション時間。

戻り値

newtime が既に過ぎている場合は、VFW_E_TIME_ALREADY_PASSED を返す。それ以外の場合は、CCmdQueue::Remove (リストから削除する場合) または CCmdQueue::Insert (変更した時間に再び挿入する場合) の呼び出しの結果の HRESULT を返す。

注意

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