配置WINDOWS驱动程序的开发环境-走出第一步

51 篇文章 0 订阅
51 篇文章 1 订阅
开发我们自己设计的一块板子的PCI设备驱动,并给我指出了方向,具体说就是“三步走”战略:
(1)入门。熟悉基于DriverStudio开发环境的设备驱动开发,同时侧面了解PCI设备驱动程序的相关知识。
(2)进阶。运用纯DDK进行驱动开发,着重于学习别人的实例,并能熟练进行调试和修改。
(3)实战。深入研究PCI总线标准,结合具体的电路板特性开发出一套自己的设备驱动。
现在正在入门阶段的初级,总结一下近一周以来的WINDOWS驱动程序开发学习过程中的经验:
我目前使用的开发环境是:WINDDK/2600 + Visual Studio 6.0 + Compuware/DriverStudio 3.2
参考的主要入门书是:《Windows 2000/XP WDM 设备驱动程序开发(第二版)》武安河 编著
-----------------------------------------
学习中遇到的问题和解决方法:
(1)拿到附书代码,运行出了第一个驱动程序CharSample,步骤如下:先双击代码光盘提供的注册表导入文件
Windows2K-XP.reg,然后运行DriverStudio自带的EzDriverInstaller工具,打开sys目录下的驱动安装配置文件
CharSample.inf,然后Add New Device,提示需要.sys驱动系统文件,找到sys/objchk/i386目录下的
CharSample.sys文件,确定后将提示The Driver Loaded Successfully!(如果报错,而且设备前带!号,一般是因为忘记导入注册表了)
      如此安装好驱动以后,就可以运行exe/objchk/i386目录下的应用程序Test_CharSample.exe进行测试了!
(2)运行成功后,重新编译时却总出现错误,编译不过去!
错误是:
fatal   error   LNK1181:    cannot    open    input    file   "....../DriverStudio/DriverWorks/lib/I386/checked/vdw_wdm.lib" 通过网上学习和交流找到答案:原来是因为配置开发环境时,漏掉了如下一个步骤:
编译....../Compuware/DriverStudio/DriverWorks/source目录下的工程得到vdw_wdm.lib文件!
编译时,注意用VC打开工程文件后,有两个工程,要先将VdwLibs工程设为当前Active Project,然后在工具栏上单击右键选择“组建”,在弹出的编译工具栏中配置一下编译平台的设置:选择Win32 WDM Checked平台(因为我们用的XP),然后编译就应该可以了,但是还有可能出现编译错误:
fatal error C1083:  Cannot open include  file: 'warning.h': No such  file or directory
为啥呢?因为没有选择DDK环境,此时应该在DriverStudio菜单-》DDK Build Setting...中选择我们先前安装的DDK的目录,我安装的目录是C:/WINDDK/2600,这样就可以编译通过了!
编译完后会在"....../DriverStudio/DriverWorks/lib/I386/checked/"目录下生成vdw_wdm.lib文件,做完这些后在去编译自己编写的驱动程序工程就不会有上面所列的错误了!
当然,也有可能会出现这样的编译错误:fatal error C1051: program database  file, '....../compuware/driverstudio/driverworks/source/obj/i386/wdmchecked/vdw_wdm.pdb', has an obsolete format, delete it and recompile
不过编译器提示的应该够清楚了,只要把连接目录下的文件删除再编译一次就可以了!
(3)用向导新建一个驱动工程,进行编译会产生如下错误:
Linking   with   DDK   linker...  
LINK   :   fatal   error   LNK1181:    cannot   open   input   file   ' ntstrsafe.lib'  
Error   executing   link.exe.
因为这个文件在xpddk里面是没有的,在2003 ddk里面有,拷贝一个过来就可以了,或者在工程-》设置-》连接选框中把 ntstrsafe.lib这个连接项去掉  
结果点的时候只能点一个工程,要么在工程设置连接中无法找到ntstrsafe.lib这个库,只点driver那个工程然后再删去对那个找不到的库的连接就OK了。这个原因主要是:

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

直接删除即可。

DS 3.2自动产生的程序报告不是有效的win32应用程序的解决方法:使用driverstudio自带的bulid(dirverstudio->Build with BUILD.exe)进行进行编译即可,不要用VC带的那个build进行编译,编译驱动程序的时候好像用VC带的那个build编译还行,不过最好还是用driverstudio自带的那个build进行编译好些吧,我想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值