fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
阅读:4213回复:18

贴一个驱动编写库和一些驱动开发的技巧

楼主#
更多 发布于:2007-07-07 22:15
前言
在工作中,经常发现同一类的驱动,总是大同小异的改好多次,只是为了在不同的产品里面使用,比如换个设备名,每次改动都要重新整理思路(记性不好,有时还得从头看看文档),出于对多次对脑细胞的拯救,所以花了点时间,整理了一下部分代码,形成了一套库。

功能
在这套库中,实现了以下功能:
1。CDeviceQueue, 设备读写队列,应用层向驱动发出读数据请求,如果设备里面有数据,则直接拷贝数据并完成请求,如果没有,则将读请求挂起,等待数据,同样,当有数据到达设备的时候,如果没有读请求,则将数据缓存。
2。虚拟网卡框架
3。协议驱动拦截框架(就是以前gjpland说的fake protocol原理的实现,功能就不用说了)
。。。
其他看driver.h吧,做着玩得东西,也没什么文档。

例子
1。虚拟网卡,位于samples\NetVMini目录下。
2。协议驱动拦截,位于samples\ipfwdrv目录下。
其他例子,有待补充。

编译
库是用vista ddk编译的,也就是WDK 6000 for Windows 2000 x86 Build Environment,包括例子,这个DDK我个人觉得是到目前为止用的最舒服的ddk了,没有vc都可以编译。

版权
有于源代码涉及到一些版权问题,所以不能公开,请大家谅解。
另外,用了以后产生什么不当后果并且造成了什么经济损失,本人也是不负责的。

闲话不多说,上附件了。
附件名称/大小 下载次数 最后更新
ToolKit.rar (320KB)  480 2007-07-07 22:15

最新喜欢:

sswatersswate... haifengjlhaifen...
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2007-07-07 22:17
如果大家觉得库还有点用呢,真要来点赞扬,我还是虚荣的,如果觉得很垃圾,就不用往我脑袋上板砖了,我有自知之明。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
板凳#
发布于:2007-07-07 22:29
在用ddk写sources文件,生成一个静态库的时候,如果很多个源文件,并且这些源文件可以归纳为几类,比如有些源文件是关于ndis的,有些是关于文件系统的,有些是内核hook的,ddk默认的sources文件貌似是假设所有的文件在同一个目录下,这样如果大量的文件在同一个目录下,看起来就不那么直观,经过对ddk的一些.mak文件的分析,找到一种方法,可以做到分到不同目录,通过在sources文件里面增加一条规则:
{子目录名\}.文件扩展名(如c,cpp等){$(O)\}.obj::
    @type <<$(ECHO_RSP)
$(ECHO_CXX_MSG)
<<NOKEEP
    @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo"$(MAKEDIR)\$(O)/" $(USE_FC)
$(CXX_COMPILER_FLAGS: =
)
$<
<<NOKEEP

就可以了,有些扩展名可能规则不一定一样,可以去ddk的mak文件里面找。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2007-07-07 22:31
附件在这
附件名称/大小 下载次数 最后更新
Makefile.rar (2KB)  131 2007-07-07 22:31
zhanliang
驱动牛犊
驱动牛犊
  • 注册日期2007-04-20
  • 最后登录2011-11-05
  • 粉丝0
  • 关注0
  • 积分260分
  • 威望27点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-09 10:50
大哥,你太牛了啊
真的很需要像你这种为我们新手服务的大侠们
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-07-12 17:53
强人,谢谢啦!
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
GoodOnline
驱动小牛
驱动小牛
  • 注册日期2007-04-11
  • 最后登录2009-02-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望204点
  • 贡献值0点
  • 好评度191点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-17 16:20
不开源的东西怎么敢用啊(MS除外),不会获得推广.  搂住倒不如写个文章总结下编写库的过程和经验.
ns_lidy
驱动牛犊
驱动牛犊
  • 注册日期2007-03-29
  • 最后登录2008-03-21
  • 粉丝0
  • 关注0
  • 积分310分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-11-01 23:47
好人啊
xicao
驱动牛犊
驱动牛犊
  • 注册日期2006-02-25
  • 最后登录2017-07-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望131点
  • 贡献值0点
  • 好评度30点
  • 原创分1分
  • 专家分0分
  • 社区居民
8楼#
发布于:2008-03-02 00:26
不错,下个,以后备用
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
9楼#
发布于:2008-03-17 17:49
lib比pe文件更好F5
没有战争就没有进步 X3工作组 为您提供最好的军火
ns_lidy
驱动牛犊
驱动牛犊
  • 注册日期2007-03-29
  • 最后登录2008-03-21
  • 粉丝0
  • 关注0
  • 积分310分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-03-21 08:36
学习下
imsong
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2009-11-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望15点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-03-28 23:07
谢谢提供
steven_bj
驱动牛犊
驱动牛犊
  • 注册日期2006-05-26
  • 最后登录2009-07-28
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-12-22 14:05
引用第6楼GoodOnline于2007-07-17 16:20发表的  :
不开源的东西怎么敢用啊(MS除外),不会获得推广.  搂住倒不如写个文章总结下编写库的过程和经验.


赞同6楼的这位同志。
jl2004
驱动小牛
驱动小牛
  • 注册日期2007-04-10
  • 最后登录2011-02-22
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望276点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2009-01-14 09:18
不开源,
确实不敢用,
哈哈,
LZ还是开源吧,期待中....
向前,向前,向前....
zhangguangkai
驱动牛犊
驱动牛犊
  • 注册日期2008-09-06
  • 最后登录2010-10-30
  • 粉丝0
  • 关注0
  • 积分39分
  • 威望336点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2009-03-14 16:07
写一个dir文件可以解决你说的文件必须在一个目录的问题
blue06
驱动牛犊
驱动牛犊
  • 注册日期2006-08-21
  • 最后登录2020-11-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望117点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2009-05-06 10:57
谢谢楼主!
    我用vs2008+ddkwizard+win2003DDK开发驱动,用你说的那个规则可以把源文件放在不同的目录,
但是如果采用vs2008+ddkwizard+vistaWdk,用你说的那个规则,则会出现编译出错。有没有好的方法
解决采用vs2008+ddkwizard+vistaWdk,把源文件组织在不同目录,又可以实现编译呢?
evergreen7
驱动牛犊
驱动牛犊
  • 注册日期2009-03-22
  • 最后登录2010-04-02
  • 粉丝1
  • 关注0
  • 积分43分
  • 威望431点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2009-05-12 23:53
感谢楼主的分享
sneeq
驱动牛犊
驱动牛犊
  • 注册日期2009-03-17
  • 最后登录2009-07-14
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2009-05-13 14:57
谢谢楼主的分享!
学习是一种乐趣!
lifei6671
驱动牛犊
驱动牛犊
  • 注册日期2010-01-05
  • 最后登录2010-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2010-01-06 20:32
顶一下!都不知道该怎么回复了!
游客

返回顶部