Compartir a través de


Función StreamClassQueryMasterClock (strmini.h)

Cuando el minidriver llama a la rutina StreamClassQueryMasterClock , el controlador de clase consulta el valor de hora adecuado del reloj maestro de forma asincrónica y pasa el resultado a la rutina pasada en el parámetro ClockCallbackRoutine .

Sintaxis

void StreamClassQueryMasterClock(
  [in] PHW_STREAM_OBJECT       HwStreamObject,
  [in] HANDLE                  MasterClockHandle,
  [in] TIME_FUNCTION           TimeFunction,
  [in] PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine
);

Parámetros

[in] HwStreamObject

Puntero a un HW_STREAM_OBJECT que indica la secuencia que está consultando su reloj maestro. La secuencia solo puede tener una consulta pendiente a la vez. El controlador de clase pasa este valor a la devolución de llamada en el miembro HwStreamObject del parámetro TimeContext de la devolución de llamada.

[in] MasterClockHandle

Especifica el identificador del reloj maestro que se está consultando. El controlador de clase pasa esto en la solicitud SRB_INDICATE_MASTER_CLOCK a la rutina StrMiniReceiveStreamControlPacket del minidriver.

[in] TimeFunction

Especifica la función de hora para la que se va a consultar el reloj maestro. Consulte HW_TIME_CONTEXT para conocer los valores posibles. El controlador de clase pasa este valor a la devolución de llamada en el miembro Function del parámetro TimeContext .

[in] ClockCallbackRoutine

Especifica la rutina a la que el controlador de clase pasa los resultados. El prototipo de función debe ser:

ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);

Valor devuelto

None

Observaciones

El controlador de clase consulta el reloj maestro y pasa los resultados en el parámetro TimeContext (de tipo HW_TIME_CONTEXT) de la devolución de llamada. En concreto, establece el miembro Time de esta estructura en el valor de hora solicitado en el parámetro TimeFunction , la hora actual del sistema en el miembro SystemTime de la misma estructura y la extensión del dispositivo del minidriver en el miembro HwDeviceExtension de esa estructura.

El controlador de clase desasigna la estructura HW_TIME_CONTEXT después de que finalice la rutina de devolución de llamada del reloj, por lo que la devolución de llamada debe almacenar cualquier información que el minidriver desea mantener. Para ello, la rutina de devolución de llamada puede usar espacio asignado previamente en la extensión del dispositivo del minidriver (TimeContext-HwDeviceExtension>) o la extensión de secuencia de la secuencia que consultó su reloj maestro (TimeContext-HwStreamObject-HwStreamExtension).>>

En raras ocasiones, el administrador de grafos cambia el reloj maestro. El controlador de clase expone una condición de carrera para controlar el nuevo reloj maestro. Si el minidriver llama a una rutina de reloj maestra de clase de secuencia inmediatamente después de recibir un nuevo reloj del controlador de clase, el controlador de clase puede producir resultados inesperados.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado strmini.h (incluya Strmini.h)
Library Stream.lib

Consulte también

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync