驱动开发
文章平均质量分 55
老马何以识途
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
过滤驱动开发笔记(2)
NDIS确实挺复杂,找到了一篇比较完整的资料,也收集了别人的一些心得。虽然算是有些了解,但该怎么做,还是一头雾水。后来终于知道,原来Windows 2003 DDK有一套源代码叫Passthru,已经把框架搭好了。刚开始有个概念一直搞不清楚:底层面向连接和面向无连接。但是很多实际经验的文章都没提到这个差别,Passthru中也没有实现DDK帮助中提到的面向连接的函数。现在明白了,以太网、FDD原创 2010-01-12 14:50:00 · 593 阅读 · 0 评论 -
过滤驱动开发笔记(5)
驱动程序是内核程序,通常的一个错误,都可能立即招致蓝屏。很快我也遇到了。由于调试困难,就想用日志来跟踪,但是写完保存文件的程序后,一调用马上蓝屏。改代码、查资料,发现可能跟IRQL有关:ZwCreateFile只能在IRQL为PASSIVE_LEVEL调用,而我调用的地方IRQL是DISPATCH_LEVEL。改用线程方式,文件出来了。高兴没多久,蓝屏再次出现,但现在没那么频繁。于是采原创 2010-01-20 17:53:00 · 595 阅读 · 0 评论 -
过滤驱动开发笔记(1)
最近开始研究数据包的过滤了。我接手的是用filter-hook方式开发的一套程序,但是逐渐发现了问题。首先是某些防火墙,比如金山防火墙就跟这套程序有冲突,多数情况下过滤会失效,后来确定是因为filter-hook的机制问题:以独占方式注册回调函数,难怪;接着Windows Vista发布了,发现程序又挂掉了,想过好几个原因,比如数字签名,比如驱动打开权限不够,都否决了,最后google发现,Vis原创 2010-01-07 10:49:00 · 472 阅读 · 0 评论 -
过滤驱动开发笔记(3)
ProtocolReceivePacket这个函数花了不少时间研究,部分资料中提到这个函数可实现多包接收,但我认为它仅仅是可以接收完整数据包而已。理由有:1.它的参数是PNDIS_PACKET,即单个数据包,而这个结构并没有链表的特征。发送多个数据包的函数MiniportSendPackets,不仅函数名带复数,参数也是PPNDIS_PACKET,明显是一个数据包数组。从开发风格的同一性来看,原创 2010-01-12 15:16:00 · 684 阅读 · 0 评论 -
过滤驱动开发笔记(4)
资料看差不多了,开始动手改造Passthru。发布的软件不能还叫Passthru吧,首先要改名。有几个地方需要动的:1.编译目标文件,在sources文件中定义,改掉TARGETNAME即可。2.目标文件变了,安装也要变,于是修改netsf.inf和netsf_m.inf,把Passthru全部改掉。3.应用层调用也要改改,这就涉及到程序了,在passthru.c中进行修改。编原创 2010-01-13 11:21:00 · 747 阅读 · 0 评论
分享