2004-09-14_接口驱动程序开发(上).ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:60 大小:1.4MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

2004-09-14_接口驱动程序开发(上).ppt

2004-09-14_接口驱动程序开发(上).ppt

预览

免费试读已结束,剩余 50 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Windows98/2000驱动程序编写方法1.驱动程序的开发环境对于WDM的开发,又分几种情况:对于Windows98系统VisualC++5.0Windows98DDK2)对于WindowsMe/2000VisualC++6.0Windows2000DDK3)对于WindowsXPVisualC++6.0/.netWindowsXPDDK同样,为了方便起见,也可以使用第三方的开发工具DriverWorks,它也是将DDK的内容封装成类,而且提供一个快速方便地生成驱动框架的工具。2.驱动程序开发工具包DriverStudioDriverNetworksDriverNetworks是针对Windows网络驱动开发人员的一个模块。在它的核心部分,DriverNetworks是一个针对NDISdrivers和TDIclients(DriverSockets)的C++的类库。DriverNetworks中也有QuickMiniportWizard用来直接开始一个NDISMiniport或IntermediateDriver工程。它可以让你快速的生成所有采用DriverNetworksC++类库编写的NDIS驱动程序的编译,安装和调试所需要的文件。DriverMonitorDriverMonitor不仅可以显示WDM和VxD在操作系统核心层次输出的调试语句,还可以装载和卸载VxD驱动和NT4系统的驱动程序。2.2DriverStudio2.7的安装安装步骤:在安装DriverWorks之前,首先要保证你的计算机上已经安装了MicrosoftVisualC++以及相应针对WindowsNT或WDM的DDK的正确版本。所有这些包括DriverStudio的安装都必须以系统管理员身份启动系统。并且要按照下面的顺序安装。第二步:安装2000DDK(DriverDevelopmentKits)。注意:1)如果本地机的操作系统为Windows2000请确认已经安装了WindowsSevicePack1或WindowsSevicePack2在安装DDK的时候请选择完全安装。2)安装中,不需要安装64BITIA64Binaries3)安装好后,对于2000DDK不需要手动配置环境变量,只需在开始菜单中点击CheckedBuildEnvirment则DDK会自动调用setenv配置环境变量,并监测相应的SDK以及VisualStudioIDEDriverStudio安装后的设置:1)使用SetDDKGo工具定义BASEDIR环境变量并启动MSVC5.0或6.0,11122)打开下列地址上的建立库文件工程3)选择Build|BatchBuild(编译|批构件),打开下面的窗口,从中选则需要编译的配置。4)点击Build编译所选择的库文件。3.VtoolsD开发VxD简介动态装载1819与应用程序通信的控制消息21虚拟机类名23242526272829//MYFIRST.h-includefileforVxDMYFIRST#include<vtoolscp.h>#defineDEVICE_CLASSMyfirstDevice#defineMYFIRST_DeviceIDUNDEFINED_DEVICE_ID#defineMYFIRST_Init_OrderUNDEFINED_INIT_ORDER#defineMYFIRST_Major1#defineMYFIRST_Minor0#defineDIOC_MY_IOCTL_CODE(FILE_DEVICE_UNKNOWN,1,METHOD_NEITHER,FILE_ANY_ACCESS)//定义一个句柄用于应用程序与VxD通信classMyfirstDevice:publicVDevice{public:virtualDWORDOnW32DeviceIoControl(PIOCTLPARAMSpDIOCParams);};classMyfirstVM:publicVVirtualMachine{public:MyfirstVM(VMHANDLEhVM);};classMyfirstThread:publicVThread{public:MyfirstThread(THREADHANDLEhThread);};//MYFIRST.cpp-mainmoduleforVxDMYFIRST#defineDEVICE_MAIN#include"myfirst.h"Declare_Virtual_Device(MYFIRST)#undefDEVICE_MAINMyfirstVM::Myfirs