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 类型)来保存通知数据。