IPortEvents 接口 (portcls.h)

IPortEvents微型端口驱动程序使用该接口来通知客户端硬件事件。 在 Windows 98/Me 和 Windows 2000 及更高版本中,portcls.sys 中的所有端口驱动程序实现此接口并将其公开给微型端口驱动程序。 若要确定端口驱动程序是否支持 IPortEvents 接口,微型端口驱动程序使用 REFIID IID_IPortEvents调用 IPortXxx 对象的 QueryInterface 方法。 IPortEvents 继承自 IUnknown 接口。

驱动程序通常使用 IPortEvents 接口来通知系统硬件生成的卷或静音更改,尽管 IPortEvents 可用于任何类型的事件通知。 IPortEvents 接口是可选的下边缘端口驱动程序接口。 例如,它可用于通知 混音器 应用程序控制或混音器线路更改。 有关 mixer API 的信息,请参阅Microsoft Windows SDK文档。

微型端口驱动程序公开事件的方式与公开属性的方式相同:通过自动化表 (查看 PCAUTOMATION_TABLE) 。 以下对象(所有这些对象都由微型端口驱动程序公开)可以指定包含属性和/或事件的自动化表:

  • 微型端口驱动程序实现的筛选器
  • 筛选器公开的每个引脚
  • 筛选器公开的每个节点
自动化表中的每个事件项都是 PCEVENT_ITEM 类型的结构,用于指定以下内容:
  • 事件集
  • 集中的事件
  • 指示支持选项的标志
  • 指向事件的处理程序的函数指针
启动适配器驱动程序并将其端口/微型端口驱动程序对注册为系统筛选器后, WDMAud 系统驱动程序(将 混音器 API 调用转换为 KS 命令到 WDM 音频驱动程序)将打开每个端口/微型端口驱动程序对并询问其功能。 在此过程中,WDMAud 将遍历微型端口驱动程序的筛选器拓扑,以搜索支持硬件事件的控制节点。 事件由事件集 GUID KSEVENTSETID_AudioControlChange 和事件 ID KSEVENT_CONTROL_CHANGE的组合表示。 当 WdmAud 找到这些内容时,它将启用事件,从而有效地将自身注册为事件的客户端。 随后,每当微型端口驱动程序发出事件信号时,都会通知 WDMAud,WDMAud 会为其客户端生成相应的 Windows 消息。

除了在自动化表中公开事件外,需要公开事件的微型端口驱动程序还应查询端口驱动程序的 IPortEvents 接口。

本部分还介绍了以下用于处理事件请求的例程:

EventHandler

继承

IPortEvents 接口继承自 IUnknown 接口。

方法

IPortEvents 接口具有以下方法。

 
IPortEvents::AddEventToEventList

AddEventToEventList 方法将事件添加到端口驱动程序的事件列表中。
IPortEvents::GenerateEventList

GenerateEventList 方法通过端口驱动程序的事件条目列表通知客户端特定事件已发生。

要求

要求
目标平台 Windows
标头 portcls.h