É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 associés pour lesquels un écouteur peut demander une notification. Par exemple, un écouteur peut s’inscrire pour être informé des changements d’état de l’appareil ou des modifications de la position du flux. Lorsqu’un événement se produit, la diffusion en continu du noyau avertit tous les clients qui se sont inscrits 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 vers la gestion des routines.

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

La requête IOCTL_KS_DISABLE_EVENT désactive un événement spécifié. Le pointeur utilisé pour activer l’événement doit être utilisé pour le désactiver. Ce pointeur identifie de manière 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 KSEVENT_TYPE_BASICSUPPORT. Reportez-vous à KSEVENT pour obtenir la liste des indicateurs d’événements 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 horodatage donné. 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 transmet des paramètres de données supplémentaires dans la mémoire 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.