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


Функция 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

См. также

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync