次の方法で共有


IQueueCommand::InvokeAtStreamTime

InvokeAtStreamTime メソッドは、指定されたストリーム タイム (つまり、現在のストリーム タイム オフセットとプレゼンテーション タイムの差) に実行するため、メソッドまたはプロパティの変更をキューに入れる。

構文

  HRESULT InvokeAtStreamTime(
  IDeferredCommand **pCmd,
  REFTIME time,
  GUID *iid,
  long dispidMember,
  short wFlags,
  long cArgs,
  VARIANT *pDispParams,
  VARIANT *pvarResult,
  short *puArgErr
);

パラメータ

pCmd

[out] IDeferredCommand インターフェイス ポインタを受け取る変数のアドレス。

time

[in] コマンドを起動する時間。

iid

[in] インターフェイスのインターフェイス識別子 (IID) へのポインタ。

dispidMember

[in] インターフェイスのメソッドまたはプロパティのディスパッチ識別子 (DISPID)。IDispatch::InvokeAt メソッドの dispIdMember 引数と同等。

wFlags

[in] 呼び出しのコンテキストを記述するフラグ。IDispatch::InvokeAt メソッドの wFlags 引数と同等。

cArgs

[in] pDispParams 内の引数の数。DISPPARAMS 構造体の cArgs メンバと同等。

pDispParams

[in] 引数を含む配列へのポインタ。DISPPARAMS 構造体の rgvarg メンバと同等。

pvarResult

[in, out] 結果を受け取る VARIANT へのポインタ。IDispatch::InvokeAt メソッドの pVarResult 引数と同等。

puArgErr

[out] 最初にエラーが発生した引数のインデックスを受け取る変数へのポインタ。IDispatch::InvokeAt メソッドの puArgErr 引数と同等。

戻り値

HRESULT 値を返す。

注意

dispidMember 引数用に DISPID を取得するには、IDispatch::GetIDsOfNames メソッドを使う。

サンプル コード

次のサンプル コードでは、IMediaControl::Stop コマンドが 3.0 秒間キューに入れられる。

IQueueCommand *pQ = 0;
IMediaControl *pControl = 0;

// IQueueCommand を照会する。
pGraph->QueryInterface(IID_IQueueCommand, reinterpret_cast<void**>(&pQ));

// IMediaControl を照会する。
pGraph->QueryInterface(IID_IMediaControl, reinterpret_cast<void**>(&pControl));

// IMediaControl::Stop メソッドの DISPID を見つける。
OLECHAR *szMethod = OLESTR("Stop");

long dispid;
hr = pControl->GetIDsOfNames(IID_NULL, &szMethod, 1, 0, &dispid);

// コマンドを呼び出す。
IDeferredCommand *pCmd = 0;
hr = pQ->InvokeAtPresentationTime(&pCmd, 3.0,
    const_cast<GUID*>(&IID_IMediaControl), dispid, DISPATCH_METHOD, 
    0, 0, 0, 0);
if (SUCCEEDED(hr))
{
    pControl->Run();
    pCmd->Release();
}

参照