间接显示驱动程序概述
间接显示驱动程序 (IDD) 模型提供简单的用户模式驱动程序模型,以支持未连接到传统 GPU 显示输出的监视器。 例如,通过 USB 连接到具有常规 (VGA、DVI、HDMI、DP 等 ) 监视器的电脑的硬件保护装置需要 IDD。
IDD 实现
IDD 是设备的第三方提供的 UMDF 驱动程序。 IDD 是使用 IddCx (间接显示驱动程序类扩展) 公开的功能开发的,以通过以下方式与 Windows 图形子系统进行交互:
- 创建表示间接显示设备的图形适配器
- 报告监视器正在与系统连接和断开连接
- 提供连接的监视器的说明
- 提供可用的显示模式
- 支持其他显示功能,例如硬件鼠标光标、伽玛、I2C 通信和受保护的内容
- 处理要显示在监视器上的桌面图像
由于 IDD 是 UMDF 驱动程序,因此它还负责实现所有 UMDF 功能,例如设备通信、电源管理、即插即用等。
IDD 在 会话 0 中运行,而没有任何组件在用户会话中运行,因此任何驱动程序不稳定不会影响整个系统的稳定性。
下图提供了体系结构概述。
用户模式模型
IDD 是仅用户模式模型,不支持内核模式组件。 因此,驱动程序能够使用任何 DirectX API 来处理桌面映像。 事实上,IddCx 提供桌面图像以在 DirectX 图面中编码。
注意
驱动程序不应调用不适合驱动程序使用的用户模式 API,例如 GDI、窗口 API、OpenGL 或 Vulkan。
IDD 应生成为 通用 Windows 驱动程序 ,以便可以在多个 Windows 平台上使用。
生成时:
- UMDF IDD 声明生成它的 IddCx 版本。
- OS 确保在加载驱动程序时加载正确版本的 IddCx。
IddCx 回调和函数命名约定
前缀 | 类型 | 说明 |
---|---|---|
EVT_IDD_CX_XXX | IDD 回调函数 | IDD 实现 IddCx 特定的回调(如 EVT_IDD_CX_ADAPTER_COMMIT_MODES)和相关 WDF 回调(如 EVT_WDF_DEVICE_D0_EXIT)。 |
IddCxXxx | 函数 | 系统提供的 IddCx 类扩展函数,IDD 可以调用;例如 IddCxAdapterInitAsync。 |
PFN_IDDCX_XXX | 指向 IddCx 函数的指针 | IDD 不使用这些指针。 相反,驱动程序应使用等效的 IddCxXxx 函数。 |
代码示例
Microsoft 在 Windows 驱动程序示例 GitHub 上提供了一个示例 IDD 实现。 此示例演示如何连接监视器、如何响应模式集以及如何接收帧。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