驱动学习笔记1

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

1.winddk的下载安装
    下载个winddk对应的版本,安装。各种目录配置的原则上还是配置里面找到.h头文件和lib文件,已经复制到系统目录下的不用管,其他的配置一下路径。
    因为调用一个库函数的基本就是有一个头文件,,然后去找这个函数体本身。
2.第一个例子
    我从winddk的src里面找了一个例子,codeproject上找了一篇文章,不过感觉对于初学者来说,
第一个入门比较好的例子还是 <>的这个例子,对于部署设置描述比较详尽
,很容易运行起来。在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
 
 

你可能感兴趣的:(技术类,ddk,winddk,makefile,manager,build,windows)