天天看点

驱动学习笔记1

    以前也安装,抄写,编译了一些驱动了,不过还没有认真学习过驱动的写法。最近打算认真学习一下了,

1.winddk的下载安装

    下载个winddk对应的版本,安装。各种目录配置的原则上还是配置里面找到.h头文件和lib文件,已经复制到系统目录下的不用管,其他的配置一下路径。

    因为调用一个库函数的基本就是有一个头文件,,然后去找这个函数体本身。

2.第一个例子

    我从winddk的src里面找了一个例子,codeproject上找了一篇文章,不过感觉对于初学者来说,

第一个入门比较好的例子还是 <<Windows WDM驱动开发>>的这个例子,对于部署设置描述比较详尽

,很容易运行起来。在www.baidu.com中可以搜索到这个pdf,同时其中的例子wdm1可以在www.gougou.com

的搜索中找到,这里就不提供了。

    其中描述的相当详细了,按照那个过程就可以很容易的就可以把驱动编译,安装。这里只说两个我当时

理解不太好的地方,大多驱动中的例子CreateFile(symbolicpath,...).一开始我以为是在注册表中,注册表的如下

位置HKLM/SYSTEM/CurrentControlSet确实存着驱动信息,可以阅读  

http://www.osronline.com/ddkx/install/install-over_6e3r.htm

了解详细内容。

    不过对于symbolicpath,在windows中存在一个object manager管理这项信息,可以通过quickview这个工具软件查看相关信息.

在运行过后,我查看过其中信息,确实存在,不过存在的项在DosDeviceName下面

关于object manager可以阅读相关的

http://hi.baidu.com/%B7%B3%B2%BB%B7%B3/blog/item/e905b5d29a76ab33970a16e9.html

编译的基本要素

MAKEFILE --  windows一般只简单的指向ddk的编译文件

source   --  由于ddk的编译文件使用,制定要编译那些文件

    其他不和pdf中重复,这里简单说MakeDrvr的内容

    @echo off

 @echo DDK_DIR:%1

 @echo SRC_ROOT:%2

 @echo SRC_PATH:%3

 @echo -------------------------------

 if "%1"=="" goto usage

 if "%3"=="" goto usage

 if not exist %1/bin/setenv.bat

   goto usage call %1/bin/setenv %1 %4

  %2

  cd %3

  build -b -w -cef %5 %6 %7 %8 %9

  goto exit

  :usage echo usage MakeDrvr DDK_dir Driver_Drive Driver_Dir free/checked

  [build_options]

  echo eg MakeDrvr %%DDKROOT%% C: %%WDMBOOK%% free -cef

:exit

  它运行的是vc中build command line的-句话 MakeDrvr %DDKROOT%  %WDMBook%/wdm1/sys free

  %1= %DDKROOT% %2=c: %3 %4 作为1到4 也很清楚了

  整个bat文件可以认为只做了2件事,1.调用ddk目录下的setenv.bat设置环境,这个和从ddk下启用checked或

  free环境基本应该相同,2.用build命令进行编译,build会检查目录下的MAKEFILE文件,从而调用ddk中的make文件

  再从source取得需要编译的文件。

3.编译完成并安装之后就可以运行测试例子了

  调用例子驱动的2种方法

  1.CreateFile()

   第一参数可以用所以symbolic link中的设备名,前面加//Global或//.,也可以填例如

   c://windows//system32//drivers//example.sys这种直接路径,然后通过ReadFile和WriteFile进行读写。

  2.Service Control Manager

     通过建立一个service的形式运行,具体内容下次讲

  同时查看DbgPrint的输出需要用到DebugView这个工具,可以

需要用到的工具:ddk,vc,quickview,DebugView

继续阅读