
C++
文章平均质量分 85
雨中风华
e-mail: fanxiushu@163.com
GITHUB: https://github.com/fanxiushu
能开源免费的都在我的GITHUB或优快云公布了,
其他的源码请勿再询问开源获取,因为问了也白问。
展开
-
Windows远程桌面实现之十一:桌面屏幕通过各种直播服务端直播(RTSP, RTMP, HTTP-FLV, HLS)
by fanxiushu 2020-01-23 转载或引用请注明原始作者。此文还是基于xdisp_virt远程项目中的一个子功能。在把xdisp_virt移植到各种平台之后,就想着再做点什么新功能,于是干脆再次增强原先实现的直播推流功能,在xdisp_virt程序中集成直播服务端,这样可以...原创 2020-01-23 22:33:26 · 5356 阅读 · 0 评论 -
Windows远程桌面实现之十 - 移植xdisp_virt之Linux(Utunbu,CentOS等)屏幕截屏,键鼠控制,声音 摄像头采集(四)
byfanxiushu 2019-12-30转载或引用请注明原始作者。前几章介绍xdisp_virt移植的时候,分别阐述了xdisp_virt移植整个工程,iOS平台相关的各种数据采集,macOS平台相关的各种数据采集。这篇文章阐述Linux平台下的桌面图像数据采...原创 2019-12-30 20:12:47 · 2378 阅读 · 2 评论 -
Windows远程桌面实现之十 - 移植xdisp_virt之macOS系统屏幕截屏,鼠标键盘控制,声音 ,摄像头采集(三)
by fanxiushu 2019-12-22 转载或引用请注明原始作者。前一篇文章描述的是iOS平台下的相关内容的采集(包括屏幕,声音,摄像头等),这一篇即将阐述的是macOS系统下的同样内容,同时还包括鼠标键盘的模拟控制。同样的,如果对xdi...原创 2019-12-23 11:18:04 · 1892 阅读 · 0 评论 -
Windows远程桌面实现之十 - 把xdisp_virt项目移植到iOS,macOS,linux平台(一)
by fanxiushu 2019-12-06 转载或引用请注明原始作者。xdisp_virt项目到目前为止,持续了两年多时间,几乎都是在windows平台下的实现各种功能,因为持续时间比较长,能想到的功能都给添加到xdisp_virt中了,尤其在windows截屏这部分,为了更好的截取windows桌面屏幕数据,能想到的都想办法实现了。为了支持全屏3D游戏,添加了DXHOOK动态库,为了...原创 2019-12-06 19:39:17 · 1664 阅读 · 0 评论 -
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 评论 -
Windows远程桌面实现之二(抓屏技术之MirrorDriver镜像驱动开发)
by fanxiushu 2017-07-25 转载或引用,请注明原始作者 上一篇文章总体描述了三种抓屏办法,其他两种办法都是在应用层调用windows的接口函数实现,链接地址:http://blog.youkuaiyun.com/fanxiushu/article/details/73269286实现方法较为简单,因此也就一笔带过。详细代码可查阅稍后提供到优快云的抓屏部分代码。原创 2017-07-25 00:48:21 · 29184 阅读 · 92 评论 -
Windows远程桌面实现之三(电脑内部声音采集,录音采集,摄像头视频采集)
by fanxiushu 2017-08-09 转载或引用请注明原始作者一,摄像头视频采集:这里提到的摄像头数据采集,好像跟远程桌面实现没半毛钱关系,其实本身确实跟远程桌面没半毛钱关系,但是当实现了远程桌面整套东西之后发现,把采集的桌面数据当成视频数据,与摄像头采集的视频数据是如此相似,以至于只要把摄像头采集的数据格式跟之前采集到的桌面数据格式对接,基本就能实现摄像头数原创 2017-08-09 19:48:00 · 17088 阅读 · 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 评论 -
网络通信之原始套接字
fanxiushu 2017-04-11我们在做网络编程时候,大都使用的是TCP或者UDP协议的套接字,下边这样的代码就创建了一个TCP或UDP的套接字int fd = socket(AF_INET, SOCK_STREAM,0); /// TCPint fd = socket(AF_NET, SOCK_DGRAM, 0 ); /// UDP使用recv或recvfrom接收原创 2017-04-12 14:36:42 · 7274 阅读 · 5 评论 -
linux平台用VFS驱动实现目录重定向(文件驱动实现目录重定向 四)
By Fanxiushu 2016-09-27 转载或引用请注明原始作者当你工作中或者生活中都面临着多台电脑,而且要经常访问每台电脑上的文件时候,你会很需要一种机制,或者工具,能非常方便的访问每台电脑的文件。各种操作系统平台都通用的工具,比如FTP工具,HTTP工具,windows平台最常用就是网上邻居(SMB/CIFS协议),UNIX等平台的网络文件系统(SMB,NFS等)当然NFS是跨平台的,windows也能使用,而且NFS是网络文件系统,可以跟原创 2016-09-27 16:14:34 · 3764 阅读 · 3 评论 -
Windows7以上使用WFP驱动框架实现IP数据包截取(二)
by fanxiushu 2017-10-23 转载或引用请注明原是作者。接上文。上文所说只要挂载其中的6个WFP过滤点,就可以截获IP层的所有数据包。再把截获的数据包转发到应用层,应用层处理之后,再发给内核驱动,经过这样的过程,就完成一个数据包的处理过程。IP数据包到达应用层之后,我们就可以随心所欲的实现某些功能。比如做流量分析,可以细化到端口和具体IP等,可以做NAT转发,原创 2017-10-25 21:44:02 · 11497 阅读 · 10 评论 -
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桌面实现之七(DirectX HOOK 方式截取特殊的全屏程序之一)
by fanxiushu 2019-04-16 转载或引用请注明原始作者。因为间隔的时间较长,为了方便查阅,下面是以前的六篇文章地址链接:https://blog.youkuaiyun.com/fanxiushu/article/details/732692...原创 2019-04-17 19:50:27 · 13564 阅读 · 7 评论 -
Windows桌面实现之八(DirectX HOOK 方式截取特殊的全屏程序之二)
by fanxiushu 2019-04-18 转载或引用请注明原始作者。接上文。WIN7以上系统WDDM虚拟显卡开发(WDDM Filter/Hook Driver 显卡过滤驱动开发之一) 这篇文章,曾经提到过:windows的应用程序中,绘图的基础图形库包括...原创 2019-04-21 00:42:41 · 14408 阅读 · 32 评论 -
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 评论 -
WIN7以上系统WDDM虚拟显卡开发(WDDM Filter/Hook Driver 显卡过滤驱动开发之一)
by fanxiushu 2018-09-16 转载或引用请注明原始作者。 这里讨论的都是win7以上平台的WDDM模型的显卡驱动,而不是WINXP之前的XPDM模型的显卡驱动。实际上没有"显卡过滤驱动...原创 2018-09-17 01:04:06 · 25344 阅读 · 53 评论 -
Windows远程桌面实现之六(新版本框架更新,以及网页HTML5音频采集通讯)
by fanxiushu 2018-08-21 转载或引用请注明原始作者。到目前为止,包括本文发布了六个系列,能坚持到现在也属不易。第一篇:https://blog.youkuaiyun.com/fanxius...原创 2018-08-21 12:49:18 · 6167 阅读 · 8 评论 -
Windows远程桌面实现之五(FFMPEG实现桌面屏幕RTSP,RTMP推流及本地保存)
by fanxiushu 2018-07-10 转载或引用请注明原始作者。前面文章分别阐述了,如何抓取电脑屏幕数据,如何采集电脑声音,如何实现在现代浏览器中通过HTML5和WebSocket直接进行远程控制。这章阐述如何把采集到的电脑屏幕和电脑声音,通过一些通用协议,比如RTSP,RTMP把电脑桌面屏幕推送到更广泛的直播服务器上,达到电脑屏幕直播的效果。或者把电脑屏幕保存成本地的MP4或MKV视频...原创 2018-07-11 10:31:05 · 42011 阅读 · 56 评论 -
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 评论 -
虚拟摄像头之DirectShow虚拟摄像头开发
by fanxiushu 2018-04-06 转载或引用请注明原始作者。之前优快云上的博客,较多的文章阐述了虚拟摄像头的开发,而且是两种类别的。1,比如使用老的内核流框架开发WDM虚拟摄像头驱动,博客链接:https://blog.youkuaiyun.com/fanxiushu/article/d...原创 2018-04-06 02:21:58 · 19186 阅读 · 43 评论 -
Windows远程桌面实现之四(在现代浏览器中通过普通页面访问远程桌面)
by Fanxiushu 2017-12-21 转载或引用请注明原始作者。前几篇文章分别阐述了如何抓取windows桌面图像,以及相关摄像头,电脑内部声音等采集,相关连接如下:http://blog.youkuaiyun.com/fanxiushu/article/details/73269286 (抓屏技术总览 MirrorDriver,DXGI,GDI)http://blog.c原创 2017-12-22 09:31:28 · 38894 阅读 · 16 评论 -
文件过滤驱动实现目录重定向(三)
Wrote By Fanxiushu 2015-03-30,引用或转载请注明原始作者。接上文。因为整个驱动结构采用把所有数据转发到应用层来处理的,所以需要在应用层处理各种文件请求,才能最终实现目录重定向 。 文件的各种请求是非常多的,现总结一下需要发送到应用层处理的请求包括:1,CREATE 文件打开创建请求 ,这个请求在驱动收到 IRP_MJ_CREATE触发2,原创 2015-03-30 00:19:40 · 3105 阅读 · 0 评论 -
文件过滤驱动实现目录重定向(二)
接上文。如何实现 sfPassThrough 派遣函数,才能达到目录重定向呢。我们首先要解决重定向的目的地,这里采用的是把所有需要重定向的IRP请求全部发送到应用层。之所以这样做,因为在应用层,可以更简单,更快捷, 更灵活的实现数据处理。 需要创建一个控制设备,用来跟应用层交互数据。 这样我们的驱动中至少有两类设备,一类是文件过滤驱动设备,一类是控制设备,如果驱动中还原创 2015-02-16 01:00:02 · 2980 阅读 · 0 评论 -
文件过滤驱动实现目录重定向(一)
By Fanxiushu 2015 转载或引用请注明原始作者谈论这个问题前,先看看一个情况:比如你上班的公司,可能有多个文件服务器,这些文件服务器通过FTP或者远程共享目录方式提供目录共享。而你可能会经常性的从一个文件服务器切换到另一个文件服务器上去找资料。而且如果是FTP的话,还得准备一个FTP客户端。这么折腾也许觉得有点麻烦,也许就会想:有没有办法让所有这些文件服务器原创 2015-02-08 13:54:45 · 6737 阅读 · 0 评论 -
网络数据包拦截之:修改TCP包内容时注意的问题
首先描述一种现象,曾经家里的ADSL宽带,当用IE浏览器浏览网页时候,不管你打开什么类型的网站,都会出现电信广告,或是嵌入到原来网页中或是弹出广告框,十分的讨厌。曾经天真的以为是每个网站都跟电信合作,在他们的网站代码里潜入了电信广告,其实不是这样,只要在任何一个网关路由设备里,拦截TCP数据包,这里的拦截是基于IP层数据包的拦截。分析TCP包里HTTP协议并在里边添加数据,即可实现原创 2013-02-28 23:53:10 · 20359 阅读 · 5 评论 -
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 评论 -
linux虚拟网卡驱动代码
linux平台实现虚拟网卡,在系统中模拟出一块虚拟的网卡出来,把发送到这块网卡的数据通过某种途径转发到应用层程序,由应用层程序负责处理这些数据。 linux内核中有 TUN/TAP,其实已经实现了这个功能,只要 open(“/dev/net/tun",O_RDWR); (2.6内核),然后ioctl创建一个虚拟网卡,系统中就会出现 名字叫 TUN或者TAP的网卡,接着就可以调用原创 2013-01-21 17:35:38 · 7549 阅读 · 12 评论 -
桥接虚拟局域网和真实局域网到同一网段原理
接上一篇文章《虚拟局域网》。虚拟局域网底层”物理链路“,其实就是建立在真实网卡TCP/UDP协议上,通过UDP来转发虚拟网卡产生的以太网卡数据包,而上层的应用程序看到的,就跟在一个真实的网络里通讯一样。但是虚拟局域网也就只局限于在本网络里通讯,等于是一个封闭的网络一样。他们要跟真实局域网建立联系,该怎么做呢,上篇文章说道可以借助NAT, 也可以借助路由让不同网段的虚拟网络和原创 2013-01-21 23:29:21 · 5554 阅读 · 4 评论 -
红黑树算法源代码(摘自linux内核代码)
在应用层开发中,STL标准库的map容器内部实现就是红黑树算法, 既然有现成的,可能大部分人都不会写红黑树算法来管理复杂的数据结构, 不过基于许多的考虑,有时很需要自己实现原始的红黑树数据结构。比如做嵌入式开发,需要效率高的执行代码; 比如在做庞大的服务器,需要高效的处理各种复杂的数据结构,比如在驱动开发中,需要管理复杂的数据结构,这种情况除了自己实现红黑树之外没别的办法。原创 2013-01-14 16:01:31 · 1924 阅读 · 0 评论 -
NAT之windows实现二
中间驱动所做的事情:中间驱动把从上层驱动传递下来的数据包发到应用程序,应用程序处理之后再负责发回到中间驱动,中间驱动再接着发到网卡中间驱动接收从网卡传递上来的数据包,把它发送到应用层,应用程序处理之后再发回到中间驱动,中间驱动再接着投递给上层驱动。NDIS中间驱动原理什么的,就不在这里赘述了,对驱动开发了解的人都能清楚。这里比较关键一点是这些数据包的IO处理的一些算法,为了尽可能的原创 2013-01-14 15:59:26 · 2167 阅读 · 2 评论 -
NAT之windows平台实现一
这里介绍的是纯软件上,在windows平台下,利用NDIS中间驱动实现NAT。在其他平台实现NAT,也是同样的原理,唯一不同的是对网卡数据包的读取和写入操作是与平台相关的。而叫人蛋疼的是,对windows 平台下的直接操作网卡的实现是各种平台中最复杂的。比如Linux下,内核态下设置简单的钩子函数即可拦截网卡数据包,vxworks也跟Linux类似的机制。而windows平原创 2013-01-14 15:58:06 · 6638 阅读 · 1 评论 -
NAT(Network Address Translate)原理
NAT,网络地址翻译。可能大家并不知道是啥玩意,但是它就在你的身边默默的做着贡献。只是大家没留意到而已。比如公司局域网里,要上互联网,需要NAT,网吧里需要NAT,家庭网络为了多台机器能上网,需要NAT校园网也需要NAT,公共场所免费WIFI,也有NAT,一个拥有很多用户的ISP服务商,也需要NAT技术.NAT基本上是无处不在。有些是作为独立软件实现NAT功能,原创 2013-01-13 20:34:10 · 1759 阅读 · 0 评论 -
Windows 平台之读写锁
//windows平台下使用临界段实现的读写锁功能,代码短小简洁。导出函数名使用POSIX函数名///By Fanxiushu 2012#pragma once#ifdef WIN32#include #include #include /////读写锁struct rwlock{private: CRITICAL_SECTION原创 2013-01-13 20:32:08 · 1182 阅读 · 0 评论 -
vxworks系统DCOM库修改
一直困扰的一个问题,当开发OPC程序时候(OPC使用DCOM作为基础通讯组件),如果vxworks突然断线或者系统崩溃,如果想再次连接windows端的OPCServer, 或者windows端的OPCClient想再次连接vxworks的OPCServer,结果都会连不上,基本上要等很长时间,至少6,7分钟以上,才能让你重连成功。作为一个产品,系统崩溃或者网络断线这种非正常关闭,原创 2013-01-12 19:45:10 · 1958 阅读 · 6 评论 -
海思开发板wince平台实现照相机功能
如下是一年多前某个项目的开发经验: 平台 Hi3611 win mobile6,视频数据通过camera采集,camera驱动是别人做好的,采集的是 640*480 高清的VGA视频。音频数据通过普通的话筒采集, 2声道,44100采样率,16位。使用DirectShow和DirectDraw技术。DirectDraw主要是在预览中发挥作用,DirectShow原创 2013-03-03 22:41:49 · 1520 阅读 · 0 评论 -
海量数据处理
By Fanxiushu ,引用和转载请注明原作者海量日志分析收费平台。这是多年前负责的一个项目,因为数据量十分的庞大,处理办法也比较的复杂。现在写出来,希望对正在做这方面的事情的朋友有点帮助。非常有幸能负责这个项目的分析处理。因为可以从处理这些庞大的数据中,体会到挑战的乐趣;更加考验自己的技术水平和经验跟能力。日志分析,就是对 IIS,apache等浏览器产生的标准日志文原创 2013-04-25 23:50:03 · 1219 阅读 · 0 评论 -
WDM Filter 驱动的一点基础知识
By Fanxiushu ,引用和转载请注明原作者WDM Filter是一类驱动的总称,它把自己挂载到功能设备(FDO)之下或者之上,拦截所有的IRP,对这些IRP分析处理,从而达到过滤的目的。它跟 NT式过滤驱动都是一样的目的,比如前面文章讲到的TDI Filter驱动就是个标准的NT式过滤驱动,但是处理方式上稍微有些不同,主要区别在 WDM需要处理即插即用和电源上。这里主要原创 2013-04-22 14:30:08 · 6456 阅读 · 15 评论 -
TDI Filter 过滤驱动
By Fanxiushu 2013, 引用和转载请注明原作者为了让大家有兴趣阅读下去,举个正在使用的可能大家都比较熟悉的例子: 360 的安全卫士里,有个流量防火墙的功能,它可以监视每个进程的流量情况,可以限制上传下载速度,等等。他的驱动部分的就是一个 TDI Filter 驱动。TDI Filter ,这是个快被微软淘汰的驱动模式,但是为了兼容,又不得不使用的驱动。原创 2013-04-07 21:06:19 · 5531 阅读 · 10 评论