监视器类函数驱动程序
设备节点用于表示已连接到一台监视器的显示适配器上的每个视频输出。 设备节点是显示适配器设备节点的子节点。
通常情况下,设备堆栈中只有两个设备对象代表一对视频输出/监视器:
- 物理设备对象 (PDO)。
- 功能设备对象 (FDO)。
在某些情况下,筛选器设备对象 (DO) 与供应商提供的筛选器驱动程序相关联。 此筛选器设备对象位于 FDO 的上方。
对于集成监视器,如笔记本电脑上的内置平板显示器,可能存在与高级配置和电源接口 (ACPI) 驱动程序相关联的筛选器 DO。 此筛选器 DO 位于 PDO 的上方。
下表列出了连接有监视器的视频输出的设备堆栈。
设备对象 | 必需/可选 | 驱动程序 |
---|---|---|
筛选器 DO | 可选,一般不需要 | 监视器供应商提供的筛选器驱动程序 |
FDO | 必须 | Microsoft 提供的监控器类函数驱动程序 (Monitor.sys) |
筛选器 DO | 仅集成 ACPI 显示面板需要 | 由 Microsoft 提供的 ACPI 驱动程序 (Acpi.sys) |
PDO | 必须 | 由显示适配器供应商提供的总线驱动器(显示微型端口/端口对) |
用户模式应用程序使用 WMI 调用监控器类函数驱动程序的服务。 这些服务包括公开监视器的标识数据。 对于 ACPI 显示器,服务包括设置显示器亮度。
监视器会在扩展显示识别数据 (EDID) 结构中存储其标识和功能信息。 EDID 是一种元数据格式,可让显示器向主机提供有关其标识和功能的信息,而与监视器和主机之间使用的通信协议无关。 FDO 处理来自用户模式应用程序的请求,以读取监视器设备堆栈中监视器的 EDID。 当 FDO 收到检索显示器 EDID 的请求时:
- FDO 会向监视器设备堆栈底部的 PDO 发送请求。
- PDO 使用显示器数据通道 (DDC) 协议,通过 I²C 总线读取显示器的 EDID,该总线是内置于所有标准监视器电缆中的简单双线总线。
可以使用 ACPI_METHOD_OUTPUT_DDC 方法获取 EDID,该方法的别名在 Dispmprt.h 中定义。 对于没有其他标准机制来返回 EDID 数据的集成 LCD,则需要使用这种方法。
有关显示适配器和监视器之间通信的详细信息,请参阅 I2C 总线和显示适配器的子设备。
有关 EDID 结构和 DDC 协议的详细信息,请参阅视频电子标准协会 (VESA) 发布的以下标准:
增强显示器数据通道标准 (E-DDC)
增强 EDID 标准 (E-EDID)
可以从免费标准部分中的 vesa.org 下载这些标准。
有关 I²C 总线的详细信息,请参阅 Philips Semiconductors 出版的 I²C 总线规范。