驱动入门系列---驱动级键盘记录器(一)

驱动入门系列---驱动级键盘记录器(一)  

走过了VC++到驱动开发,回头看,才发现真是迂回曲折。今天,应一个朋友之邀,结合一个完整的例子,写一点驱动入门的东西,希望对初学者能有所帮助。为了更深入的学习驱动开发,我将用DDK 和Compuware DriverStudio V3.2两种方法来构建这个例子。

我也只是入门,理解也未必正确,有错误的地方望多多指教。有问题欢迎与我联系。邮箱为sun201201@126.com, QQ为35777618。对于这本教程,您可以免费获得。如果需要转载,请保证其完整性。另外,不得剽窃任何内容作为任何赢利出版物的全部或者部分。

一. 驱动开发环境搭建

系统平台:WinXP

开发环境:VC6.0 + XPDDK

 1. 序言

过去驱动程序的编译、调试都是在CMD命令行进行的,这多少有些不便。对此,网上有不少朋友总结了在VC6.0的IDE环境下进行驱动程序的开发,大大方便了用DDK进行驱动开发的步骤,这里我再来详细说一下用VC6.0来集成驱动的开发环境,至于命令行的方式,有兴趣的朋友可以参看我的另一篇文章: 

2. 详细步骤

2.1 创建一个目录DriverDev(目录名随意),作为你开发驱动的大本营然后添加两个用户环境变量,一个是DDKROOT,他的值应该是你所安装DDK的根目录。(比如在安装DDK时安装到了d:\WINDDK\2600,那么 DDKROOT的值应该为d:\WINDDK\2600),另外一个变量是WORKPATH,这个变量的值就应该是你第一步所创建的驱动工程目录的路径。(若按本文,WORKPATH的值应该是D:\DriverDevelop),这两个变量会在我们接下来的工程配置中要用到,当然既然是变量,他们的名称是随你的喜欢了

2.2  在D:\DriverDevelop下创建一个名称为DIRS的无扩展名的文件。用记事本打开它,写上 DIRS=Hello。Hello是你的驱动文件所在的文件夹名. 在该目录(D:\DriverDevelop\Hello)下创建一个批处理文件MakeDrvr.bat,内容如下:

@echo off

if "%1"=="" goto usage1
       if "%3"=="" goto usage2
       if not exist %1\bin\setenv.bat goto usage3


       call %1\BIN\setenv %1 %4

%2
       cd %3  去掉,这里有问题,否则提示找不到文件
       build -b -w %5 %6 %7 %8
       goto ok

:usage1
       echo Error: the first parameter is NULL!
       goto exit

:usage2
       echo Error: the third parameter is NULL! 
       goto exit

:usage3
        echo Error: %1\bin\setenv.bat not exist!
        goto exit

:ok
       echo MakeDriver %1 %2 %3 %4
       :exit

简要说明:该批处理首先对传递的参数作一些检查,然后调用ddk的setenv命令设置环境变量,然后改变目录为源程序所在驱动器和目录,并最后调用build,-b保证显示完全的错误信息,-w保证在屏幕上输出警告,在vc ide里的output窗口中可以看到这些错误和警告。

2.3. 建立一个空白Makefile工程

选File的new菜单项,然后选project栏的makefile,然后输入路径,一路next下去即可,visual studio提供两种配置win32 debug和win32 release. 如下图:

驱动入门系列---驱动级键盘记录器(一) - sun201201 - 西北望,射天狼

2.4. 修改这两种配置

选project的settings菜单项win32 debug:
       在Build Command Line一栏填入MakeDriver %DDKROOT% E: %WORKPATH% CHECKED

这里要特别注意你工作的盘符,即E:,一定不能错,否则的话,会一直编译WDM库,而不编译你的程序
       在Rebuild all options一栏填入 -nmake /a
       在output file一栏填入与sources文件中的TARGETNAME相同的文件名,这里是Hello.sys

如下图:     

驱动入门系列---驱动级键盘记录器(一) - sun201201 - 西北望,射天狼
  win32 release: 
  选project的settings菜单项win32 Release:
       在Build Command Line一栏填入MakeDriver %DDKROOT% E: %WORKPATH% FREE
       在Rebuild all options一栏填入 -nmake /a
       在output file一栏填入与sources文件中的TARGETNAME相同的文件名,这里是Hello.sys 如下图:

驱动入门系列---驱动级键盘记录器(一) - sun201201 - 西北望,射天狼
       2.5. 添加源文件到工程

可以新建,也可以添加,这和普通的win32开发一样。注意DDK开发驱动程序需要用C语言,不要使用C++. 这里需要先添加一个KeyLog.h文件和KeyLog.cpp文件。文件内容以后再添加。

2.6. 添加资源文件

选Project的Add to Project菜单的New菜单项即可,如下图:

驱动入门系列---驱动级键盘记录器(一) - sun201201 - 西北望,射天狼

2.7. 把makefile文件放入源程序目录

makefile 无扩展名的文件,内容总是一样,也可以直接从DDK源代码那里拷贝过来一个,内容如下:

#
       # DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
       # file to this component.  This file merely indirects to the real make file
       # that is shared by all the driver components of the Windows NT DDK
       #

!INCLUDE $(NTMAKEENV)\makefile.def

2.8 创建一个sources文件,内容如下:

TARGETNAME=KeyLog    //这是要生成的驱动程序.sys文件的名字
       TARGETPATH=obj      //
       TARGETTYPE=DRIVER  //驱动程序的类型,一般不变 
        INCLUDES=$(DDKROOT)\inc; $(DDKROOT)\inc\DDK    //ddk包含文件路径,一般不变
        TARGETLIBS=$(DDK_LIB_PATH)\usbd.lib \ $(DDK_LIB_PATH)\ntoskrnl.lib
        SOURCES=KeyLog.c

2.9 至此,环境设置完毕,KeyLog.cpp 和 KeyLog.h 输入内容后,你可以按F7, build你的驱动程序了。

 

好了,今天就先到这里了,下次我将继续讲解驱动实现的详细内容。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值