Функция StreamClassQueryMasterClock (strmini.h)
Когда мини-driver вызывает процедуру StreamClassQueryMasterClock, драйвер класса запрашивает соответствующее значение времени главного часов асинхронно и передает результат в подпрограмму, переданную в параметре ClockCallbackRoutine.
Синтаксис
void StreamClassQueryMasterClock(
[in] PHW_STREAM_OBJECT HwStreamObject,
[in] HANDLE MasterClockHandle,
[in] TIME_FUNCTION TimeFunction,
[in] PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine
);
Параметры
[in] HwStreamObject
Указатель на HW_STREAM_OBJECT, указывающий поток, запрашивающий свои главные часы. Поток может одновременно выполнять только один запрос. Драйвер класса передает это значение обратному вызову в HwStreamObject член параметра TimeCon text обратного вызова.
[in] MasterClockHandle
Указывает дескриптор главного часов, запрашиваемых. Драйвер класса передает этот код в запросе SRB_INDICATE_MASTER_CLOCK в подпрограмму strMiniReceiveStreamControlPack et мини-driver.
[in] TimeFunction
Указывает, какая функция времени запрашивает главные часы. Сведения о возможных значениях см. в HW_TIME_CONTEXT. Драйвер класса передает это значение обратному вызову в элементе функции параметра TimeContext.
[in] ClockCallbackRoutine
Задает подпрограмму, в которую драйвер класса передает результаты. Прототип функции должен быть следующим:
ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);
Возвращаемое значение
Никакой
Замечания
Драйвер класса запрашивает главные часы и передает результаты в параметре TimeContext (типа HW_TIME_CONTEXT) обратного вызова. В частности, он задает элемент Time этой структуры значение времени, запрошенное в параметре TimeFunction TimeFunction, текущее системное время в элементе SystemTime той же структуры, а расширение устройства minidriver в HwDeviceExtension элемент этой структуры.
Драйвер класса освобождает структуру HW_TIME_CONTEXT после завершения процедуры обратного вызова часов, поэтому обратный вызов должен хранить любую информацию, которую мини-driver хочет поддерживать. Для этого подпрограмма обратного вызова может использовать ранее выделенное пространство в расширении устройства мини-driver (TimeContext->HwDeviceExtension), или расширение потока потока, запрашивающего его главные часы (TimeContext->HwStreamObject->HwStreamExtension).
В редких случаях диспетчер графов переключает главные часы. Водитель класса предоставляет состояние гонки в обработке новых главных часов. Если мини-driver вызывает подпрограмму главных часов класса stream сразу после получения новых часов от драйвера класса, драйвер класса может привести к непредвиденным результатам.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | strmini.h (include Strmini.h) |
библиотеки | Stream.lib |