VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序(转载但有修正)

转载 2012年03月25日 15:47:00

引自:http://www.cnblogs.com/Torres_fans/archive/2009/12/28/1634149.html


我希望的就是DDK(2600)+VS2005+DRIVER STUDIO(3.2)

这里的driver studio3.2不是破解版本,只能免费使用14天,难道卸载在安装?我争取再去找找破解版本,有了我就贴出来,没有的话只有卸载重安装了!

搭建好windows设备驱动程序的开发环境,终于能在VS2005中编译出第一个测试驱动程序了,现在把安装和编译的过程中遇到的一些细节问题总结一下。

 

1. WINDD下载的是2600版本,不知道跟xp sp1 DDK和xp sp2 DDK有什么区别,找后面两个版本的DDK下载地址找了好久都没找到,驱运之家有下载,但是要高级会员才能下,要Money。电驴里搜到一个xp sp1DDK的下载链接,但是下不了,在此把我找到的2600版本的下载地址贴出来

   ftp://202.113.29.4/ISO/M$/WinDDK/winxp_ddk.rar

 

2. 注意安装DDK时,建议将例子等全部安装,否则Driver Studio编译时会提示缺少头文件

3. 在VS2005环境下,安装Driver Studio时会有对话框弹出,单击Ignore按钮,解决办法会在后面详细说明;

    安装DriverStudio3.2 过程中出现DSDDKEnv8.dll failed to register错误的解决方法
原因:与VS2005集成时会发生此错误。
解决方法,下载补丁:http://download.csdn.net/down/660936/amazingzyx


