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 |