Fonction StreamClassQueryMasterClock (strmini.h)
Lorsque le minidriver appelle la routine StreamClassQueryMasterClock, le pilote de classe interroge la valeur de temps appropriée de l’horloge master de manière asynchrone et transmet le résultat à la routine passée dans le paramètre ClockCallbackRoutine.
Syntaxe
void StreamClassQueryMasterClock(
[in] PHW_STREAM_OBJECT HwStreamObject,
[in] HANDLE MasterClockHandle,
[in] TIME_FUNCTION TimeFunction,
[in] PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine
);
Paramètres
[in] HwStreamObject
Pointeur vers un HW_STREAM_OBJECT indiquant le flux qui interroge son horloge master. Le flux ne peut avoir qu’une seule requête en attente à la fois. Le pilote de classe transmet cette valeur au rappel dans le membre HwStreamObject du paramètre TimeContext du rappel.
[in] MasterClockHandle
Spécifie le handle de l’horloge master interrogée. Le pilote de classe transmet cela dans la requête SRB_INDICATE_MASTER_CLOCK à la routine StrMiniReceiveStreamControlPacket du minidriver.
[in] TimeFunction
Spécifie la fonction d’heure pour laquelle interroger l’horloge master. Consultez HW_TIME_CONTEXT pour connaître les valeurs possibles. Le pilote de classe transmet cette valeur au rappel dans le membre Function du paramètre TimeContext .
[in] ClockCallbackRoutine
Spécifie la routine à laquelle le pilote de classe transmet les résultats. Le prototype de fonction doit être :
ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);
Valeur de retour
None
Remarques
Le pilote de classe interroge l’horloge master et transmet les résultats dans le paramètre TimeContext (de type HW_TIME_CONTEXT) du rappel. En particulier, il définit le membre Time de cette structure sur la valeur de temps demandée dans le paramètre TimeFunction , l’heure système actuelle dans le membre SystemTime de la même structure et l’extension d’appareil du minidriver dans le membre HwDeviceExtension de cette structure.
Le pilote de classe libère la structure HW_TIME_CONTEXT une fois la routine de rappel d’horloge terminée, de sorte que le rappel doit stocker toutes les informations que le minidriver souhaite conserver. À cette fin, la routine de rappel peut utiliser l’espace alloué précédemment dans l’extension d’appareil du minidriver (TimeContext-HwDeviceExtension>) ou l’extension de flux du flux qui a interrogé son horloge master (TimeContext-HwStreamObject-HwStreamExtension).>>
À de rares occasions, le gestionnaire de graphiques change l’horloge master. Le pilote de classe expose une condition de course lors de la gestion de la nouvelle horloge master. Si le minidriver appelle une classe de flux master routine d’horloge immédiatement après avoir reçu une nouvelle horloge du pilote de classe, le pilote de classe peut produire des résultats inattendus.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | strmini.h (include Strmini.h) |
Bibliothèque | Stream.lib |