Функция StreamClassQueryMasterClock (strmini.h)
Когда мини-драйвер вызывает подпрограмму StreamClassQueryMasterClock, драйвер класса асинхронно запрашивает соответствующее значение времени master часов и передает результат в подпрограмму, переданную в параметре 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, указывающий поток, запрашивающий часы master. Поток может иметь только один запрос, ожидающий одновременно. Драйвер класса передает это значение обратному вызову в элементе HwStreamObject параметра TimeContext обратного вызова.
[in] MasterClockHandle
Указывает дескриптор для запрашиваемых часов master. Драйвер класса передает его в запросе SRB_INDICATE_MASTER_CLOCK подпрограмме StrMiniReceiveStreamControlPacket мини-драйвера .
[in] TimeFunction
Указывает, для какой функции времени следует запрашивать часы master. Возможные значения см. в HW_TIME_CONTEXT . Драйвер класса передает это значение обратному вызову в элементе Function параметра TimeContext .
[in] ClockCallbackRoutine
Задает подпрограмму, в которую драйвер класса передает результаты. Прототип функции должен быть следующим:
ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);
Возвращаемое значение
None
Remarks
Драйвер класса запрашивает master часы и передает результаты в параметре TimeContext (типа HW_TIME_CONTEXT) обратного вызова. В частности, он задает для элемента Time этой структуры значение времени, запрошенное в параметре TimeFunction , текущее системное время в элементе SystemTime той же структуры и расширение устройства minidriver в элементе HwDeviceExtension этой структуры.
Драйвер класса освобождает структуру HW_TIME_CONTEXT после завершения подпрограммы обратного вызова с часов, поэтому в обратном вызове должны храниться все сведения, которые требует хранить мини-диск. Для этой цели подпрограмма обратного вызова может использовать ранее выделенное пространство либо в расширении устройства мини-накопителя (TimeContext-HwDeviceExtension>), либо в расширении потока, запрашивающего master часов (TimeContext-HwStreamObject-HwStreamExtension).>>
В редких случаях диспетчер графов переключает master часы. Классный водитель предоставляет состояние гонки при обработке новых часов master. Если мини-драйвер вызывает потоковый класс master подпрограмму часов сразу после получения новых часов от драйвера класса, драйвер класса может привести к непредвиденным результатам.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | strmini.h (включая Strmini.h) |
Библиотека | Stream.lib |