Windows虚拟显示器MttVDD源码分析 (0) 整体介绍

100 阅读1分钟

序言

在云游戏、云桌面等领域,会经常应用到windows虚拟显示器。在windows设备管理角度,windows的画面是需要输出到显示器设备,通过显示器的面板显示到用户的眼睛。

云游戏、云桌面的windows运行环境是虚拟机,它本身并没有显示器,因此需要借助虚拟显示器技术来帮助云游戏、云桌面的画面输出。

接下来的系列文章是从该项目的源码层面分析windows虚拟显示器的实现,面向的读者是windows开发工程师。如果只是需要使用该项目在windows上创建虚拟显示器,可直接参考项目使用帮助文档。

项目信息介绍

本系列文章基于Mtt Virtual Display项目进行描述,简称MttVDD。这个项目是目前开源的虚拟显示器项目中,功能最完整(支持SDR/HDR,支持x86和/ARM64)。

MttVDD是一个虚拟显示器驱动程序,它能在你的 Windows 电脑中凭空“变出”一个或多个不存在的显示器

你可以像配置真实硬件一样,通过一个简单的 XML 配置文件来自由定制这些虚拟显示器的所有参数,例如要创建几个显示器、支持哪些分辨率和刷新率,甚至是否启用 HDR 等高级色彩功能。

驱动程序的核心任务是高效地从操作系统接收图像画面,并“假装”将它们显示出来,从而让其他应用程序(如远程桌面、流媒体软件)相信真的有这样一个显示器存在并加以利用。

整体介绍

flowchart TD
    A0["间接设备上下文 (IndirectDeviceContext)
"]
    A1["交换链处理器 (SwapChainProcessor)
"]
    A2["配置与设置管理
"]
    A3["EDID与显示器模拟
"]
    A4["驱动回调与入口点 (WDF/IddCx Callbacks)
"]
    A5["命名管道IPC通信
"]
    A6["高级色彩与HDR管理
"]
    A7["驱动程序日志系统 (WPP Tracing)
"]
    A4 -- "调用核心逻辑" --> A0
    A0 -- "创建并管理" --> A1
    A2 -- "提供配置" --> A0
    A2 -- "决定EDID来源" --> A3
    A3 -- "提供色彩元数据" --> A6
    A4 -- "设置HDR元数据" --> A6
    A5 -- "发送控制命令" --> A0
    A0 -- "记录运行状态" --> A7