Windows下PCI9054驱动程序开发环境搭建及常见问题解决

Windows下PCI9054驱动程序开发环境搭建及常见问题解决

1开发环境配置
Windows XP,英文原版Visual C++6.0,WinXP_DDK, DriverStudio 3.2

 

2准备工作

安装driverstudio.3.2,里面有两个文件SN.txt和 compuware.dat,前者包含序列号,后者是证书文件,这两个文件在安装过程中会用到。

 

3安装和配置
软件的安装顺序:Windows XP --> VC6.0 --> WinXP_DDK -> DriverStudio3.2

注意:

a.安装VC时最后一步记得选上Register这个选项;

b. DDK安装目录不允许有空格,汉语目录;安装DDK后,要设置系统环境变量。变量名为DDKROOT,变量值为安装目录。如D:\WINDDK\2600

c.安装DDK时一定要把例子安装(建议安装全部模块),否则编译vdwlibs.dsw时会报如下的错:
vdw_wdm.lib - 1 error(s), 0 warning(s)
然后打开引起错误的文件,发现:
#error The file is from the DDK at src\wdm\hid\inc. Install DDK HID samples to install hidport.h.  Or update INCLUDE path for hidport.h in the DDK!
这表明安装WinXP_DDK的时候没有安装实例。

3.1启动vc6,然后进行简单的配置:菜单DriverStudio菜单下的DDK Build Settings,在弹出的对话框中选择已经安装的DDK目录(比如我的是D:\WINDDK\2600),在Windows DDK compiler Options中选择"Enable only for Driver Studio"VC6.0-->Tools-->Options,点击"Directories"选项卡:
3.2修改VClib目录和include目录。在VC中选择“Tools|Options”,在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单选择“Include files”菜单。添加D:\WINDDK\2600\INC\W2K”和“D:\WINDDK\2600\INC\DDK\WDM\W2K并将这两个目录置于最上。我的目录“D:\WINDDK\2600”改成自己安装的目录。这里应该选择W2K子目录,DDK中还会有相应的XP子目录。但因为XP驱动编译时候需要高版本的VC编译器,所以这里用的都是W2K子目录,包括后面讲到的WDM驱动程序也是这样子的。它编译的代码完全可以应用于Windows2000Windows XP操作系统。

3.3在“Show directories for”下拉菜单中选择“Library files”菜单,添加目录“D:\WINDDK\2600\LIB\W2K\I386”,并置于最上端。

 

4编译适合本机使用的库文件(若用DDK编程,此处跳过)
进入VC菜单File-->Open Workspace;

(打开位于DriverStudio3.2安装目录的\DriverWorks\Source\vdwlibs.dsw,

我的是D:\ProgramFiles\Compuware\DriverStudio\DriverWorks\source目录下)-->单击VdwLib files然后右键设为活动工程(如图1)-->进入菜单Build-->batch Build,点击“Select x86"按钮只选中全部的32位库(我的电脑是32位的。注意:对于32位的电脑一定不要选中64位的库,否则后面编译会出错)-->点击按 钮"Rebuild AlL”开始编译。

 

 

图1VdwLib files工程设置

注:如果出现无法打开文件这类的错误,一般都是DDK Build Settings指向不对,或安装顺

序有误,或者你在32位机器上选中了64位库。

 

5编译一个DriverStudio自带的实例

启动vc6,点击菜单 File-->Open Workspace,打开项目文件C:\Program Files\Compuware\DriverStudio\DriverWorks\Examples\wdm\hellowdm \HelloWdm.dsw,然后编译,如果没有报错,在其目录中找到hellowdm.sys说明一些列配置成功。别高兴的太早,还会遇到一系列各种问题。接下来一个一个解决。

 

6开始自己驱动程序

6.1在VC6.0的界面下,点击菜单DriverStudio-->Driver wizard,此后系统会一步一步引导你完成设置,最后自动生产的驱动程序框架。
6.2设置好后将生成驱动文件,然后用VC6.0进行编译:进行Build菜单,Rebuild AlL将生成.sys文件,说明驱动模块编译成功!

 

7安装驱动程序以及编写应用程序

具体安装驱动程序过程参见《windows驱动开发技术详解》P78“WDM式驱动的加载”部分。

应用程序的编写要加载GUID以及OpenByInterface等部分代码。

 

8常见错误解决办法

8.1运行成功后,重新编译时却总出现错误,编译不过去!

错误是:

fatal   error   LNK1181:   cannot   open   input   file   "......\DriverStudio\DriverWorks\lib\I386\checked\vdw_wdm.lib"

错误原因:原来是因为配置开发环境时,漏掉了如下一个步骤:

编译DriverStudio3.2安装目录的\DriverWorks\Source\vdwlibs.dsw目录下的工程,没有得到vdw_wdm.lib文件!

解决办法:关闭当前工程,参加本文第四部分,然后重新打开工程,重新编译即可。

8.2 fatal error C1083: Cannot open include file: 'warning.h': No such file or directory

错误原因:没有选择DDK环境,

解决办法:在DriverStudio菜单中-->DDK Build Setting...中选择先前安装的DDK的目录(例如D:\WINDDK\2600),这样就可以编译通过了!

8.3可能会出现这样的编译错误:fatal error C1051: program database file, '......\compuware\driverstudio\driverworks\source\obj\i386\wdmchecked\vdw_wdm.pdb', has an obsolete format, delete it and recompile

不过编译器提示的应该够清楚了,只要把连接目录下的文件删除再编译一次就可以了!

