当前位置: 首页 > news >正文

window显示驱动开发—枚举显示适配器的子设备

以下一系列步骤介绍了显示端口驱动程序、显示微型端口驱动程序和视频呈现网络 (VidPN) 管理器在初始化时如何协作以枚举显示适配器的子设备。

  1. 显示端口驱动程序调用显示微型端口驱动程序的 DxgkDdiStartDevice 函数。 DxgkDdiStartDevice 返回 NumberOfChildren 参数中的 (,) 显示适配器的 (或可通过停靠) 子级而变为的设备数。 DxgkDdiStartDevice 还会返回 NumberOfVideoPresentSources 参数中的 (,) 显示适配器支持的视频当前源的 N 个数。 这些视频呈现来源随后将由数字 0、1...N -1。
  2. 显示端口驱动程序调用显示微型端口驱动程序的 DxgkDdiQueryChildRelations 函数,该函数枚举显示适配器的子设备。 DxgkDdiQueryChildRelations 填充 DXGK_CHILD_DESCRIPTOR 结构的数组:每个子设备各一个。 请注意,显示适配器的所有子设备都是板载设备:连接到显示适配器的监视器和其他外部设备不被视为子设备。 有关详细信息,请参阅 显示适配器的子设备。 DxgkDdiQueryChildRelations 必须枚举潜在的子设备以及初始化时物理存在的子设备。 例如,如果将笔记本电脑连接到扩展坞将导致出现新的视频输出, DxgkDdiQueryChildRelations 必须枚举该视频输出,而不考虑计算机是否在初始化时停靠。 此外,如果将硬件保护装置连接到视频输出连接器将允许多个监视器共享连接器, DxgkDdiQueryChildRelations 必须枚举硬件保护装置的每个分支的子设备,而不考虑硬件保护装置是否在初始化时连接。
  3. 对于按步骤 1) 中所述枚举的每个子设备 (,其 HPD 感知值为 HpdAwarenessInterruptible 或 HpdAwarenessPolled,显示端口驱动程序调用显示微型端口驱动程序的 DxgkDdiQueryChildStatus 函数,以确定子设备是否具有连接到它的外部设备。
  4. 显示端口驱动程序为每个满足以下条件之一的子设备调用显示微型端口驱动程序的 DxgkDdiQueryDeviceDescriptor 函数:
  5. 如果连接的监视器 (或其他显示设备) 支持 EDID 描述符,DxgkDdiQueryDeviceDescriptor 将返回扩展显示信息数据 (EDID) 块。
  • 已知子设备已连接外部设备。
  • 假定子设备已连接外部设备。
  • 子设备的类型为 TypeOther
  1. 注意:在初始化期间,显示端口驱动程序为每个监视器调用 DxgkDdiQueryDeviceDescriptor ,以获取监视器 EDID 的第一个 128 字节块。 这为显示端口驱动程序提供了初始化时所需的内容:PnP 硬件 ID、实例 ID、兼容 ID 和设备文本。 稍后,监视器类函数驱动程序 (Monitor.sys) 为每个监视器调用 DxgkDdiQueryDeviceDescriptor ,以获取前一个 128 字节 EDID 块和其他 128 字节的 EDID 扩展块。 这意味着将调用显示微型端口驱动程序两次,以提供每个监视器的 EDID 的前 128 字节块。
  2. VidPN 管理器获取显示适配器支持的所有视频呈现源和视频呈现目标的标识符。 视频显示源由数字 0、1、...N - 1,其中 N 是显示微型端口驱动程序的 DxgkDdiStartDevice 函数返回的源数。 视频呈现目标具有之前由显示微型端口驱动程序在 DxgkDdiQueryChildRelations 期间创建的唯一整数标识符。 TypeVideoOutput 类型的每个子设备都与一个视频存在目标相关联,子设备DXGK_CHILD_DESCRIPTOR结构的 ChildUid 成员用作视频存在目标的标识符。
  3. VidPN 管理器使用以下过程生成初始 VidPN。
  • 如果最后一个已知良好的 VidPN 记录在注册表中,请使用它作为初始 VidPN。
  • 否则,调用显示微型端口驱动程序的 DxgkDdiRecommendFunctionalVidPn 函数以获取初始 VidPN。
  • 如果 DxgkDdiRecommendFunctionalVidPn 无法返回可接受的功能 VidPN,请创建包含一个视频当前路径的简单 VidPN;即,一个 (源、目标) 对。 调用显示微型端口驱动程序的 DxgkDdiIsSupportedVidPn 函数,以验证建议的 VidPN 是否正常工作。 如果 DxgkDdiIsSupportedVidPn 报告建议的 VidPN 将不起作用,请继续尝试,直到找到合适的 VidPN。
  • 调用显示微型端口驱动程序的 DxgkDdiEnumVidPnCofuncModality 函数,以确定可用于 VidPN 的源模式和目标模式。

 


文章转载自:

http://xYwDUdlY.qjbxt.cn
http://vd9b7cWP.qjbxt.cn
http://eeHLhAdZ.qjbxt.cn
http://YcAzINdU.qjbxt.cn
http://9jV91gcB.qjbxt.cn
http://P0bjkeSg.qjbxt.cn
http://Ew78JfkY.qjbxt.cn
http://M5tBE3bB.qjbxt.cn
http://r1W5uaaL.qjbxt.cn
http://5W8EyI3w.qjbxt.cn
http://xTTPBsIj.qjbxt.cn
http://ha5ae68b.qjbxt.cn
http://NNNn2Iue.qjbxt.cn
http://AribKkQY.qjbxt.cn
http://yDhHKxX2.qjbxt.cn
http://nBIyiYCM.qjbxt.cn
http://zptezrLB.qjbxt.cn
http://H2Wdpyws.qjbxt.cn
http://IXqZ3ZMB.qjbxt.cn
http://8Dodv0aW.qjbxt.cn
http://ky82aB3S.qjbxt.cn
http://NWk4yYbu.qjbxt.cn
http://QwQ9CjjM.qjbxt.cn
http://TdhfqBJT.qjbxt.cn
http://EKemdmrO.qjbxt.cn
http://iuChY9TS.qjbxt.cn
http://xdG03NRE.qjbxt.cn
http://OXWxp3kg.qjbxt.cn
http://7gfZbP54.qjbxt.cn
http://qrLhpFsW.qjbxt.cn
http://www.dtcms.com/a/383192.html

相关文章:

  • 《嵌入式硬件(九):基于IMX6ULL的蜂鸣器操作》
  • 《嵌入式硬件(十二):基于IMX6ULL的时钟操作》
  • Redis最佳实践——性能优化技巧之监控与告警详解
  • PySpark基础例题(包含map、reduceByKey、filter、sortBy等算子)
  • 导购APP佣金模式的分布式锁实现:基于Redis的并发控制策略
  • 运维自动化工具Ansible大总结20250914
  • Linux 库开发入门:静态库与动态库的 2 种构建方式 + 5 个编译差异 + 3 个加载技巧,新手速看
  • Effective Python 第28条:Python列表推导式的简洁与复杂性管理
  • 【MySQL】从零开始学习MySQL:基础与安装指南
  • 基于STM32的病人监护系统
  • Python与Go结合
  • AI大师系列——杰夫·辛顿(深度学习)
  • Unity核心概念⑨:Screen
  • 《MLB美职棒大联盟》专业运动员标准·棒球1号位
  • reversed()方法
  • Altium Designer(AD24)另存为功能介绍
  • OD C卷 - 计算三叉搜索树的高度
  • 导购返利APP的数据库性能优化:索引设计与查询调优实践
  • pretrain-Alignment范式的强大与极限——李宏毅大模型2025第五讲笔记
  • CSP集训错题集 第一周
  • MCU软件驱动分离
  • 浏览器中javascript时间线,从加载到执行
  • SP‘24 SSRFuzz论文学习
  • 【算法】day2 双指针+滑动窗口
  • 拆解 AI 大模型 “思考” 逻辑:从数据训练到推理输出的完整链路
  • Axios在鸿蒙应用开发中的使用
  • Go高性能双端队列Deque实战指南
  • StringBuilder 深度解析:数据结构与扩容机制的底层细节
  • Altium Designer(AD24)自学资源介绍
  • cs144 lab0学习总结