Eventos KS

Si va a escribir un minidriver avStream, consulte Control de eventos en AVStream.

Los conjuntos de eventos son grupos de eventos relacionados para los que un agente de escucha puede solicitar una notificación. Por ejemplo, un agente de escucha podría registrarse para recibir notificaciones de cambios de estado del dispositivo o cambios en la posición de la secuencia. Cuando se produce un evento, el streaming de kernel notifica a los clientes que se han registrado para este evento.

Los minicontroladores describen cómo admiten un evento proporcionando una estructura de KSEVENT_ITEM que contiene punteros a las rutinas de control.

Los agentes de escucha se registran para recibir notificaciones mediante una llamada a la rutina de proxy de streaming de kernel KsSynchronousDeviceControl con el código de control IOCTL_KS_ENABLE_EVENT y punteros a KSEVENT y KSEVENTDATA.structures.

La solicitud IOCTL_KS_DISABLE_EVENT deshabilita un evento especificado. El mismo puntero que se usó para habilitar el evento debe usarse para deshabilitarlo. Este puntero identifica de forma única el evento. Opcionalmente, el cliente puede especificar un puntero NULL y una longitud de cero para deshabilitar todos los eventos activos para el cliente.

Todos los conjuntos de eventos deben admitir la marca KSEVENT_TYPE_BASICSUPPORT. Consulte KSEVENT para obtener una lista de marcas de eventos disponibles.

Algunos tipos de eventos requieren parámetros adicionales para registrarse para la notificación de eventos. Por ejemplo, el evento KSEVENT_CLOCK_POSITION_MARK en un reloj se desencadena cuando el reloj alcanza una marca de tiempo determinada. Por consiguiente, los clientes que se registran para recibir notificaciones de este evento deben especificar la marca de tiempo en la que se desencadenará el evento.

En tal caso, un minidriver pasa parámetros de datos adicionales en el búfer de datos después de la estructura KSEVENTDATA . Los minicontroladores que admiten este tipo de evento usan una estructura de datos extendida, de la que el primer miembro es de tipo KSEVENTDATA, para contener los datos de notificación.