接口驱动程序开发(上)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8
第二步: 第二步: 安装2000DDK(Driver Development Kits)。 安装 ( )。 注意: 注意: 1)如果本地机的操作系统为 )如果本地机的操作系统为Windows2000 请确认已经 安装了Windows SevicePack1或Windows SevicePack2 安装了 或 在安装DDK的时候请选择完全安装。 的时候请选择完全安装。 在安装 的时候请选择完全安装 2)安装中,不需要安装 )安装中,不需要安装64BIT IA64Binaries 3)安装好后,对于 )安装好后,对于2000DDK不需要手动配置环境变量 不需要手动配置环境变量 只需在开始菜单中点击Checked Build Envirment 则 ,只需在开始菜单中点击 DDK会自动调用 会自动调用setenv配置环境变量,并监测相应的 配置环境变量, 会自动调用 配置环境变量 SDK以及 以及Visual Studio IDE 以及
软件接口与 Windows98/2000/XP驱动程序编写方法 驱动程序编写方法
1
1. 驱动程序的开发环境
对于VxD的开发,需要的开发环境是: 的开发,需要的开发环境是: 对于 的开发 • Visual C++ 5.0/6.0 • Windosw 95DDK 如果想加快开发步骤,建议使用第三方的VToolsD开 如果想加快开发步骤,建议使用第三方的 开 发工具,它将DDK的东西全部封装成 的东西全部封装成C++的类,可 的类, 发工具,它将 的东西全部封装成 的类 以直接用Visual C++编写程序,而无须使用汇编。而 编写程序, 以直接用 编写程序 而无须使用汇编。 能够方便快速地建立VxD程序 且它提供的 QuickVxd能够方便快速地建立 能够方便快速地建立 程序 的框架。 的框架。
7
安装步骤: 安装步骤: 在安装DriverWorks之前,首先要保证你的计算机 之前, 在安装 之前 上已经安装了Microsoft Visual C++以及相应针对 上已经安装了 以及相应针对 Windows NT 或WDM的DDK的正确版本。 所有这些 的 的正确版本。 的正确版本 包括DriverStudio的安装都必须以系统管理员身份启动 包括 的安装都必须以系统管理员身份启动 系统。并且要按照下面的顺序安装。 系统。并且要按照下面的顺序安装。 第一步: 第一步: 安装Microsoft Visual Studio C++ 6.0 安装
2.2 DriverStudio 2.7的安装 的安装 安装需要的软硬件环境 • PC-compatible Intel x86 系统 • Windows 2000, (Optional: 其中一些工具也支持 Windows 98 和 Windows 95.) •内存 最少 MB, 推荐使用 MB 内存: 推荐使用64 内存 最少32 •硬盘 完全安装需要 72 MB 硬盘:完全安装需要 硬盘 •针对 SoftICE的远程调试 NE2000-兼容网卡或 3Com 的远程调试: 兼容网卡或 针对 的远程调试 兼容 网卡 •针对 DriverWorks: Microsoft DDK,MS Visual C++ 针对
9
第三步: 第三步: 安装DriverStudio。 安装 。 DriverStudio安装后的设置: 安装后的设置: 安装后的设置 1)使用 工具定义BASEDIR环境变量并启动 )使用SetDDKGo工具定义 工具定义 环境变量并启动 MSVC 5.0或6.0 , 或
10
11
12
2)打开下列地址上的建立库文件工程 )
31
.cpp文件 文件
// MYFIRST.cpp - main module for VxD MYFIRST #define DEVICE_MAIN #include "myfirst.h" Declare_Virtual_Device(MYFIRST) ( ) #undef DEVICE_MAIN MyfirstVM::MyfirstVM(VMHANDLE hVM):VVirtualMachine (hVM) {} ) MyfirstThread::MyfirstThread(THREADHANDLE hThread): VThread(hThread) {} ( ) DWORD MyfirstDevice::OnW32DeviceIoControl (PIOCTLPARAMS pDIOCParams) ) { char* msg="欢迎进入虚拟机世界!"; char* caption="Hello World!";
30
class MyfirstDevice : public VDevice { public: : virtual DWORD OnW32DeviceIoControl(PIOCTLPARAMS ( pDIOCParams); ); }; ; class MyfirstVM : public VVirtualMachine { public: : MyfirstVM(VMHANDLE hVM); ( ); }; ; class MyfirstThread : public VThread { public: : MyfirstThread(THREADHANDLE hThread); ( ); }; ;
2
对于WDM的开发,又分几种情况: 的开发,又分几种情况 对于 的开发 1)对于 对于Windows 98系统 对于 系统 • Visual C++ 5.0 • Windows 98DDK 2)对于 对于Windows Me/2000 对于 • Visual C++ 6.0 • Windows 2000DDK 3)对于 对于Windows XP 对于 • Visual C++6.0/.net • Windows XPDDK 同样,为了方便起见, 同样,为了方便起见,也可以使用第三方的开发 工具Driver Works,它也是将 工具 ,它也是将DDK的内容封装成类 的内容封装成类 而且提供一个快速方便地生成驱动框架的工具。 ,而且提供一个快速方便地生成驱动框架的工具。
14
4)点击Build编译所选择的库文件。 )点击 编译所选择的库文件。 编译所选择的库文件 注意: 注意:库文件只需在安装完成后第一次使用前编译一次 即可。以后要使用DriverWorks,只需通过 即可。以后要使用 ,只需通过SetDDKGo 进入MSVC即可。 即可。 进入 即可
15
3. VtoolsD开发 开发VxD简介 开发 简介 生成简单框架
• DriverNetworks DriverNetworks 是针对 是针对Windows网络驱动开发人员 网络驱动开发人员 的一个模块。在它的核心部分, 的一个模块。在它的核心部分,DriverNetworks 是一 个针对NDIS drivers 和 TDI clients (DriverSockets)的 个针对 的 C++ 的类库。DriverNetworks 中也有 的类库。 中也有Quick Miniport Wizard 用来直接开始一个 用来直接开始一个NDIS Miniport 或 Intermediate Driver 工程。它可以让你快速的生成所有 工程。 采用DriverNetworks C++ 类库编写的 类库编写的NDIS驱动程序的 采用 驱动程序的 编译, 编译,安装和调试所需要的文件 。 • SoftICE SoftICE 是一个功能极其强大的内核模式调试器,它 是一个功能极其强大的内核模式调试器, 支持在配置一台单独的计算机或两台计算机下进行设 备驱动程序的调试。 备驱动程序的调试。
5
பைடு நூலகம்
• DriverMonitor DriverMonitor不仅可以显示 不仅可以显示WDM和VxD在操作系 不仅可以显示 和 在操作系 统核心层次输出的调试语句,还可以装载和卸载VxD 统核心层次输出的调试语句,还可以装载和卸载 驱动和NT4系统的驱动程序。 系统的驱动程序。 驱动和 系统的驱动程序 • EZDriverInstaller EZDriverInstaller是一个无需经过设备管理器或“添 是一个无需经过设备管理器或“ 是一个无需经过设备管理器或 加新硬件”功能就能为Windows 2000/XP动态加载和 加新硬件”功能就能为Windows 2000/XP动态加载和 卸载WDM驱动程序的小实用程序。 驱动程序的小实用程序。 卸载 驱动程序的小实用程序 • SetDDKGo SetDDKGo用来设置设备驱动程序创建的环境。当 用来设置设备驱动程序创建的环境。 用来设置设备驱动程序创建的环境 我们用Visual Studio(VC++)编译驱动程序源程序的 我们用 ( ) 时候,需要用SetDDKGo来设置环境变量,之后 来设置环境变量, 时候,需要用 来设置环境变量 SetDDKGo会自动启动 会自动启动Visual Studio(VC++)编译环 会自动启动 ( ) 境。 6
16
设备名
动态装载
编程语言 生成调试用目标代码
17
18
19
与应用程序通 信的控制消息
20
21
设备类名 虚拟机类名 线程类名
22
23
24
25
26
27
28
29
头文件
// MYFIRST.h - include file for VxD MYFIRST #include <vtoolscp.h> #define DEVICE_CLASS MyfirstDevice #define MYFIRST_DeviceID UNDEFINED_DEVICE_ID #define MYFIRST_Init_Order UNDEFINED_INIT_ORDER #define MYFIRST_Major 1 #define MYFIRST_Minor 0 #define DIOC_MY_IO CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_NEITHER, FILE_ANY_ACCESS) // 定义一个句柄用于应用程序与 定义一个句柄用于应用程序与VxD通信 通信
3
2. 驱动程序开发工具包 驱动程序开发工具包DriverStudio
2.1 DriverStudio 2.7所包含的工具 所包含的工具 • VToolsD VToolsD 是一个用来开发针对 是一个用来开发针对Win9X (Windows 95 和 Windows 98)操作系统下设备驱动程序 操作系统下设备驱动程序(VxD)的工具。 的工具。 操作系统下设备驱动程序 的工具 VToolsD 中包括生成驱动程序源代码的工具,run-time 和 中包括生成驱动程序源代码的工具, interface 库,以及一些驱动程序样本,可以用来作为各种 以及一些驱动程序样本, 类型的设备驱动程序的基础部分。 类型的设备驱动程序的基础部分。 • DriverWorks DriverWorks对于 对于Windows NT下和 Windows 98 与 对于 下和 Windows 2000共同支持的 共同支持的Win32驱动模型 驱动模型(WDM)设备驱 共同支持的 驱动模型 设备驱 动程序的开发提供完全的支持。 动程序的开发提供完全的支持。DriverWorks中包含一个 中包含一个 非常完善的源代码生成工具(DriverWizard) 以及相应的类 非常完善的源代码生成工具 库和驱动程序样本,它提供了在C++下进行设备驱动程序 库和驱动程序样本,它提供了在 下进行设备驱动程序 4 开发的支持。 开发的支持。
13
3)选择Build|Batch Build(编译 批构件),打开下 )选择 批构件) (编译|批构件 面的窗口,从中选则需要编译的配置。 面的窗口,从中选则需要编译的配置。
注意不要选择IA64的各项,Checked是调试版本,Free 的各项, 是调试版本, 注意不要选择 的各项 是调试版本 是发布版本
相关文档
最新文档