WDM驱动程序入门(3)——安装步骤
DDK分为98 DDK和2000 DDK两种,它们工作起来是大同小异的,不过有些驱动程序只能在2000 DDK中使用。由于Win98注定是一种即将被淘汰的操作系统了,所以我也不打算介绍如何在98 DDK中进行编译,以下的所有内容都是针对2000 DDK的。

·准备工作
1、确定你已经安装了Visual C++
2、安装2000 DDK
3、安装2000 DDK成功后,在“开始”->“程序”里应该有“Development Kits”->“Windows 2000 DDK”的项目。
(注意一定要先安装好VC,然后才安装DDK,这个顺序决不能颠倒!!)
4、保证DDKROOT环境变量设置为Windows 2000 DDK的基目录,如果不是的话,请在控制面板“系统”属性的“高级”标签环境变量编辑器中设置好这个环境变量。

·编写必需的文件
编译WDM程序的时候,有两个文件是必须要有的,它们是:
1、makefile
(这个是什么啊?你可能会问。)对于比较年轻的程序员来说,有可能没有见过这个文件吧。其实在VC这些IDE出现之前,我们都必须使用makefile来确定项目中哪些文件需要重新编译,现在的IDE都把这个工作自动做好了。(Well……其实这样也好。)
我们要做的工作很简单,就是提供这样一个文件,它的内容是:

#
# 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

正如它所述,不要编辑这个文件。事实上每个WDM程序所需要的makefile的内容都是一样的,也就是说,我们只需要简单地copy一个makefile到新的项目中就可以了。(呵呵,是不是很方便呢?)

2、Sources

TARGETNAME=HelloWDM
TARGETTYPE=DRIVER
DRIVERTYPE=WDM
TARGETPATH=OBJ

INCLUDES=$(BASEDIR)/inc;/
         $(BASEDIR)/inc/ddk;/

