Microsoft DirectX 8.0 |
遅延コマンドは、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 コマンドをストリーム タイムまたはプレゼンテーション時間のどちらで実行するかを指定する。
Cancel 以前にキューに入れられた CDeferredCommand::Invoke 要求を取り消す。 Confidence 現在は実装されていない。 Postpone 以前にキューに入れられたコマンドの新しいプレゼンテーション時間を指定する。 GetHResult 呼び出したメソッドの HRESULT 値を取得する。
実装される INonDelegatingUnknown メソッド
NonDelegatingQueryInterface 指定された参照カウントのインターフェイスを取得する。
以前にキューに入れられた CDeferredCommand::Invoke 要求を取り消す。
構文
HRESULT Cancel(void);
戻り値
m_pQueue が NULL の場合は、VFW_E_ALREADY_CANCELLED を返す。呼び出しがエラーを生成する場合は、CCmdQueue::Remove からの HRESULT を返す。成功した場合は、S_OK を返す。
注意
このメンバ関数は、IDeferredCommand::Cancel メソッドを実装する。
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) であるかを示す値。
戻り値
戻り値なし。
このメソッドは現在実装されていない。E_NOTIMPL を返す。
構文
HRESULT Confidence( LONG *pConfidence );
パラメータ
- pConfidence
- コンフィデンス レベルへのポインタ。
戻り値
E_NOTIMPL を返す。
注意
このメソッドの実装については、「IDeferredCommand::Confidence」を参照すること。
この遅延コマンドに関連付けられたコンテキスト フラグを取得する。
構文
short GetFlags(void);
戻り値
取得される値は次のいずれかの値になる。
DISPATCH_METHOD メンバをメソッドとして実行する。プロパティが同じ名前である場合は、これと DISPATCH_PROPERTYGET フラグの両方を設定できる。 DISPATCH_PROPERTYGET メンバはプロパティまたはデータ メンバとして取得されている。 DISPATCH_PROPERTYPUT メンバはプロパティまたはデータ メンバとして変更されている。 DISPATCH_PROPERTYPUTREF メンバは、値の割り当てではなく、参照の割り当てによって変更されている。このフラグは、プロパティがオブジェクトへの参照を受け入れる場合にのみ有効である。
呼び出したコマンドからの HRESULT 値を取得する。
構文
HRESULT GetHResult( HRESULT *phrResult );
パラメータ
- phrResult
- HRESULT 値へのポインタ。
戻り値
m_pQueue が NULL の場合は、E_ABORT を返す。それ以外の場合は、S_OK を返す。
注意
このメンバ関数は、IDeferredCommand::GetHResult メソッドを実装する。
メソッドが実行されるインターフェイスのインターフェイス識別子 (IID) を取得する。
構文
REFIID GetIID(void);
戻り値
メソッドが実行されるインターフェイスの IID を取得する。
実行されるメソッドのディスパッチ識別子 (DISPID) を取得する。
構文
long GetMethod(void);
戻り値
実行するメソッドの DISPID を返す。
メソッドに対する DISPPARAMS 引数リストを取得する。
構文
DISPPARAMS* GetParams(void);
戻り値
DISPPARAMS 引数リストを返す。
存在する場合は、結果の引数リストを取得する。
構文
VARIANT* GetResult(void);
戻り値
存在する場合は、メソッドの引数リストを含むバリアントを返す。
メソッドが実行される時間を取得する。
構文
CRefTime GetTime(void);
戻り値
オブジェクトによって公開されるメソッドおよびプロパティへのアクセスを提供する。
構文
HRESULT Invoke(void);
戻り値
m_pQueue が NULL の場合は、VFW_E_ALREADY_CANCELLED を返す。それ以外の場合は、IDispatch::GetTypeInfo または IUnknown::QueryInterface の呼び出しの結果の HRESULT を返す。
コマンドをストリーム タイムまたはプレゼンテーション時間のどちらで実行するかを指定する。
構文
BOOL IsStreamTime(void);
戻り値
ストリーム タイムに設定されている場合は TRUE を返す。それ以外の場合は FALSE を返す。
指定された参照カウントのインターフェイスを取得する。
構文
HRESULT NonDelegatingQueryInterface( REFIID riid, void **ppv );
パラメータ
- riid
- 参照識別子。
- ppv
- インターフェイスへのポインタのアドレス。
戻り値
ppv が無効な場合は、E_POINTER を返す。クエリが成功した場合は NOERROR、失敗した場合は E_NOINTERFACE を返す。
注意
デフォルトでは、IDeferredCommand および IUnknown インターフェイスへのポインタを返す。このメソッドをオーバーライドして、派生クラスで実装された追加のインターフェイスを公開する。
このメンバ関数は、INonDelegatingUnknown::NonDelegatingQueryInterface メソッドを実装する。
以前にキューに入れられたコマンドの新しいプレゼンテーション時間を指定する。
構文
HRESULT Postpone( REFTIME newtime );
パラメータ
- newtime
- 新しいプレゼンテーション時間。
戻り値
newtime が既に過ぎている場合は、VFW_E_TIME_ALREADY_PASSED を返す。それ以外の場合は、CCmdQueue::Remove (リストから削除する場合) または CCmdQueue::Insert (変更した時間に再び挿入する場合) の呼び出しの結果の HRESULT を返す。
注意
このメンバ関数は、IDeferredCommand::Postpone メソッドを実装する。