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


События KS

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

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

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

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

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

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

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

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