Поделиться через


События KS

Если вы пишете мини-накопитель AVStream, см. раздел Обработка событий в AVStream.

Наборы событий — это группы связанных событий, для которых прослушиватель может запросить уведомление. Например, прослушиватель может зарегистрироваться для уведомления об изменениях состояния устройства или изменении положения потока. При возникновении события потоковая передача ядра уведомляет всех клиентов, зарегистрированных для этого события.

Мини-драйверы описывают, как они поддерживают событие, предоставляя структуру KSEVENT_ITEM , содержащую указатели на процедуры обработки.

Прослушиватели регистрируются для получения уведомлений, вызывая подпрограмму прокси-сервера потоковой передачи ядра KsSynchronousDeviceControl с IOCTL_KS_ENABLE_EVENT кодом элемента управления и указателями на KSEVENT и KSEVENTDATA.structures.

Запрос IOCTL_KS_DISABLE_EVENT отключает указанное событие. Для его отключения необходимо использовать тот же указатель, который использовался для включения события. Этот указатель однозначно идентифицирует событие. При необходимости клиент может указать указатель NULL и нулевую длину, чтобы отключить все активные события для клиента.

Все наборы событий должны поддерживать флаг KSEVENT_TYPE_BASICSUPPORT. Список доступных флагов событий см. в разделе KSEVENT .

Некоторые типы событий требуют дополнительных параметров для регистрации для уведомления о событии. Например, событие KSEVENT_CLOCK_POSITION_MARK на часах активируется, когда часы достигают определенной метки времени. Следовательно, клиенты, которые регистрируются для уведомления об этом событии, должны указать метку времени, с которой будет активировано событие.

В этом случае мини-диск передает дополнительные параметры данных в буфер данных после структуры KSEVENTDATA . Мини-накопители, поддерживающие такой тип событий, используют расширенную структуру данных, первый член которой имеет тип KSEVENTDATA, для хранения данных уведомления.