Condividi tramite


Funzione StreamClassQueryMasterClock (strmini.h)

Quando il minidriver chiama la 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 su cui viene eseguita una query sull'orologio master. Il flusso può avere una sola query in sospeso alla volta. Il driver di classe passa questo valore al callback nel membro HwStreamObject del parametro TimeContext del callback.

[in] MasterClockHandle

Specifica l'handle per l'orologio master su cui viene eseguita la 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 di ora richiesto nel parametro TimeFunction , l'ora di sistema corrente nel membro SystemTime della stessa struttura e l'estensione del dispositivo del minidriver nel membro HwDeviceExtension di tale struttura.

Il driver di classe dealloca la struttura HW_TIME_CONTEXT dopo il termine della routine di callback clock, quindi 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 del flusso che ha eseguito una query sul relativo orologio master (TimeContext-HwStreamObject-HwStreamExtension).>>

In rare occasioni, il gestore del grafo 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.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione strmini.h (include Strmini.h)
Libreria Stream.lib

Vedi anche

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync