前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >win7显示器亮度怎么调_虚拟机外接显示器

win7显示器亮度怎么调_虚拟机外接显示器

作者头像
全栈程序员站长
发布2022-09-24 13:38:35
2.4K0
发布2022-09-24 13:38:35
举报

大家好,又见面了,我是你们的朋友全栈君。

很久没有继续研究wddm hook了,最后一次研究还在3年前,不得不说虽然应用的少,但是wddm hook却是很有技术含量的一项技术,而且实用性很高,我们除了做虚拟显示器还能做很多的东西,比如高效的截屏(因为直接从驱动层面截屏,所以效率和实现效果秒杀mirror driver和DXGI)、视频重定向(视频硬件加速的时候可以直接获取原始码流)、修改原始的显示器厂商信息、修改显示器支持分辨率,等等骚操作wddm hook都可以实现。

wddm hook的实现原理
wddm hook的实现原理

去年,深圳某硬件公司找到我,他们正在做usb转HDMI或者USB转VGA的硬件连接线,这种线市面上很常见,当然也比较实用,但是芯片却一直被少数几个厂商垄断着,比较有名的两个,displaylink和fresco logic。我们知道显示器一般是直接插在显卡的HDMI或VGA等输出上,但是我们现在要做的是显示器插在电脑的USB上,并非由显卡直接输出,如何做到显示器接收显卡的输出?

其实芯片的实现难度还好,主要就是将图片信息转换成HDMI或VGA信号,关键在于如何在windows层面做到查到USB上跟插在显卡的VGA或者HDMI输出上一样的效果,display link类的实现原理如下:

displauylink驱动实现原理
displauylink驱动实现原理

芯片受制于人毕竟不是好事,毕竟大部分利润都被芯片公司赚走了,所以该硬件公司找到我,他们已经可以做出将图片转换成VGA和HDMI信号的芯片了,万事俱备,只欠东风,现在就需要有个人帮他们做一个驱动,该公司的刘总寻了很多年,终于找到了我,很是兴奋,跟我初步聊完,第二天就从深圳飞到我所在的城市,聊完技术细节,很快的就签了开发协议,协议的需求就是要兼容市面上win7及以上Windows系统,并输出屏幕图片,由于公司芯片采用usb2.0传输,带宽有限,需要图片的变化区域而不是整屏数据。

需要支持win7、win8及win10,不用多说,wddm hook肯定是跑不掉了,看来我又要重抄旧业,说起wddm hook,在兼容性这块我真的有点后怕, 我在2017年到2018年间做过一个win7的虚拟显示器采用的便是wddm hook技术,当时解决了公司VDI显卡透传上的几个难题,年底还拿了公司的技术突破奖。因为公司的显卡场景比较少,当时我们用的是AMD的消费级显卡,只需兼容这一款就够了,对其他显卡的兼容性没有做过多的测试,所以如果使用在usb转HDMI这种个人用户,需要市场上各种类型的显卡,我是很没有底气的,是什么让我有这么大的勇气来签这个协议,是对技术的追求还是喜欢有挑战性的工作?都不是,是因为穷!

关于调试和逆向 说来惭愧,我刚开始在做wddm hook的时候还不会基本的内核态windbg调试,当时的调试还是采用最原始的打日志方式,举个很简单的例子,有条分支走错了,可能我需要把每条可能走到这条分支的点都需要加上日志,要是分支多的话就需要打很多了,如果我会内核态windbg调试,我直接给函数加个断点,然后单步调试,看下哪部逻辑错了,顺便能看下每个变量是什么,程序为什么出错很快就能一清二楚了。

其次,我曾经遇到一个问题,系统在安装我的驱动后,在关机的时候卡死了,这时候怎么办呢?当初使用的方法是一点点屏蔽代码,用排除法的方法来看下是哪段代码出问题,简直是弱爆了。

还有一点是自己研究还不如借鉴友商的实现,我曾经在osr论坛上看到有位大佬说,wddm hook他们从开始做到稳定使用,花费了10人年,可想而知这个的难度,所以我一个人自己去闭门造车的话肯定不行,再花个10年,等我做稳定了技术早就被淘汰了,那么你又没有源码怎么借鉴呢?经过这几年在公司修电脑的历练,已经熟练的学会了逆向技术,对一个工程进行逆向,有两个必不可少的条件:1.你需要对整个工程的实现原理有个大概的了解;2.你需要熟练的使用逆向工具。所以我完全可以凭借以前的wddm hook经验再加最近几年的IDA逆向经验,成功的把市面上成熟的技术给逆向出来,事实证明,我用了不到2个月就把代码逆的七七八八了,至于逆的哪个我就不说了,肯定是那个兼容性最好的,谁兼容性最好我就借鉴谁的。

实现的USB手写屏的效果如下:

https://live.csdn.net/v/embed/213996

usb显示器

请添加图片描述
请添加图片描述

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171804.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档