Partager via


Événements KS

Si vous écrivez un minidriver AVStream, consultez Gestion des événements dans AVStream.

Les jeux d’événements sont des groupes d’événements connexes pour lesquels un écouteur peut demander une notification. Par exemple, un écouteur peut s’inscrire pour être informé des modifications de l’état de l’appareil ou des modifications apportées à la position du flux. Lorsqu'un événement se produit, le streaming du noyau avertit les clients ayant souscrit pour cet événement.

Les minidrivers décrivent comment ils prennent en charge un événement en fournissant une structure KSEVENT_ITEM qui contient des pointeurs pour gérer les routines.

Les écouteurs s’inscrivent pour la notification en appelant la routine de proxy de diffusion en continu du noyau KsSynchronousDeviceControl avec le code de contrôle IOCTL_KS_ENABLE_EVENT et les pointeurs vers KSEVENT et KSEVENTDATA.structures.

La requête IOCTL_KS_DISABLE_EVENT désactive un événement spécifié. Le même pointeur utilisé pour activer l’événement doit être utilisé pour le désactiver. Ce pointeur identifie de façon unique l’événement. Si vous le souhaitez, le client peut spécifier un pointeur NULL et une longueur de zéro pour désactiver tous les événements actifs pour le client.

Tous les jeux d’événements doivent prendre en charge l’indicateur de KSEVENT_TYPE_BASICSUPPORT. Reportez-vous à KSEVENT pour obtenir la liste des indicateurs d’événement disponibles.

Certains types d’événements nécessitent des paramètres supplémentaires pour s’inscrire à la notification d’événement. Par exemple, l’événement KSEVENT_CLOCK_POSITION_MARK sur une horloge est déclenché lorsque l’horloge atteint un certain horodatage. Par conséquent, les clients qui s’inscrivent pour être avertis de cet événement doivent spécifier l’horodatage auquel déclencher l’événement.

Dans ce cas, un minidriver passe des paramètres de données supplémentaires dans le tampon de données après la structure KSEVENTDATA. Les minidrivers qui prennent en charge un tel type d’événement utilisent une structure de données étendue, dont le premier membre est de type KSEVENTDATA, pour contenir les données de notification.