8.4用向导新建一个驱动工程,进行编译会产生如下错误:

Linking   with   DDK   linker...  

LINK   :   fatal   error   LNK1181:   cannot   open   input   file   'ntstrsafe.lib'  

Error   executing   link.exe.

错误原因:这个文件在xpddk里面是没有的,在2003 ddk里面有

解决办法:拷贝一个过来就可以了,或者在工程-》设置-》连接选框中把ntstrsafe.lib这个连接项去掉(它与source文件有对应关系,在source文件中把这个库的链接去掉也可以)

在工程中的sources文件里边,找到下面一行:

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

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

8.5 fatal error C1189: #error : Compiler version not supported by Windows DDK

错误原因:在于wdm.h文件中有一个条件编译语句

#if _MSC_VER < 1300

#error Compiler version not supported by Windows DDK

#endif

VC6对应的_MSC_VER(与版本有关)为1200,因此提示如上错误

解决办法:此问题是通过运用DDK sources to vcproj Converter工具把驱动工程的sources文件转换成对VC6相适应而解决的。

如图2 所有程序—CompuwareDriverStudio---Develop---DDK sources to vcproj Conver,把驱动程序下的source文件拖到DDK sources to vcproj Conver该软件界面,选择第一个复选框,VC++6 Work Space,点击Convert,如图3所示。然后关闭此软件,此时VC工程下会自动提示工程有变化,是否更改更新,选择是就可以了。然后重新编译工程,无错。

图2 DDK sources to vcproj Conver打开

 

图3 工程转换

 

  

 

 

 

 

                                 /*** 大漠流云 2011.8.23 ***/

                                           /***    damoliuyunli@163.com       ***/

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本版本为3.2,一共分了两卷。这是第二卷。第二卷免费~~ 本程序经本人测试非常好用。具体搭建环境请参考互联网。 压缩包里已经包涵了key DriverStudio工具包介绍 DriverStudio 是一套用来简化微软Windows 平台下设备驱动程序开发,调试和测试的工具包。   DriverStudio 当前的版本包括下列工具模块:   DriverAgent   DriverAgent 为Win32 应用程序提供直接访问硬件的功能。即使你没有任何设备驱动程序开发的经验或经历,你也能编写出DriverAgent应用程序来直接访问硬件设备。DriverAgent 应用程序可以运行在 Windows 98, Windows 95, Windows NT 和 Windows 2000平台上。(当前版本不支持Windows XP平台。)   VToolsD   VToolsD 是一个用来开发针对Win9X (Windows 95 和 Windows 98)操作系统下设备驱动程序(VxD)的工具。VToolsD 中包括生成驱动程序源代码的工具,run-time 和 interface 库,以及一些驱动程序样本,可以用来作为各种类型的设备驱动程序的基础部分。   DriverWorks   DriverWorks对于Windows NT下和 Windows 98 与 Windows 2000共同支持的Win32驱动模型(WDM)设备驱动程序开发提供完全的支持。DriverWorks中包含一个非常完善的源代码生成工具(DriverWizard) 以及相应的类库和驱动程序样本,它提供了在C++下进行设备驱动程序开发的支持。   DriverNetworks   DriverNetworks 是针对Windows网络驱动开发人员的一个模块。在它的核心部分,DriverNetworks 是一个针对NDIS drivers 和 TDI clients (DriverSockets)的 C++ 的类库。DriverNetworks 中也有Quick Miniport Wizard 用来直接开始一个NDIS Miniport 或 Intermediate Driver 工程。它可以让你快速的生成所有采用DriverNetworks C++ 类库编写的NDIS驱动程序的编译,安装和调试所需要的文件   SoftICE   SoftICE 是一个功能极其强大的内核模式调试器,它支持在配置一台单独的计算机或两台计算机下进行设备驱动程序的调试。   BoundsChecker Driver Edition   BoundsChecker 驱动程序版采用了NuMega针对应用程序开发的一种创新的错误检测技术。BoundsChecker 驱动程序版中提供了参数确认和系统实施可以用来监视和跟踪在不同的设备驱动程序与其它的操作系统的组件之间的所有的交互作用。配置向导提供了对于BoundsChecker 采集到的各种类型的大量信息的精确的控制。   BoundsChecker 驱动程序版当前支持Windows NT, Windows 2000, Windows Millennium Edition和 Windows 98。(当前版本不支持Windows XP)   DriverWorkbench   DriverWorkbench 可以使你进一步了解系统崩溃时的dump 文件和当时的事件。由于与BoundsChecker Driver Edition集成在一起, 在DriverWorkbench 中可以看到在系统崩溃前或其登录的时候由BoundsChecker 采集到的数据。这种独特的查看系统的方式提供了空前的能力,使得可以通过查看在系统崩溃之前系统实际活动的踪迹来发现问题之所在。   DriverWorkbench 中也包含了 TrueTime Driver Edition. TrueTime Driver Edition 是一个性能分析工具,可让Windows NT 的设备驱动开发人员发现并修正驱动程序的性能瓶颈。TrueTime Driver Edition 是用来满足对于设备驱动程序和内核模式下代码开发人员的需求。一些额外的功能将出现在TrueTime Driver Edition 的下一个版本中。   DriverWorkbench 当前支持 Windows NT 和 Windows 9x. (当前版本不支持Windows XP)   FieldAgent   FieldAgent 可让你对运行在客户的计算机上的驱动程序进行处理。由FieldAgent收集到的信息可用于追捕到那些可能只发生在特定的配置环境

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值