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

返回顶部