旅途

如果想飞得高,就该把地平线忘掉

windows驱动程序开发环境配置

网上有很多关于驱动开发环境的资料,但大多不全。

    这里,个人推荐使用vc6.0+ds+windows ddk。

    vc6.0大家再熟悉不过的了,也许你可能喜欢使用vc8.0,也就是.net 2005,它功能强大,调试方便,但这里还是推荐6.0,因为,ds会在vc6.0开发环境中另外增加一个导航工具条,很方便,同时也会增加一个菜单栏。

    vc6.0安装完毕后,再安装windows ddk,其安装包可以在网上搜索到,建议去微软官方网站下载。具体下载哪个,得根据你电脑的操作系统来定,我的是windows xp,所以安装了windows xp ddk。

    最后,安装DriverStudio,全称Compuware DriverStudio ,目前通用版本为3.2。

    编译ddk包。进入到......\Compuware\DriverStudio目录下,我们可以看到两个文件夹,DriverNetworks 和 DriverWorks,里面分别有BuildAllDNW.bat和BuildAllDW.bat,我们在命令行下面分别cd至这两个目录,再运行这两 个批处理文件,可以看到提示,提示中说明了运行的格式,即:BuildAllDNW(或者BuildAllDW) D:\winddk\2600(ddk的安装路径,这个是我机器上的路径) WinXP(操作系统版本) x86(我的CPU类型)。回车即可。把两个批处理类似运行,就可以了,如果不编译,系统会报错,说没有.lib静态库文件。

    开始第一个工程。打开vc6.0,设置ddk路径,选择菜单中或者工具条中的 ddk build settings,把ddk的根目录root directory设置好,我的是“D:\WINDDK\2600”。然后选择菜单或工具条第一项,启动新建工程向导,一步步下去就可以了。编译时选择菜 单或工具条第四项。

   

 don't know how to make 'D:\WINDDK\2600\lib\wxp\i386\ntstrsafe.lib' 解决办法

driverstudio产生的驱动工程都会要连接ntstrsafe.lib这个库,但实际上这个库并不存在,在Project的Settings里的Link项中去掉这个库,然后在工程中的sources文件里边,找到下面一行:

TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib $(DDK_LIB_PATH)\csq.lib

直接删除即可。

有时候还会提示没有ntstrsafe.h,#include<ntstrsafe.h>出错,把它注释掉即可。

 

上面这个错误出现在windows xp操作系统中,我曾经帮别人在2003 server中配置开发环境,结果发现,不会存在上述问题,而且可以使用vc6.0的编译按钮进行编译,这在windows xp下是不行的。

调试。调试方法很多,我一般都用DbgPrint。

check和free的区别。简单地说,check相当于debug,free相当于release,前者是调试版本,后者是发布版本。你可以使用以下语句实现仅在check版本中输出调试语句:

#if dug

#define dprintf DbgPrint

#else

#define dprintf(x)

#endif

然后使用dprintf代替DbgPrint。

调试工具。ds自带的softice,DriverMonitor,等。此外,Dbgview和DriverMonitor类似,可以从网上下载到的。Dbgview和DriverMonitor可以看到DbgPrint的字符串。

驱动的加载。这个比较复杂,有dosname等细节。还有动态和静态加载的区别。动态加载可以参看FwHookDrv个人防火墙的例子,其中关键部分就是TDriver类,注意dosname。静态加载就是注册为服务即可,相对比较简单。

转换为vc工程。开始--程序--Compuware DriverStudio--develop--DDK sources to vcproj Converter,即可转换,不会使用的多试几次就会了,什么都说了,就没有悬念了,呵呵。

驱动开发调试环境。建议采用虚拟机或者双机的配置。因为驱动调试常常会出现蓝屏等等,所以得双机或者虚拟机,免得老是重启,浪费时间和心神。

posted on 2007-10-27 00:32 旅途 阅读(2950) 评论(0)  编辑 收藏 引用 所属分类: 驱动开发


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理