Метод 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 |