Condividi tramite


Funzione StreamClassQueryMasterClock (strmini.h)

Quando il minidriver chiama routine StreamClassQueryMasterClock, il driver di classe esegue una query sul valore di ora appropriato dell'orologio master in modo asincrono e passa il risultato alla routine passata nel parametro ClockCallbackRoutine.

Sintassi

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

Parametri

[in] HwStreamObject

Puntatore a un HW_STREAM_OBJECT che indica il flusso che esegue una query sul relativo orologio master. Il flusso può avere una sola query in sospeso alla volta. Il driver di classe passa questo valore al callback nel HwStreamObject membro del parametro TimeContext del callback.

[in] MasterClockHandle

Specifica l'handle per l'orologio master su cui viene eseguita una query. Il driver di classe passa questo valore nella richiesta di SRB_INDICATE_MASTER_CLOCK alla routine StrMiniReceiveStreamControlPacket del minidriver.

[in] TimeFunction

Specifica la funzione di ora per cui eseguire una query sull'orologio master. Vedere HW_TIME_CONTEXT per i valori possibili. Il driver di classe passa questo valore al callback nel membro function del parametro TimeContext.

[in] ClockCallbackRoutine

Specifica la routine a cui il driver di classe passa i risultati. Il prototipo di funzione deve essere:

ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);

Valore restituito

Nessuno

Osservazioni

Il driver di classe esegue una query sull'orologio master e passa i risultati nel parametro TimeContext (di tipo HW_TIME_CONTEXT) del callback. In particolare, imposta il membro Time di questa struttura sul valore dell'ora richiesto nel parametro TimeFunction, l'ora di sistema corrente nel membro systemTime della stessa struttura e l'estensione del dispositivo del minidriver nell'HwDeviceExtension membro di tale struttura.

Il driver di classe dealloca la struttura HW_TIME_CONTEXT dopo il termine della routine di callback dell'orologio, pertanto il callback deve archiviare tutte le informazioni che il minidriver desidera mantenere. A tale scopo, la routine di callback può usare lo spazio allocato in precedenza nell'estensione del dispositivo del minidriver (TimeContext->HwDeviceExtension) o nell'estensione di flusso del flusso su cui è stata eseguita una query sul relativo orologio master (TimeContext->HwStreamObject->HwStreamExtension).

In rari casi, il gestore del grafico cambia l'orologio master. Il pilota di classe espone una race condition nella gestione del nuovo orologio master. Se il minidriver chiama una routine dell'orologio master della classe di flusso immediatamente dopo che riceve un nuovo orologio dal driver di classe, il driver di classe potrebbe produrre risultati imprevisti.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione strmini.h (include Strmini.h)
libreria Stream.lib

Vedere anche

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync