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


Метод IReferenceClock::AdvisePeriodic (strmif.h)

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

Метод AdvisePeriodic создает периодический запрос на получение рекомендаций.

Синтаксис

HRESULT AdvisePeriodic(
  [in]  REFERENCE_TIME startTime,
  [in]  REFERENCE_TIME periodTime,
  [in]  HSEMAPHORE     hSemaphore,
  [out] DWORD_PTR      *pdwAdviseCookie
);

Параметры

[in] startTime

Время первого уведомления в 100-наносекундных единицах. Значение должно быть больше нуля и меньше MAX_TIME.

[in] periodTime

Время между уведомлениями в 100 наносекундных единицах. Должен быть больше нуля.

[in] hSemaphore

Обработка семафора, созданного вызывающим элементом.

[out] pdwAdviseCookie

Указатель на переменную, которая получает идентификатор запроса на получение рекомендаций.

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

Возвращает значение HRESULT . Ниже приведены возможные значения.

Код возврата Описание
S_OK
Успешно.
E_INVALIDARG
Недопустимые значения времени.
E_OUTOFMEMORY
Ошибка.
E_POINTER
Аргумент указателя NULL.

Комментарии

При каждом уведомлении часы отпускают семафор, указанный в параметре hSemaphore . Если дальнейшие уведомления не требуются, вызовите IReferenceClock::Unadvise и передайте значение pdwAdviseToken , возвращенное из этого вызова.

В следующем примере кода создается запрос на получение рекомендаций, который сообщает через пять секунд с момента его создания, а затем снова каждую секунду:

C++
IReferenceClock *pRefClock = NULL; Получение указателя IReferenceClock (не показано).

DWORD dwAdviseToken; HANDLE hSemaphore = CreateSemaphore(NULL, 0, 0x7FFFFFFF, NULL); REFERENCE_TIME rtPeriodTime = 10000000; Интервал в одну секунду REFERENCE_TIME rtNow;

pRefClock-GetTime>(&rtNow); pRefClock-AdvisePeriodic>(rtNow + (5 * rtPeriodTime), rtPeriodTime, hSemaphore, &dwAdviseToken); ...

pRefClock->Unadvise(dwAdviseToken);

Требования

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

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

Коды ошибок и успешного выполнения

Интерфейс IReferenceClock