DriverStudio指南(一)

来源:互联网 发布:网络电视连不上wifi 编辑:程序博客网 时间:2024/05/16 04:40
一、简介
....DriverWorks 通过提供强大并且先进的代码生成向导——DriverWizard,还有库和例子中成千上万行经过严格测试的代码,简化了设备驱动程序的开发。
....Windows NT 和 WDM 驱动程序接口为面向对象方法的应用提供了良好的条件。DriverWorks 充分利用操作系统面向对象的优良特性,与微软的 DDK 相比,它为设计基于 Windows NT 和 WDM(驱动程序设计模型)的驱动程序提供了更加友好的方式。使用 Driverworks,设计人员能以更快的速度开发 NT 和 WDM 驱动程序。在大多数情况下,DriverWorks 函数库的使用,可以大大减少驱动程序的代码长度。利用这些精心设计的函数,你几乎可以完成所有的工作。当然,DDK的C语言级的API函数也是可用的。
....Windows NT 设备驱动程序能运行在 Windows NT 或 Windows 2000 上;而 WDM 设备驱动程序能在 Windows 98 , Windows Me ,Windows 2000 ,和 Windows XP 上运行
....DriverStudio把那些每个驱动程序都需要的代码都封装成类库。库代码自动地处理例行的操作,这极大地简小了任务的复杂度。而且,C++编译器提供了ANSI C 所不具备的优点:包括改进的类型安全检查,内连函数优化,以及更好的代码组织。
DriverStudio对Microsoft Developer Studio 的支持远不止用 DriverWizard 构造一个新工程这么简单。DriverWorks 提供了完整的和Microsoft Developer Studio 相似的开发环境,包括 checked 和 free 编译环境,相似的代码编辑器,错误代码定位,以及类浏览器。
....安装成功后,在VC环境中会集成DS的开发工具:
 
....在你利用DriverWorks开始工作之前,你必须编译需要的库文件。你可以在Microsoft Visual Studio 环境中编译DS的库文件。
....下面介绍怎样在VC环境中编译库即打开位于
/Compuware/DriverStudio/DriverWorks/source/VdwLibs.dsw的工程文件。
....如果你想用命令行(不是在Microsoft Visual Studio中)编译一个简单的驱动程序例子,你必须先运行两个批处理文件(后缀为.bat的文件),这两个文件在DDk和Visual C++中。你也可以简单的通过运行开始菜单 程序/Development kits/Windows 2000 DDK 中的 Checked Build Environment 或 Free Build Enviroment 来完成此操作。第一个批处理文件是 SETENV.BAT,并且它要求2个参数:第一个是DDK 的根目录,第二个是"free" 或 "checked"。第二个参数告诉编译系统是否在驱动程序中加入调试信息。第二个批处理文件是VCVARS32.BAT,它为编译器建立路径。
成功编译VdwLibs.dsw需要三个开发工具及其相应SP版本的对应,如:
Visual C++ 6.0 (SP6) + Windows DDK XP 3.0 (SP1) +Windows XP (SP2)


二、向导
1.启动Driverwizard,填写工程名,选择路径,以及编译平台。
 
2.选择驱动程序工程的种类,最基本的为两种,即NT4.0和WDM。
 
3.选择驱动程序的类型,如功能型,过滤型,数据流型。
 
4.选择硬件设备所支持的总线类型,这里选择PCI总线类型,需要填写VendorID,DeviceID,以及SubsystemID,RevisionID,这些信息可以利用PCITREE工具软件查看。
 
5.选择所生成的驱动程序文件中的类名和驱动程序文件名。
 
6.选择驱动程序支持的功能项,如典型的Read,Write,Flush等。
 
7.选择I/O请求IRP处理的方式。常用的为三种方式:
1)不进行排队队列处理
2)由驱动程序管理的StartIO排队队列处理
3)由系统管理的StartIO排队队列处理
若选择进行排队队列处理,还要进一步选择读写请求是否分别进行排队队列处理
 
8.设置设备启动时从注册表中装载的标识参数,当设备启动执行DriverEntry例程时,将从注册表中装载这里所设置的标识参数。
 
9.选择设备文件中的类名和接口类型,应用程序打开设备的方式,读写存取方式和电源管理等。
 
10.定义应用程序调用DeviceIoControl函数对WDM驱动程序通信的控制命令。
 
11.选择是否生成一个W32控制台的应用程序用于测试,还可选择Debug跟踪代码等。

 
12.之后生成的代码,即可编译,如果提示某个m_变量没有定义,根据提示,改为m_MemRange,m_IoRange,m_Intr即可。
 
原创粉丝点击