如果要编写 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 类型,用于保存通知数据。