TARGETLIBS=$(BASEDIR)/lib/*/free/usbd.lib/

SOURCES=HelloWDM.cpp/

这个文件指定了驱动程序目标名是HelloWDM.sys,是一个WDM驱动程序,生成的文件存放在OBJ目录中。值得注意的是,“=”前后不能有空格,否则编译的时候会出错。

·开始编译
娃哈哈,前面罗罗嗦嗦讲了一大堆,现在终于到重点了。WDM程序的编译过程比较特殊,它不是在VC里面按F7来编译的(尽管你可以通过设置来达到这一目的),而是通过一个DDK实用工具build来完成。下面我们来讲讲具体步骤:
1、“Debug”版的生成
首先,我们假设你的源代码放在D:/HelloWDM里面。请跟着以下步骤:

“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment”

屏幕将显示:(有“回车”的那行是需要读者你亲自打进去的)

New or updated MSVC detected.  Updating DDK environment….

Setting environment for using Microsoft Visual C++ tools.
Starting dirs creation…Completed.

D:/NTDDK>cd/HelloWDM    (回车)

D:/HelloWDM>build    (回车)

如果源代码没有错误的话,生成的HelloWDM.sys将存放在objchk/i386目录中。

2、“Release”版的生成
请跟着以下步骤:

“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Free Build Environment”

随后的步骤跟“Debug”版相同,不同的是生成的HelloWDM.sys将存放在objfre/i386目录中。

·安装
如果前面的编译过程没有错误的话,现在我们应该已经得到了一个HelloWDM.sys文件,假设它是放在D:/HelloWDM/objfre/i386中。

我们还要干什么呢?…………对啦,就是安装它!不然辛辛苦苦编译出来有什么用?

安装WDM驱动程序可以用两种方法,一种是利用注册表,还有一种是利用INF文件。我们一般是采用INF文件(这是微软推荐的)。INF文件可以在 WINNT/INF 目录中找到很多。为了顺利安装,我在这里先给出 HelloWDM 所需要的 HelloWDM.INF 文件:

;; The Win2K DDK documentation contains an excellent INF reference.

;--------- Version Section ---------------------------------------------------

[Version]
Signature="$CHICAGO$"
Provider=LC_Device
DriverVer=8/21/2002,3.0.0.3

; If device fits one of the standard classes, use the name and GUID here,
; otherwise create your own device class and GUID as this example shows.

Class=Unknown
ClassGUID={ff646f80-8def-11d2-9449-00105a075f6b}

;--------- SourceDiskNames and SourceDiskFiles Section -----------------------

; These sections identify source disks and files for installation. They are
; shown here as an example, but commented out.

[SourceDisksNames]
1 = "HelloWDM",Disk1,,

[SourceDisksFiles]
HelloWDM.sys = 1,objfre/i386,

;--------- ClassInstall/ClassInstall32 Section -------------------------------

; Not necessary if using a standard class

; 9X Style
[ClassInstall]
Addreg=Class_AddReg

; NT Style
[ClassInstall32]
Addreg=Class_AddReg

[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,Icon,,"-5"

;--------- DestinationDirs Section -------------------------------------------

[DestinationDirs]
YouMark_Files_Driver = 10,System32/Drivers

;--------- Manufacturer and Models Sections ----------------------------------

[Manufacturer]
%MfgName%=Mfg0

[Mfg0]

; PCI hardware Ids use the form
; PCI/VEN_aaaa&DEV_bbbb&SUBSYS_cccccccc&REV_dd
;改成你自己的ID
%DeviceDesc%=YouMark_DDI, PCI/VEN_9999&DEV_9999

;---------- DDInstall Sections -----------------------------------------------
; --------- Windows 9X -----------------

; Experimentation has shown that DDInstall root names greater than 19 characters
; cause problems in Windows 98

[YouMark_DDI]
CopyFiles=YouMark_Files_Driver
AddReg=YouMark_9X_AddReg

[YouMark_9X_AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,HelloWDM.sys
HKR, "Parameters", "BreakOnEntry", 0x00010001, 0

; --------- Windows NT -----------------

[YouMark_DDI.NT]
CopyFiles=YouMark_Files_Driver
AddReg=YouMark_NT_AddReg

[YouMark_DDI.NT.Services]
Addservice = HelloWDM, 0x00000002, YouMark_AddService

[YouMark_AddService]
DisplayName = %SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%/System32/Drivers/HelloWDM.sys

[YouMark_NT_AddReg]
HKLM, "System/CurrentControlSet/Services/HelloWDM/Parameters",/
"BreakOnEntry", 0x00010001, 0

; --------- Files (common) -------------

[YouMark_Files_Driver]
HelloWDM.sys

;--------- Strings Section ---------------------------------------------------

[Strings]
ProviderName="Flying L Co.,Ltd."
MfgName="LC Soft"
DeviceDesc="Hello World WDM!"
DeviceClassName="LC_Device"
SvcDesc="???"

注意它可以同时在Win98或者Win2000中使用(系统会通过这个INF文件里面的字段名称,自动选择适合当前系统的安装方法的)。由于INF文件的各个字段含义比较复杂,限于篇幅,我在这里就不详细讲解了,请读者自行参阅有关的文章或者书籍。

准备好这个 HelloWDM.INF 文件后,让我们打开控制面板,双击“添加/删除硬件”,选择“添加/排除设备故障”->“添加新设备”->“否,我想从列表选择硬件”->“其它设备”->“从磁盘安装”,选择 HelloWDM.INF 所在的路径,然后安装。

当安装完成后,系统就会添加上你写好的驱动程序了。(可以在“设备管理器”中查看到)。然后重启电脑,这个驱动程序就投入使用啦。

WDM驱动程序入门(3)——安装步骤相关推荐

  1. WDM驱动程序入门(1)-Hello WDM

    WDM驱动程序入门(1)-Hello WDM     WDM驱动程序是一种很新的东西,相信很多人都跟我一样,对它很感兴趣,但是又找不到学习的切入点.究其原因,还是因为WDM是一种非常"死板板 ...

  2. WDM驱动程序入门(很详细)

    WDM驱动程序是一种很新的东西,相信很多人都跟我一样,对它很感兴趣,但是又找不到学习的切入点.究其原因,还是因为WDM是一种非常"死板板"的程序,它一运行就是工作在系统的底层RIN ...

  3. win7如何安装无线网卡驱动程序?具体安装步骤

    win7如何安装无线网卡驱动程序?电脑安装无线网卡驱动后,就能帮助用户快速连接wifi,很多用户还不知道如何操作吧,下面就来看看小编带来的win7安装无线网卡驱动的方法介绍. win7如何安装无线网卡 ...

  4. python软件安装步骤-一篇非常棒的安装Python及爬虫入门博文!

    一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) ***部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据挖掘? 3.大数据和数据挖掘的区别? 1.大数据(B ...

  5. 从零入门IDEA(二)Intellij IDEA软件安装:软件版本、安装环境需求、安装步骤

    第一章.简介 本文将从以入门的方式介绍intellij idea这款软件的Intellij IDEA软件安装,主要包括: intellij IDEA的软件版本. intellij IDEA的安装环境. ...

  6. 计算机安装Hp1005打印机,如何安装hp1005打印机驱动程序_安装步骤是什么

    在许多打印机品牌中,HP品牌对消费者的影响很大. 对于消费者而言,购买打印机时,HP打印机通常成为一致的选择. 如果希望打印机正常工作,则必须安装打印机驱动程序. 如何安装hp1005打印机驱动程序? ...

  7. 磊科linux无线网卡驱动安装步骤,磊科NW336无线网卡驱动程序安装步骤

    对于很多小伙伴来说,他们想要使用电脑设备开设无线网络供其他设备使用,但却没有合适的网卡驱动程序.接下来,为大家介绍一款好用的网卡驱动程序:磊科NW336无线网卡驱动程序,将程序的安装步骤描述如下: 1 ...

  8. 《SolidCAM+SolidWorks 2014中文版数控加工从入门到精通》——1.2 SolidCAM安装步骤

    本节书摘来自异步社区<SolidCAM+SolidWorks 2014中文版数控加工从入门到精通>一书中的第1章,第1.2节,作者:赵罘 , 杨晓晋 , 刘玥著,更多章节内容可以访问云栖社 ...

  9. S7-PLCSIM Advanced V4.0安装步骤和使用入门

    S7-PLCSIM Advanced V4.0安装步骤和使用入门 如下图所示,大家可以在官网上下载安装包, 在安装包中点击"Start.exe"开始安装,如下图所示,如果这时弹出窗 ...

最新文章

  1. iOS 10 个实用小技巧(总有你不知道的和你会用到的)
  2. 用Tableau画3D模型之二(提高篇)
  3. Android6.0源码分析—— Zygote进程分析(补充)
  4. GUI动画演示java_java – 使用JFrame的简单GUI动画
  5. volatile关键字有什么用
  6. C/C++ select fd_set解释
  7. c语言的时间函数的介绍,c语言中时间函数介绍
  8. 学python用linux_用树莓派学习Linux及Python真的高效吗?
  9. TJA1101汽车网卡调试
  10. android root 升级失败怎么办,手机root失败怎么办 安卓手机root失败原因分析
  11. java物联网第三天 智慧农业物联网
  12. fullCalendar获取某一天的日程(event)
  13. 搜集源码之github搜索语法,网盘搜索,搜索引擎等
  14. traceroute的工作原理
  15. hexo博客中添加categories分类
  16. 怎样把计算机扫描放到桌面,电脑扫描文件怎么弄【面对方法】
  17. Linux - top命令详解
  18. C语言牛牛手里有一个字符串A,程序设计语言C实验卡学生.doc
  19. golang ide 环境搭建_golang 开发环境 配置 go语言 liteIDE
  20. Python Pandas 导入dta文件的方法

热门文章

  1. 机器学习笔记(十六)——EM算法概述
  2. linux系统it固定资产管理系统包_固定资产管理系统单机版有哪些特点?
  3. 手机能写python代码_用手机写Python代码!可以随时随地学Python!
  4. centos6安装mysql并远程连接_阿里云服务器上安装redis并实现远程连接
  5. 基于图查询系统的图计算引擎
  6. 作者:黄伟(1964-),男,博士,西安交通大学管理学院教授、博士生导师、院长...
  7. centos7 关闭防火墙和selinux
  8. ant design form表单的时间处理
  9. 【对讲机的那点事】Tx/Rx系统中的非线性失真
  10. Shell脚本监控专线Network并SendEmail报警