
驱动开发
文章平均质量分 90
雨中风华
e-mail: fanxiushu@163.com
GITHUB: https://github.com/fanxiushu
能开源免费的都在我的GITHUB或优快云公布了,
其他的源码请勿再询问开源获取,因为问了也白问。
展开
-
Windows蓝牙驱动开发之模拟HID设备(二)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)
// 应用层传递下来的相关参数。就这样,经过这么一通修改之后,当我们使用 BRB_REGISTER_PSM 注册任何PSM,都会成功,当然包括0x11和0x13。至此,一个传输就完成了,同时包括接收和发送,应用层只要发送IOCTL_BTH_DATA_TRANSFER 命令到驱动中,当然,可以在应用层封装 IOCTL_BTH_DATA_TRANSFER,把他作为类似 recv,send函数来实现。其中蓝牙模拟HID设备的部分,则是采用过滤USB总线,重定向到 0x11和0x13 这两个值的,从而达到目的。原创 2024-03-25 12:20:36 · 1418 阅读 · 0 评论 -
linux平台实现虚拟磁盘驱动(通用的块设备驱动和基于SCSI的磁盘驱动)
struct Scsi_Host *sh = scsi_host_alloc(&nbt_scsi_driver_template, sizeof(自己定义的私有结构体大小));这时候 scsi_host_template 里边对应的 queuecommand 回调函数就会被调用,用来处理具体的SCSI磁盘的SCSI请求。然后响应 一些关于磁盘的特殊IOCTL, 同时响应 IRP_MG_READ和IRP_MJ_WRITE的读写磁盘扇区请求。原创 2023-08-16 23:44:26 · 1582 阅读 · 4 评论 -
WIN10以上平台实现UCX框架的USB虚拟总线驱动(USB主机控制端驱动)
WIN10以上的内核中,微软似乎发现了这样的问题,终于实现了一个UCX基础框架,方便USB虚拟总线驱动的开发。当然,也只能支持WIN10平台,因此下面的内容都是针对win10平台的阐述(当然也同样适用WIN11及以后的升级版本)UCX是 USB Controller Extension的简称,意思是USB主机控制器扩展,其实就是个接口库,与我们应用层理解的dll本质上没有区别。在优快云上前面的文章阐述WIN10 平台的UDE框架(一个纯粹的模拟虚拟USB总线的驱动的框架) ...原创 2022-06-01 14:12:57 · 1987 阅读 · 2 评论 -
windows平台xFsRedir程序2021年2月更新(添加虚拟局域网功能)
by fanxiushu 2021-020-20 转载或引用请注明原始作者相信大家对真实的局域网都不陌生,一个公司,一个家庭,甚至一台电脑上使用vmware虚拟机都可以组建起一个局域网。这些局域网通过NAT连接到上一级网络,然后再上一级,再上一级。。。直到连接到主干网,当然有些设备非常幸运,分配的IP地址,可以在主干网中畅...原创 2021-02-22 13:28:56 · 1210 阅读 · 12 评论 -
windows平台xFsRedir目录重定向程序2020年更新
by fanxiushu 2020-12-09 转载或引用请注明原始作者今年对xFsRedir程序的更新幅度是比较大的.首先在大概4月份的时候,增加了基于更底层的虚拟磁盘驱动来替换主驱动xfs_redir.sys内嵌的简单虚拟磁盘功能。而这次的更新则是增加了文件重定向功能,增加了特殊程序才能使用重定向的功能...原创 2020-12-10 16:39:12 · 1221 阅读 · 16 评论 -
基于WFP等网络驱动实现局域网内所有设备通过代理上网
by fanxiushu 2020-10-13 转载或引用请注明原始作者开始之前,我们先来理解标题是什么意思。这里所说的局域网内的所有设备通过代理上网,并不是在每台设备上安装某个代理软件然后再通过代理服务端来上网。而是所有这些设备的网关IP设置到某个主机上,这样所有设备的网络数据都会转发到这个主机上。而这个主机的软件再通过代理服务端转发所有这些设备的网络数据...原创 2020-10-15 15:58:29 · 3654 阅读 · 2 评论 -
WIN10平台基于UDE框架的的虚拟USB总线驱动开发
by fanxiushu 2020-09-18 转载或引用请注明原始作者。关于虚拟USB总线驱动的讲解的内容比较多,时间跨度也比较长。有基于linux平台下如何实现虚拟USB总线驱动的,优快云上的如下链接:https://blog.youkuaiyun.com/fanxiushu/article/details/1029674...原创 2020-09-23 17:20:09 · 2939 阅读 · 9 评论 -
WIN10系统 Indirect Display 虚拟显示器之特殊应用
by fanxiushu 2020-05-20 转载或引用请注明原始作者。有人询问我是否可以实现这样一种功能:对windows输出的每一帧图像数据显示做一些特殊处理(比如球形桌面,曲面化等特效),然后再显示到显示器上。而且还不止一个人这样咨询过,虽然我不大清楚这种需求具体用在何处,估计也是一些特殊场所。这种需求,最先想到的,也最直观的想法就是能否给显卡驱动添加一个过滤驱动,然后拦截图像数据,然后再做些特殊处理。可惜想法是美好的,却是难以实现的,甚至是不大可能实现的。首先windows中就没显卡过原创 2020-05-20 16:25:24 · 18354 阅读 · 11 评论 -
磁盘的GPT分区表(解决xFsRedir目录重定向程序中一个扩展虚拟磁盘子功能的兼容问题)
by fanxiushu 2020-05-18 转载或引用请注明原始作者。平时也不大关注磁盘的分区参数等信息,只是最近在更新xFsRedir程序的时候,想要使用底层的storport框架的虚拟磁盘驱动代替基于直接IO的简单模型的虚拟磁盘驱动,这样做的目的是为了让虚拟出来的磁盘更接近操作系统需求,更能欺骗windows把它当成真正的磁盘。xFsRedir的使用请去GITHUB下载:https://github.com...原创 2020-05-18 19:30:11 · 917 阅读 · 8 评论 -
Windows 虚拟摄像头驱动开发之 基于AVstream流内核的摄像头驱动
by fanxiushu 202-03-01 转载或引用请注明原始作者。对于windows平台下的虚拟摄像头实现方式的研究比较多,范围也比较广,曾采用各种方式来实现windows平台下的虚拟摄像头。从优快云上的第一篇文章开始:https://blog.youkuaiyun.com/fanxiushu/article/details/8496747 (虚拟摄像头驱动原理开发)文章描述的是利用老的流内核来...原创 2020-03-02 12:55:00 · 7849 阅读 · 7 评论 -
linux平台实现USB虚拟总线驱动二(把驱动移植到Android系统)
byfanxiushu 2019-11-07 转载或引用请注明原始作者。接上文,把上文中开发的驱动移植到android系统中来。因为我身边没有Android系统的设备,很疑惑,目前确实没有。因此只好在模拟器上打主意了,我想模拟器跟真机其实差不多的,没道理模拟器能移植成功,而真机无法移植成功。要移植驱动,需要重新编译Android系统的linuxkernel源码,重新替换原来的ker...原创 2019-11-08 11:20:05 · 1162 阅读 · 0 评论 -
linux平台实现USB虚拟总线驱动一(原理以及开发流程)
by fanxiushu 2019-11-07 转载或引用请注明原始作者。之前的文章阐述过在windows平台下,如何实现USB虚拟总线驱动,以及如何在windows平台采集真实USB设备的数据,然后通过网络传输,达到 ”延长“ USB线缆的效果。相关链接如下:https://blog.youkuaiyun.com/fanxi...原创 2019-11-08 09:57:32 · 3840 阅读 · 0 评论 -
Windows7以上使用WFP驱动框架实现IP数据包截取(二)
by fanxiushu 2017-10-23 转载或引用请注明原是作者。接上文。上文所说只要挂载其中的6个WFP过滤点,就可以截获IP层的所有数据包。再把截获的数据包转发到应用层,应用层处理之后,再发给内核驱动,经过这样的过程,就完成一个数据包的处理过程。IP数据包到达应用层之后,我们就可以随心所欲的实现某些功能。比如做流量分析,可以细化到端口和具体IP等,可以做NAT转发,原创 2017-10-25 21:44:02 · 11497 阅读 · 10 评论 -
Windows7以上使用WFP驱动框架实现IP数据包截取(一)
By fanxiushu 2017-10-11 转载或引用请注明原始作者。WFP(Windows Filtering Platform)驱动框架,也许很多人都不熟悉,原创 2017-10-13 00:33:31 · 17109 阅读 · 19 评论 -
虚拟摄像头驱动原理及开发
(以下所说的都是基于微软的windows平台) 类似功能的产品,如著名的e2eSoft的 VCam,国内新浪的9518虚拟视频,新浪的虚拟视频是DirectShow应用层上的视频模拟,大概的思路就是:因为所有的摄像头WDM驱动,都需要通过运行在应用层的ksproxy.ax与DirectShow交互,ksproxy.ax顾名思义,是WDM驱动同DShow原创 2013-01-12 19:23:57 · 17392 阅读 · 15 评论 -
windows远程桌面实现之一 (抓屏技术总览 MirrorDriver,DXGI,GDI)
by fanxiushu 2017-06-14 转载或引用请注明原始作者要实现远程桌面功能,首先要做的就是桌面图片的截取,而且要达到比较流畅的视觉效果,需要到达每秒20帧以上。截取桌面图片,就是定时截取windows桌面的图片,随便怎么都能做到,好像挺简单的。通用的做法就是GetDC(GetDesktokWindow() )获取桌面的DC,然后使用Creat原创 2017-06-15 00:59:10 · 30921 阅读 · 62 评论 -
NDIS协议驱动应用之(另类的NAT路由程序开发)
by fanxiushu 2019-02-23 转载或引用请注明原始作者。在上一篇文章中,描述了windows7以上平台下NDIS协议驱动的开发过程。本文将描述NDIS协议驱动的其中一个用途,用于实现一个介于应用层和驱动层的混...原创 2019-02-27 00:19:30 · 1700 阅读 · 4 评论 -
Windows远程桌面实现之二(抓屏技术之MirrorDriver镜像驱动开发)
by fanxiushu 2017-07-25 转载或引用,请注明原始作者 上一篇文章总体描述了三种抓屏办法,其他两种办法都是在应用层调用windows的接口函数实现,链接地址:http://blog.youkuaiyun.com/fanxiushu/article/details/73269286实现方法较为简单,因此也就一笔带过。详细代码可查阅稍后提供到优快云的抓屏部分代码。原创 2017-07-25 00:48:21 · 29184 阅读 · 92 评论 -
MacBook Pro 2017 13寸版 触摸板windows驱动开发(开发HID鼠标键盘驱动之一)
by fanxiushu 2017-10-27 转载或引用请注明原始作者。做这个驱动,写这篇文章的目的就是因为macBook pro 2017版的触摸板在windows平台下难用,于是决定重新开发macbook pro 2017触摸板的windows驱动。请稍后关注 GITHUB和优快云提供的源代码和驱动程序。如下连接,http://blog.youkuaiyun.com原创 2017-10-30 18:54:06 · 20998 阅读 · 12 评论 -
windows平台xFsRedir程序更新(虚拟磁盘镜像存储方式改进和xFsRedir缓存原理等)
by fanxiushu 2018-05-12 转载或引用请注明原始作者。xFsRedir是windows平台下的分布式网络文件系统程序。这个软件已经持续比较长的时间了,最近更新了部分功能。完整版本安装和使用请查阅如下链接:https://blog.youkuaiyun.com/fanxiushu/article/details/53...原创 2018-05-12 10:27:38 · 3210 阅读 · 20 评论 -
WIN7以上系统WDDM虚拟显卡开发(WDDM Filter/Hook Driver 显卡过滤驱动开发之一)
by fanxiushu 2018-09-16 转载或引用请注明原始作者。 这里讨论的都是win7以上平台的WDDM模型的显卡驱动,而不是WINXP之前的XPDM模型的显卡驱动。实际上没有"显卡过滤驱动...原创 2018-09-17 01:04:06 · 25344 阅读 · 53 评论 -
windows7以上平台 NDISFilter 网卡过滤驱动开发
by fanxiushu 2019-01-16 转载或引用请注明原始作者这里讨论的都是基于WIN7以上平台,NDIS 6.0以上版本的网络驱动。做个驱动的目的,是因为很早之前,我使用 TDI 和 NDIS5.1 框架的...原创 2019-01-16 23:18:24 · 7686 阅读 · 14 评论 -
NdisFilter驱动数据全部转发到应用层的性能之优化(使用共享环形队列方式)
by fanxiushu 2019-01-22 转载或引用请注明原始作者。在上一篇文章中,https://blog.youkuaiyun.com/fanxiushu/article/details/86516610 (windows7以上平台 NDISFilter 网卡过滤驱动开发)阐述了NdisFilter驱动开发过程,并且结合我的实际应用,把数据包全部转发到应用层来处理,从而实现应用层级别的 NA...原创 2019-01-22 18:35:18 · 1650 阅读 · 6 评论 -
windows7以上平台NDIS6框架的NDIS协议驱动开发
by fanxiushu 2019-01-30 转载或引用请注明原始作者。提到NDIS协议驱动,可能比较陌生,因为毕竟用得挺少的。但是一提到WireShark或ethereal等抓包软件,大家就不再陌生了。这些抓...原创 2019-01-30 20:52:27 · 6042 阅读 · 3 评论 -
Windows远程桌面开发之九-虚拟显示器(Windows 10 Indirect Display 虚拟显示器驱动开发)
by fanxiushu 2019-06-24 转载或引用请注明原始作者。这里与远程桌面关系不是太大,但这个部分是xdisp_virt远程控制程序的实现多显示器桌面扩展的子功能,因此也归为远程桌面开发一类。这篇文章与之前发布的...原创 2019-06-24 20:57:34 · 28556 阅读 · 54 评论 -
windows平台xFsRedir目录重定向程序2019年更新
by fanxiushu 2019-08-12 转载或引用请注明原始作者。使用过xFsRedir程序的人大概都知道这个程序是做什么用的。它把各种服务端的文件夹也就是目录,映射到本地某个文件夹中,而且操作这个被重定向的文件夹就跟本地文件系统一样...原创 2019-08-13 08:20:59 · 2380 阅读 · 37 评论 -
linux内核select/poll,epoll实现与区别
下面文章在这段时间内研究 select/poll/epoll的内核实现的一点心得体会:select,poll,epoll都是多路复用IO的函数,简单说就是在一个线程里,可以同时处理多个文件描述符的读写。select/poll的实现很类似,epoll是从select/poll扩展而来,主要是为了解决select/poll天生的缺陷。epoll在内核版本2.6以上才出现的新的函数,而他原创 2013-02-22 00:01:56 · 3028 阅读 · 0 评论 -
USB驱动开发之远程访问USB设备扩展(linux平台USB设备数据采集端)
by fanxiushu 2017-06-20 转载或引用请注明原始作者.前面的章节陆续介绍了远程访问USB设备的相关知识,从数据采集端到虚拟总线驱动,到虚拟控制器和根集线器驱动等、相关文章如下链接:http://blog.youkuaiyun.com/fanxiushu/article/details/51420096 (USB设备驱动开发之远程访问USB设备(一USB设备数据采集端原创 2017-06-20 02:23:51 · 3614 阅读 · 0 评论 -
过滤驱动实现目录重定向之(完整版本程序下载以及使用)
by fanxishu 2016-12-22开始之前,先提供程序包的下载地址: 优快云上的下载地址:http://download.youkuaiyun.com/detail/fanxiushu/9719017GITHUB上的下载地址:https://github.com/fanxiushu/xFsRedir/raw/master/xFsRedir-1.0.0.1.zip原创 2016-12-22 22:46:43 · 4333 阅读 · 7 评论 -
Overlapped I/O 和 完成端口等异步IO在内核中的通知方式
By Fanxiushu 2013, 引用和转载请注明原作者写这篇文章的动机:是因为最近在应用程序中调用DeviceIoControl读写自己做的一个驱动程序的数据,传输的数据包很多。老的处理方式只是简单的采用多线程阻塞读写数据,这几天突然想到了完成端口,于是换成 完成端口后,只用一个线程,投递上百个Overlapped读写操作,效率比原来高了许多,因此就想从windows内核层原创 2013-03-17 21:09:50 · 2889 阅读 · 0 评论 -
摄像头过滤驱动
By Fanxiushu ,引用和转载请注明原作者本来是打算做个声卡过滤驱动的,可以用来采集电脑内部的声音,但是网上查的的资料显示,事情不是这么简单,或者我还没掌握其中的处理办法。声卡和摄像头都属于内核流媒体类驱动,属于同一类型。拦截 IOCTL_KS_READ_STREAM 可以截获读取的数据流,拦截 IOCTL_KS_WRITE_STREAM 可以截获写入的数据流。听起原创 2013-04-24 00:04:13 · 4362 阅读 · 14 评论 -
WDM Filter 驱动的一点基础知识
By Fanxiushu ,引用和转载请注明原作者WDM Filter是一类驱动的总称,它把自己挂载到功能设备(FDO)之下或者之上,拦截所有的IRP,对这些IRP分析处理,从而达到过滤的目的。它跟 NT式过滤驱动都是一样的目的,比如前面文章讲到的TDI Filter驱动就是个标准的NT式过滤驱动,但是处理方式上稍微有些不同,主要区别在 WDM需要处理即插即用和电源上。这里主要原创 2013-04-22 14:30:08 · 6456 阅读 · 15 评论 -
WIN7系统内核网络堆栈实现简述
了解windows平台内部网络堆栈实现架构,对于我们开发 NDIS驱动,TDI驱动,WSK驱动,WFP驱动等网络驱动更有帮助。因为windows并不是开源系统,不像linux那样可以从源代码中详细了解网络堆栈的实现流程,所以只能从MSDN文档,WDK驱动开发包的实例代码,以及网络上零碎的资料来做个大致的了解。我们从底层往上层一直到用户层了解win7的网络堆栈流程。最底层的是NDIS原创 2013-03-03 01:23:39 · 6101 阅读 · 1 评论 -
网络数据包拦截之:修改TCP包内容时注意的问题
首先描述一种现象,曾经家里的ADSL宽带,当用IE浏览器浏览网页时候,不管你打开什么类型的网站,都会出现电信广告,或是嵌入到原来网页中或是弹出广告框,十分的讨厌。曾经天真的以为是每个网站都跟电信合作,在他们的网站代码里潜入了电信广告,其实不是这样,只要在任何一个网关路由设备里,拦截TCP数据包,这里的拦截是基于IP层数据包的拦截。分析TCP包里HTTP协议并在里边添加数据,即可实现原创 2013-02-28 23:53:10 · 20359 阅读 · 5 评论 -
NDIS IM调试遇到的问题:OID_TCP_TASK_OFFLOAD
这几天调试NDIS xLan的时候,发现在 win2003上运行不正常,以前在 XP,WIN7,WIN8上测试都能正常,于是查找原因。先说说这驱动是干什么的,这是个NDIS中间驱动,采用应用层拦截的方式处理数据包,就是在中间驱动里获得的数据包,发送到应用层程序,应用层程序分析处理之后再返回给中间驱动。很类似应用层防火墙的功能,数据包的拦截处理全在应用层完成。类似的实现,可参看 li原创 2013-03-07 16:33:12 · 2160 阅读 · 0 评论 -
linux虚拟网卡驱动代码
linux平台实现虚拟网卡,在系统中模拟出一块虚拟的网卡出来,把发送到这块网卡的数据通过某种途径转发到应用层程序,由应用层程序负责处理这些数据。 linux内核中有 TUN/TAP,其实已经实现了这个功能,只要 open(“/dev/net/tun",O_RDWR); (2.6内核),然后ioctl创建一个虚拟网卡,系统中就会出现 名字叫 TUN或者TAP的网卡,接着就可以调用原创 2013-01-21 17:35:38 · 7549 阅读 · 12 评论 -
linux网卡驱动一点点基础知识
这算是真正的第一次接触linux驱动吧,为了实现在linux平台下的虚拟网卡,开始钻研linux驱动开发。先了解linux设备, 分为三种类型设备: 字符设备,块设备,网络接口设备。linux驱动开发基本就是围绕这三种设备驱动的开发。字符设备按照字节为单位传输数据,像字节流一样的顺序访问,块设备每次按照一个数据块的方式传输,一般是512的倍数,可随机访问,用于磁盘驱动等驱动中。原创 2013-01-15 23:01:24 · 2186 阅读 · 0 评论 -
NAT之windows平台实现一
这里介绍的是纯软件上,在windows平台下,利用NDIS中间驱动实现NAT。在其他平台实现NAT,也是同样的原理,唯一不同的是对网卡数据包的读取和写入操作是与平台相关的。而叫人蛋疼的是,对windows 平台下的直接操作网卡的实现是各种平台中最复杂的。比如Linux下,内核态下设置简单的钩子函数即可拦截网卡数据包,vxworks也跟Linux类似的机制。而windows平原创 2013-01-14 15:58:06 · 6638 阅读 · 1 评论 -
NAT之windows实现二
中间驱动所做的事情:中间驱动把从上层驱动传递下来的数据包发到应用程序,应用程序处理之后再负责发回到中间驱动,中间驱动再接着发到网卡中间驱动接收从网卡传递上来的数据包,把它发送到应用层,应用程序处理之后再发回到中间驱动,中间驱动再接着投递给上层驱动。NDIS中间驱动原理什么的,就不在这里赘述了,对驱动开发了解的人都能清楚。这里比较关键一点是这些数据包的IO处理的一些算法,为了尽可能的原创 2013-01-14 15:59:26 · 2167 阅读 · 2 评论 -
NAT(Network Address Translate)原理
NAT,网络地址翻译。可能大家并不知道是啥玩意,但是它就在你的身边默默的做着贡献。只是大家没留意到而已。比如公司局域网里,要上互联网,需要NAT,网吧里需要NAT,家庭网络为了多台机器能上网,需要NAT校园网也需要NAT,公共场所免费WIFI,也有NAT,一个拥有很多用户的ISP服务商,也需要NAT技术.NAT基本上是无处不在。有些是作为独立软件实现NAT功能,原创 2013-01-13 20:34:10 · 1759 阅读 · 0 评论