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

win7显示器亮度怎么调_虚拟机外接显示器很久没有继续研究wddmhook了,最后一次研究还在3年前,不得不说虽然应用的少,但是wddmhook却是很有技术含量的一项技术,而且实用性很高,我们除了做虚拟显示器还能做很多的东西,比如高效的截屏(因为直接从驱动层面截屏,所以效率和实现效果秒杀mirrordriver和DXGI)、视频重定向(视频硬件加速的时候可以直接获取原始码流)、修改原始的显示器厂商信息、修改显示器支持分辨率,等等骚操作wddmhook都可以实现。去年,深圳某硬件公司找到我,他们正在做usb转HDMI或者USB转VGA的硬件

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

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

usb显示器

请添加图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pycharm基本配置_python配置pycharm

    pycharm基本配置_python配置pycharm使用pycharm执行python程序非常方便,但如果用到argparse模块,需要加上命令行参数时就需要用到终端执行。pycharm直接使用终端也很方便,如下:但如果使用Anaconda环境,你会发现condaactivate命令无效。需要进行如下配置:需要更改红色框选的路径。更改为如下:右键打开文件所在位置:右键属性,将cmd.exe及其后面的内容复制到红色框框选的路径中去。重启pycharm即可。…

  • 一文读懂 Spring Bean 的生命周期「建议收藏」

    一文读懂 Spring Bean 的生命周期「建议收藏」欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言今天我们来说一说SpringBean的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象。因为SpringBean的生命周期是除了IoC、AOP几个核心概念之外最重要概念,大家务必拿下。可Spring源代码又比较复杂,跟着跟着就不知道跟到哪里去了,不太好拿下呀。这倒是真的,而且网上一上来就各种贴流程源码,对初学者来说是真的一脸懵逼,就像字.

  • html Window与document区别

    html Window与document区别Window–代表浏览器中一个打开的窗口:对象属性  window//窗口自身  window.self//引用本窗户window=window.self  window.name//为窗口命名  window.defaultStatus//设定窗户状态栏信息  window.location//URL地址,配备布置这个属性可以打开新的页面对象方法  window.alert("t…

  • SQL学习规划

    SQL学习规划知乎话题:如何学习SQL语言?赵立新和猴子的回答挺好的! 

  • linux 查看当前所有环境变量的两种方法_查看环境变量的命令

    linux 查看当前所有环境变量的两种方法_查看环境变量的命令原文From: http://os.51cto.com/art/201005/202463.htm 系统的环境变量在配置webserver以及编写程序都常常被用到,因此了解必要的关于系统变量的知识是非常有必要的,下面关于linux系统变量的查看以及方法。在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。Linux下Linux查看环境变量准确…

  • oracle 的 start with … connect by …

    oracle 的 start with … connect by …

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号