win10虚拟显示器开发

本文介绍了作者在Windows 10虚拟化环境中,使用Indirect Display Driver (IDD) 框架创建虚拟显示器的过程。由于直接编写WDDM驱动无法充分利用透传显卡性能,作者转向了微软在2016年底推出的IDD框架。在开发中遇到的挑战包括驱动位于用户态、需内核态驱动协助与硬件交互、以及驱动必须安装在特定类型的设备上。作者实现了双屏效果,并邀请有类似经验的读者分享讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2017.7.7

最近在做虚拟化,需要在虚机上虚拟出一个显示器,我使用的虚机是windows10,虚机里面有一张透传显卡(可看做是物理显卡),我尝试过一些方法,比如编写一个虚拟的WDDM显卡驱动,然后在显卡驱动上接上一个显示器,该方法是有效的,可以成功虚拟出一个显示器,但是在虚拟显示器上渲染数据使用的渲染引擎没有用到透传显卡,在性能上达不到我的要求,所以只好放弃用这种方法。

 

于是,通过阅读MSDN上的WDDM开发文档,找到了Indirect display driver开发框架,比较符合我的要求,它好像是微软在2016年年底出来的一个框架,比较新,所以除了微软本身外,根本找不到任何开发资料,开发过程中需要问题只能自己一点点去尝试,比较痛苦,微软有提供的资料如下:

 

开发文档: https://docs.microsoft.com/zh-cn/windows-hardware/drivers/display/indirect-display-driver-model-overview

 

在开发过程中遇到一些问题,需要注意的如下:

(1)该驱动为用户态模式驱动,如果想要将图片数据发送给底层硬件,需要先转发给内核态驱动,由内核态驱动同硬件交互。

(2)该驱动不能作为虚拟驱动存在,他需要安装在一个设备上,否则IddCxAdapterInitAsync函数会返回失败。

(3)该驱动貌似只能装在usb设备上,我之前尝试装在PCI设备上,虽然系统上会出现一个虚拟显示器,但是只要你一使用这个显示器,“桌面窗口管理器”

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值