Класс CAMSchedule
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Класс CAMSchedule
реализует планировщик для эталонных часов.
Открытые методы | Описание |
---|---|
CAMSchedule | Метод конструктора. |
~CAMSchedule | Метод деструктора. Виртуальной. |
GetAdviseCount | Извлекает количество ожидающих запросов на консультирование. |
GetNextAdviseTime | Извлекает время следующего запроса на получение рекомендаций. |
AddAdvisePacket | Добавляет запрос на рекомендацию в список ожидающих запросов. |
Отмена заполнения | Удаляет запрос на получение рекомендаций. |
Советую | Отправляет все запросы, запланированные на указанное время или ранее. |
GetEvent | Извлекает дескриптор события, который используется для передачи сигналов об изменении во время следующего уведомления. |
Комментарии
Этот вспомогательный объект поддерживает список запросов на рекомендации для эталонных часов. Класс CBaseReferenceClock использует его для планирования запросов на рекомендации. Часы используют этот объект следующим образом:
- Часы создают рабочий поток для обработки планирования.
- Рабочий поток вызывает метод CAMSchedule::GetEvent для получения дескриптора событий из планировщика. Он ожидает этого события, изначально с бесконечным тайм-аутом.
- Чтобы запланировать новый запрос на получение рекомендаций, часы вызывают метод CAMSchedule::AddAdvisePacket . Запрос на получение рекомендаций может быть однократным или периодическим. Планировщик хранит список запросов в порядке времени.
- Если запрос добавляется в начало списка, планировщик сообщает о событии. (Сначала список пуст, поэтому первый запрос гарантированно сигнализирует о событии.)
- При сигнале события рабочий поток вызывает метод CAMSchedule::Advise , указывая текущее время ссылки. Если срок действия ожидающих запросов истек, планировщик отправляет их.
- Метод Advise возвращает время следующего запроса. Рабочий поток использует это значение для вычисления нового значения времени ожидания.
- Шаги 2 6 повторяют на неопределенный срок.
- Чтобы завершить рабочий поток, часы устанавливают внутренний флаг и сигналит о событии.
На шаге 2 подается сигнал о событии или истекает время ожидания. Если событие подается, это означает, что в начало списка был добавлен новый запрос. Рабочий поток должен вычислить новое значение времени ожидания. С другой стороны, если время ожидания истекло, это означает, что запрос на получение рекомендаций пришел к оплате и должен быть отправлен. Вызов "Совет" на шаге 5 обрабатывает оба случая.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|