驱动学习笔记(一)HelloWorld

从今天开始本人要记录下学习驱动的过程。主要目的是给自己以后提供复习的资料。
学习驱动的目的原因很多:一是没有办法,人家让学你就得学,不学就没有工作了,所以硬着头皮也要学。在此基础上给自己一个合理的安慰,那就是学习驱动的人不多,听说学好了也能赚很多钱,所以也给自己学习的动力。 

开始了。。。。。。。。。。。。

1。到网上查查人家是怎么学的,是怎么写的。找到应该看得书籍记录如下:


C程序设计》(第二版)                  清华大学出版社              谭浩强
Windows 2000内部揭密》          机械工业出版社             (美)Mark E.Russinovich著 詹剑锋等译
Microsoft Windows 驱动程序模型设计》 北京大学出版社          Microsoft公司
Windows 2000设备驱动程序设计指南》 机械工业出版社          [美]Art Baker,Jerry Lozano著 施诺等译
WINDOWS NT与WINDOWS 2000设备驱动及开发》 电子工业出版社 [美]Peter G.Viscarola等著 新智工作室译
WINDOWS WDM设备驱动程序开发指南》          机械工业出版社        [美]Chris Cant 译:孙义 马莉波 国雪飞
Windows设备驱动程序(VxD与WDM)开发实务》 电子工业出版社      武安河,周利莉
Windows 核心编程
LINUX设备驱动程序》(第二版)        中国电力出版社       ALESSANDRO RUBINI等著 魏永明等译
Microsoft Windows 2000驱动程序设计指南》(影印版)  北京大学出版社       Microsoft公司
VC++.NET开发驱动程序详解 ——Windows 2000/XP》   北京希望电子出版社           郭益昆
电子书如下:
Windows Driver Model》                       Walter Oney著  马少华译
驱动程序超级宝典
》                          翟洪涛
The Windows 2000 Device Driver Book》    英文版

绿色部分是正在看的
 

2。第一步资料已经差不多收集齐全了,那就开始看吧。在看的同时一定要动手写代码。那么我们就开始写第一个HelloWorld程序吧。

 

在写代码之前要把程序编译环境构建起来。
需要的环境:WinXP、WinXP DDK(上网下一个然后安装)
 
1). 新建一个hello.C文件,把如下代码复制进去。
#include <ntddk.h>
 
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
     DbgPrint(“Hello World!/n”)
     Return STATUS_SUCCESS;
}
 
2).       程序写完了,开始编译:
在你安装的WinXP DDK 的src文件夹下找一个makefile文件复制到你的程序目录里,然后再新建一个名叫sources的文件,这个文件指明了要编译那些文件和驱动类型。
Sources 文件格式如下

Targetname=hello;驱动名称;
TARGETPATH=obj;目标文件输出路径;
TARGETTYPE=DRIVER
SOURCES=hello.c/             指定将要用到的所有源文件,每个文件一行
            Hello2.c/          (如果有第二个文件)
            Hello3.c           (如果有第三个文件)

 
Sources文件写好了。开始编译。从开始菜单的Development Kits->Windows ddk 2006->BuildEnvironments-> Win XP Checked Build Environment 进入DOS模式。
然后从这里进入你的工作目录(hello.c所在的目录) ,然后键入build –c 命令。看看你的工作目录(hello.c所在的目录)是不是多了两个文件obj文件就是sources中TARGETPATH的值。还有objfre这个文件,里面会有一个.sys文件,这就是我们最终要的驱动文件。把这个.sys文件拷贝到系统目录下(具体是:system32/drivers/)
 
3).        驱动文件编译完成了,下面开始加载这个驱动。
需要在注册表中写个服务来加载这个驱动,
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services
在上面的目录下新建一项 名字叫hello
在hello中添加如下键值:
ImagePath=systam32/drivers/hello.sys        (类型是REG_EXPAND_SZ)
DisplayName=驱动名称(随便写)               (类型是REG _SZ)
ErrorControl=1                               (类型是REG_DWORD)
Start=3                                                                  (类型是REG_DWORD)
Type=1                                                                  (类型是REG_DWORD)
 
服务写好了以后,重启电脑!
 
4).现在开始启动服务了。
              这是就需要一个工具来观察驱动运行的结果,工具叫:Dbgview.exe
首先打开Dbgview.exe,然后运行cmd进入命令行,运行 net start hello,这时在Dbgview.exe中可以看到helloWorld。

Net start 命令详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值