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显示器

请添加图片描述

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TCP和UDP的区别是什么_socket tcp udp区别

    TCP和UDP的区别是什么_socket tcp udp区别TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图IP:网络层协议;(高速公路)TCP和UDP:传输层协议;(卡车)HTTP:应用层协议;(货物)。HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。SOCKET:套

    2022年9月20日
    0
  • 斜投影矩阵的性质_锥体体积怎么推导

    斜投影矩阵的性质_锥体体积怎么推导参考网址:https://gameinstitute.qq.com/community/detail/106203翻译http://www.terathon.com/lengyel/Lengyel-Oblique.pdf原文http://www.lsngo.net/2018/01/07/graphics_mirrorcamera_2/参考书籍:Mathematics.for.3D…

    2022年9月28日
    0
  • es6延展操作符_一行代码实现数组去重

    es6延展操作符_一行代码实现数组去重es6之扩展运算符三个点(…)es6之扩展运算符三个点(…)对象的扩展运算符数组的扩展运算符总结es6之扩展运算符三个点(…)对象的扩展运算符理解对象的扩展运算符其实很简单,只要记住一句话就可以:对象中的扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中letbar={a:1,b:2};letbaz={…z};/…

    2022年4月19日
    118
  • mongodb联表查询_mongodb聚合查询

    mongodb联表查询_mongodb聚合查询  在使用MongoDB存储数据的时候,我们查询的时候,有时候难免会需要进行连表查询。但是MongoDB本身是非关系性数据库,连表查询,很多时候,需要我们自己在代码里手工操作。但是从MongoDB3.2版本过后,我们可以使用lookup∗∗∗进行连表查询。下面就简单介绍一下MongoDB的∗∗∗lookup∗∗∗进行连表查询。下面就简单介绍一下MongoDB的∗∗∗lookup***进行…

    2022年9月14日
    0
  • 三条平行线与等边三角形

    三条平行线与等边三角形偶然在网上看到一道有意思的几何题,仔细思考了一下,确实有点趣。原题是:平面上有任意三条平行线,使用尺规则作图画出一个等边三角形,使三角形的三个顶点分别在三条平行线上。画法有好多种,搜集网上的一些画法,先介绍4种,再讨论一下三角形连长与平等线距离的关系,最后讨论下第二种画法的变化(三角形边长的唯一性未证明)。第一种:作图顺序:(颜色顺序:红—>绿—>蓝—>紫)1.在三条…

    2022年9月20日
    0
  • 三星s4刷机教程(卡刷)

    三星s4刷机教程(卡刷)···············使用到的工具&#18

    2022年7月3日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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