Поделиться через


Метод IQueueCommand::InvokeAtStreamTime (control.h)

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Метод InvokeAtStreamTime помещает в очередь изменение метода или свойства для выполнения в указанное время потока (т. е. время представления относительно смещения текущего времени потока).

Синтаксис

HRESULT InvokeAtStreamTime(
  [out]     IDeferredCommand **pCmd,
  [in]      REFTIME          time,
  [in]      GUID             *iid,
  [in]      long             dispidMethod,
  [in]      short            wFlags,
  [in]      long             cArgs,
  [in]      VARIANT          *pDispParams,
  [in, out] VARIANT          *pvarResult,
  [out]     short            *puArgErr
);

Параметры

[out] pCmd

Адрес переменной, получающей указатель интерфейса IDeferredCommand .

[in] time

Время вызова команды.

[in] iid

Указатель на идентификатор интерфейса (IID) интерфейса.

[in] dispidMethod

Идентификатор диспетчеризации (DISPID) метода или свойства в интерфейсе. Эквивалентно параметру dispIdMember метода IDispatch::Invoke .

[in] wFlags

Флаги, описывающие контекст вызова. Эквивалентно параметру wFlags метода IDispatch::Invoke .

[in] cArgs

Число аргументов в pDispParams. Эквивалентно члену cArgs структуры DISPPARAMS .

[in] pDispParams

Указатель на массив, содержащий аргументы. Эквивалентно члену rgvarg структуры DISPPARAMS .

[in, out] pvarResult

Указатель на variant, который получает результат. Эквивалентно параметру pVarResult метода IDispatch::Invoke .

[out] puArgErr

Указатель на переменную, получающую индекс первого аргумента с ошибкой. Эквивалентно параметру puArgErr метода IDispatch::Invoke .

Возвращаемое значение

Возвращает значение HRESULT .

Комментарии

Используйте метод IDispatch::GetIDsOfNames , чтобы получить DISPID для параметра dispidMember .

Примеры

В следующем примере команда IMediaControl::Stop помещает в очередь на 3,0 секунды.


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

// Query for IQueueCommand.
pGraph->QueryInterface(IID_IQueueCommand, reinterpret_cast<void**>(&pQ));

// Query for IMediaControl.
pGraph->QueryInterface(IID_IMediaControl, reinterpret_cast<void**>(&pControl));

// Find the DISPID of the IMediaControl::Stop method.
OLECHAR *szMethod = OLESTR("Stop");

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

// Invoke the command.
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();
}

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header control.h (включая Dshow.h)
Библиотека Strmiids.lib

См. также раздел

Коды ошибок и успешности

Интерфейс IQueueCommand