其实问题基本都处在DriverStudio3.2的安装和编译上。下面就开始了: 这三个软件的安装顺序是:VS2005、WindowsXP DDK、DriverStudio3.2。这是推荐的安装顺序。
首先,上网找
Windows XP DDK安装程序、
DriverStudio3.2安装程序、
DriverStudio3.2的补丁DSDDKEnv.zip
补丁文件我上传了,可以在这儿下http://download.youkuaiyun.com/source/2896238
默认VS2005已经装好了,然后装 DDK,DDK就一路默认装就可以了。(建议把DDK的所有Example都装上,不然可能以后编译时会缺少头文件之类问题) 然后装 DriverStudio3.2,也是一路默认安装就可以了(注:安装目录中不要出现空格,原因马上讲到)。
安装过程中会出现一个错误对话框,大概是说 DSDDKEnv8.dll failed to register,选Ignore。出现这个错误的原因是:DriverStudio 3.2在与VS2005集成的过程中出错了,这个错误我们将在DS3.2安装完成后用补丁修复。 接下来补丁修复。DSDDKEnv.zip解压,
用文件 DSDDKEnv8.dll、DSDDKEnv8UI.dll分别替换掉...../DriverStudio/Common/Bin和 DriverStudio/Common/Bin/1033目录下的同名文件。然后在开始菜单的运行中分别输入以下两条命令:regsvr32 -u <安装目录>\DriverStudio\Common\Bin\dsddkenv8.dll regsvr32 <安装目录>\DriverStudio\Common\Bin\dsddkenv8.dll 注:如果<安装目录>中有空格,那么以上两条命令会执行出错。 这时打开VS2005,其菜单栏的Tools中出现了DriverStudio子菜单。接下来还有以下几个工作要做: 1:Tools->DriverStudio->DDK Build Settings设置DDK路径,即将DDK Root Directory设置为C:/WINDDK/2600(根据自己的安装路径修改) 2:生成vdw_wdm.lib,这个库文件在以后编译驱动时是需要的。过程如下:
首先,用VS2005打开..../DriverStudio/DriverWorks/source/VdwLibs2005.sln; 将VdwLibs设为Active Project;
然后右击VdwLibs->Properties,VdwLibsProperty Pages顶部的Configuration和Platform要分别改成Active(WDM Checked)和win32 Active,这个很重要。
注1:这个一定要改对!!不然生成的vdw_wdm.lib是错误的,错误的库会导致以后编译驱动时出错,很烦的。
注2:检查VdwLibsProperty Pages->Librarian中的Output File是否为$(OutDir)/vdw_wdm.lib,如果不是,就改成这个。
最后编译工程(用Tools->DriverStudio->Build Solution),vdw_wdm.lib就生成了。 应该到此就安装完成了。大家可以用VS2005打开.../DriverStudio /DriverWorks/Examples/wdm中的一个例程,比如hellowdm。然后用菜单栏的Tools->DriverStudio->Build Solution with DDK Build.exe。如果生成正确,即在.../DriverStudio/DriverWorks/Examples/wdm/hellowdm/sys/objchk/i386中出现了HelloWdm.sys,那么就大功告成了,配置好了。
接下来我们用Tools->DriverWizard生成驱动模板(具体怎么生成大家自己研究吧^_^)驱动工程文件生成后,
同样用 Tools->DriverStudio->Build Solution with DDK Build.exe编译时,会出现这个错误:1>NMAKE: U1073: don't know how to make 'C:/WINDDK/2600/lib/wxp/i386/ntstrsafe.lib'出错原因是:根本就没有C:/WINDDK/2600/lib/wxp/i386/ntstrsafe.lib这个库文件,这貌似是DS3.2的bug解决办法是:1:在Project的Property pages里的Link=>Input=>Additional Dependencies项中去掉这个库 2:在Project的source文件中找到这句话,删掉就可以了 哦:TARGETLIBS=$(DDK_LIB_PATH)/ntstrsafe.lib$(DDK_LIB_PATH)/csq.lib。