>Extract it into a temp directory.
>Copy the file DSDDKEnv8.dll into the <INSTALL_DIR>\DriverStudio\Common\Bin directory.
>Select "yes" if prompted to copy over an existing one.
>Copy the file DSDDKEnv8UI.dll into the <INSTALL_DIR>\DriverStudio\Common\Bin\1033 directory. Select "yes" if prompted to copy over an existing one.
>Then unregister the older version
Go to start->run and type "regsvr32 -u " <INSTALL_DIR> \DriverStudio\Common\ Bin\ dsddkenv8.dll"
注意〈INSTALL_DIR〉不能含有空格,否则命令无法执行,笔者曾将DriverStudio安装在C:\Program Files下,总是运行不了,为此郁闷了好久,后经别人提点才解决此问题,但不知其原因,请问有人知道吗?(本人经过测试,原作者提到的问题可以通过对路径加引号解决: regsvr32  "c:\program files\DriverStudio....."

>Then register the new copy
Go to start->run and type "regsvr32 <INSTALL_DIR>\ DriverStudio\ Common\ Bin\ dsddkenv8.dll"
>DriverStudio menu should now be part of the VisualStudio 2005 menu

 

如果在vs2005+补丁后生成的解决方案文件.sln无法双击打开工程时可以使用文本编辑器打开.sln文件在第二行加入“# Visual Studio 2005”保存即可,例如:
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aa", "driver\aa.vcproj", "{6A0A9D07-FD4C-4D7C-805D-48D25FB4BE6C}" EndProject


根治方法:
打开\DriverStudio\DriverWizard\Templates目录的WdmDriver.sln.net文件
找到“Microsoft Visual Studio Solution File, Format Version 9.00”这一行,在其后下一行加入“# Visual Studio 2005”保存即可,以后用DriverWizard生成的工程就可以正常双击打开了。(对于vs2005打不开的方案,可以先生成vs2003的方案-> 用vs2005打开会自动升级,用原作者的方案在本人的实验中未生效)

 

4. 编译中可能遇到的问题(VS2005环境下)
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
这个错误,解决方法如下:
打开project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430选项。

 

error LNK2019: unresolved external symbol

error LNK2001: unresolved external symbol

 

解决:在链接选项中加入 /verbose:lib,就可以看到链接生成执行文件时链接程序所要链接的库的路径。发现所有链接库的路径为DDK所在路径。原来先前用VS写驱动时,在VC++ Directories-->Library Files中加入了驱动库的路径。只要把DDK的路径去掉,让连接器自动寻找默认库进行链接就没有该问题了。

 

5.     用DriverWizard 新建的工程要在VS2005中编译必须先设置DDK路径,在VS2005菜单栏Toos=>DriverStudio=>DriverStudio=>DDK Build Settings中设置DDK Root Directory

6. 然后还要编译DriverStudio安装目录DriverStudio\DriverWorks\source\VdwLibs2005.sln,以得到vdw_wdm.lib这个库文件。编译时,注意用VC打开VdwLibs2005.sln工程文件后,有两个工程,要先将VdwLibs工程设为当前Active Project,然后右击选择“Property” ,在VdwLibs Property Pages中Configuration要改成“win32 Active(WDM Checked)”

 

7. 编译驱动时,不要使用VC的"编译",那会产生很多莫名其妙的错误,而应该选择"DriverStudio"-->“Build with BUILD.exe”。
1>NMAKE :  U1073: don't know how to make 'D:\WINDDK\2600\lib\wxp\i386\ntstrsafe.lib'这个错误。
再上网查查。
原来driverstudio产生的驱动工程都会要连接ntstrsafe.lib这个库,但实际上这个库并不存在,在Project的Property pages里的Link=>Input=>Additional Dependencies项中去掉这个库就可以了,还有说DDK2003版本就不存在这个问题,还没试过。
于是去掉之。可是问题依然存在。
狂晕!
最后终于在网上看到一个解决办法
就是将工程中的sources文件里边的:
TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib $(DDK_LIB_PATH)\csq.lib
直接删除。就行了。

编译后终于成了

 


VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序

 搭建好windows设备驱动程序的开发环境,终于能在VS2005中编译出第一个测试驱动程序了,现在把安装和编译的过程中遇到的一些细节问题总结一下。 1.     WINDD下载的是2600版本,不知...
  • zzqccc
  • zzqccc
  • 2009年05月05日 12:44
  • 6578

VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序 zz

http://blog.csdn.net/zzqccc/article/details/4151142 搭建好windows设备驱动程序的开发环境,终于能在VS2005中编译出第一个测试驱动...
  • mobilechan
  • mobilechan
  • 2013年05月05日 19:21
  • 762

VS2005+WINDDK+Driver Studio 3.2个人总结

通过在网上搜索大量的资料,终于把环境搭建起来。对于我这样的驱动新手来说,理应把高手们的东西整理并总结下,方便以后的初学者。 这三个软件的安装顺序没有具体规定,也有高手推荐的顺序,我自己也是重复安装卸...
  • mao0514
  • mao0514
  • 2013年09月14日 17:26
  • 1472

Mac下Android Studio crash 意外退出

显示包内容 里面info.plist       JVMVersion was originally "1,6*,1.7+". I changed it to "1,7+",  http://ssh...
  • ddovetlose
  • ddovetlose
  • 2016年04月08日 12:05
  • 1215

Android Studio2.0 安卓开发者不得不知的功能

原文:http://crash.163.com/#news/!newsId=3 谷歌正式发布了Android Studio2.0 版本,从 IntelliJ IDEA 开始玩起,一直...
  • asmcvc
  • asmcvc
  • 2016年04月12日 12:57
  • 1972

从编译到制作固件

在这之前讲一下开发环境: 下载NFS Server作为服务器, 1、在工作目录(如:code/)从gitolite:ahd0服务器克隆代码 git clone gitolite:ahd0.git ...
  • funanfeng
  • funanfeng
  • 2016年01月14日 20:21
  • 511

android 原生代码,增加eng编译

下载了android4.4代码,lunch的时候没有找到eng的选项,
  • ff313976
  • ff313976
  • 2014年10月21日 22:17
  • 837

献给初学者:Java咖啡的奶茶——Eclipse

铁匠以打造自己的工具为荣。在进入这个行当之时,或接受特殊需求的任务前,制作称手的工具便成了头等大事。通过炼炉、铁砧以及锤子,铁匠循环进行着加热、锻造和冷却过程,直到把钢铁铸造成称手的家伙。与铁匠挥洒汗...
  • xujianhua815926
  • xujianhua815926
  • 2005年08月29日 13:18
  • 1049

研究了一下关于c/c++编译器关于导出函数的不同处理

刚刚我在用试验ffmpeg解码库解码视频文件的时候,写好了但是提示连接错误,就网上找了一些文章,现在总结一下,如有错误或不严谨的地方请告之,免得我坑害别人,先谢过了! 总所周知,c++是c的增强和扩展...
  • Garfiel_C
  • Garfiel_C
  • 2015年07月09日 14:14
  • 674

Linux 0.12 OS. math - error.c

这是math模块里最后一个文件,对这个模块的学习前前后后到现在也有半年时间了,我还依稀记得是从年初那时的一个论坛帖子开始的,它记录下了我前期大量的准备工作。 学习从大的说是一件一辈子都不能忘记的事情...
  • HuiyuYang_fish
  • HuiyuYang_fish
  • 2013年06月15日 10:30
  • 882
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序(转载但有修正)
举报原因:
原因补充:

(最多只允许输入30个字)