从 Windows 8 开始,镜像驱动程序将不会安装在系统上。 本部分所述的镜像驱动程序仅在早期版本的 Windows 上安装和运行。

但是,从Windows 8开始,向想要在 辅助技术 中为残障或残障客户提供镜像驱动程序功能的开发人员,可以使用特殊的 GDI 辅助功能驱动程序模型。 若要了解有关此特殊驱动程序模型的详细信息,请联系 acc_driver@microsoft.com

基于 镜像 驱动程序体系结构的 远程显示驱动程序 模型也可以从 Windows 8 开始运行,但在 Windows 10 版本 2004 中已删除。 有关详细信息,请参阅 远程显示驱动程序

从Windows 10起,不再建议将 GDI 辅助功能驱动程序用于新产品,Microsoft 将在未来的操作系统版本中删除支持。 Windows 10版本 2004 中已删除对 GDI 远程显示驱动程序的支持。 但是,通过构建自定义远程 协议提供程序 间接显示驱动程序 ,仍可以创建远程显示解决方案。

镜像驱动程序说明

镜像驱动程序 是虚拟设备的显示驱动程序,它镜像一个或多个其他物理显示设备的绘图操作。 它是实现的,其行为非常类似于任何其他显示驱动程序;但是,与典型的微型端口驱动程序相比,其配对的视频微型端口驱动程序最小。 有关 镜像系统中微型端口驱动程序的详细信息,请参阅视频微型端口驱动程序 (Windows 2000 型号) 中的镜像驱动程序支持。 Windows 驱动程序工具包 (WDK) Windows 7 版本 (版本 7600) 包含一个示例镜像驱动程序,其中包括包含在三个目录中的组件源文件。

包含的源文件

GDI 支持 虚拟桌面 ,并提供在镜像设备上复制部分虚拟桌面的功能。 GDI 将虚拟桌面实现为物理显示驱动程序层上方的图形层。 所有绘图操作都从此虚拟桌面空间开始;GDI 剪辑并呈现在虚拟桌面中存在的相应物理显示设备上。

镜像设备可以在虚拟桌面中指定任意 剪辑区域 ,包括跨多个物理显示设备的剪辑区域。 然后,GDI 向镜像设备发送与该驱动程序的剪辑区域相交的所有绘图操作。 镜像设备可以设置与特定物理设备完全匹配的剪辑区域;因此,它可以有效地镜像该设备。

在 Windows 2000 及更高版本中,镜像驱动程序的剪辑区域必须包含主显示设备。

在 Windows Vista 及更高版本中,桌面 Windows 管理器 (DWM) 将在加载镜像驱动程序时关闭。

镜像 驱动程序代码示例演示如何实现镜像驱动程序。 有关可帮助你了解示例的详细信息,请参阅:

  • 使用示例 INF 文件 镜像.inf 作为模板。 有关详细信息 ,请参阅镜像驱动程序 INF 文件
  • 请参阅 mirror.exe 应用程序,该应用程序演示了如何将 镜像 驱动程序附加到虚拟桌面。 有关详细信息 ,请参阅镜像驱动程序安装
  • 有关使用 Win32 EnumDisplayDevices 函数的信息,请参阅 Windows SDK 文档。 使用此函数来确定与镜像显示设备关联的 \\.\Display# 名称。 更改镜像设备的设置需要此编号。 对于多个实例, # 是每个实例的不同数字;因此必须通过循环访问可用的显示设备来确定此数字。
  • 将镜像设备附加到全局桌面

  • 将REG_DWORD注册表项 Attach.ToDesktop 添加到驱动程序的服务项。

  • 将此键的条目设置为 1 (一个) 。

    若要禁用镜像驱动程序,请将此项设置为 0 (零) 。

    如前所述,驱动程序在位于设备层上方的绘图层中安装并运行。 由于镜像驱动程序的坐标空间是桌面坐标空间,因此它可以跨多个设备。 如果镜像驱动程序旨在镜像主显示器,则其显示坐标应与主显示器的桌面坐标一致。

  • 安装 镜像 驱动程序后,将为与驱动程序的显示区域相交的所有呈现操作调用该驱动程序。 在 多监视器系统上 ,如果镜像驱动程序仅与主显示设备重叠,这可能不包括所有绘图操作。

  • 建议使用用户模式服务来维护镜像驱动程序的设置。 此应用程序可确保驱动程序在启动时正确加载,并且可以通过WM_DISPLAYCHANGE消息获取显示更改通知,从而对桌面的更改做出适当的响应。

  • GDI 为与驱动程序边界矩形相交的任何 2D 图形 DDI 绘制操作调用镜像驱动程序。 请注意,如果图面是设备格式位图,则 GDI 不会检查执行边框;也就是说,如果 SURFOBJ iType 为 STYPE_DEVBITMAP。

  • 与往常一样,必须在不使用全局变量的情况下实现镜像驱动程序。 该特定驱动程序的所有状态都必须存在于 PDEV 中。 GDI 将为视频微型端口驱动程序创建的每个硬件设备扩展调用 DrvEnablePDEV

  • 镜像驱动程序不应支持 DirectDraw。

  • 镜像驱动程序必须在 DEVINFO 结构的 flGraphicsCaps 成员中将GCAPS_LAYERED标志设置为 TRUE

  • 辅助功能镜像驱动程序必须在 DEVINFO 结构的 flGraphicsCaps2 成员中将GCAPS2_EXCLUDELAYERED和GCAPS2_INCLUDEAPIBITMAPS标志设置为 TRUE

  • 镜像驱动程序可以选择通过实现 DrvRealizeBrush 来支持画笔实现。

    GDI 允许同一驱动程序在单监视器和多监视器系统上运行。 多监视器系统中的驱动程序只需跟踪其在全局桌面中的位置。 每当发生 Win32 ChangeDisplaySettings 调用时,例如当用户使用 控制面板 中的显示程序动态更改监视器在桌面中的位置时,GDI 会向驱动程序提供此位置。 发生此类更改时,GDI 相应地更新 DEVMODEW 结构的 dmPosition 成员。 驱动程序可以通过实现 DrvNotify 来接收此类更改的通知。 有关详细信息 ,请参阅镜像驱动程序安装

    当在客户端上以这种准确度呈现时,镜像驱动程序不需要以像素完美的精度进行渲染。 例如,接收镜像图像的适配器/监视器不需要呈现 网格相交量化 (GIQ) 线条绘制和多边形填充,其精度与镜像适配器/监视器相同。

    即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅: https://aka.ms/ContentUserFeedback

    提交和查看相关反馈

  •