首页
社区
课程
招聘
[求助]建立WDM编程环境中的问题[已解决]
发表于: 2007-9-23 17:51 14725

[求助]建立WDM编程环境中的问题[已解决]

2007-9-23 17:51
14725
刚学驱动,遇到很多麻烦,比想象中的要困难很多.
很多问题基本都能自己搜索解决.但下面的这个问题有些棘手:


偶的机器环境:

操作系统: XP SP2
编译器: VC 6.0 和 VS 2005
DDK: XP SP1 DDK
工具: Driver Studio 3.2 + 补丁



问题的开始:
安装完 Driver Studio 3.2 后,通过 DDK Build Settings 设置了DDK的目录.
用VC 6.0编译 DriverWorks 目录下的 VdwLibs.dsw 时出现问题.
理所当然的上baidu搜索,解决了一些低级的问题.接着是一系列的错误,也不好描述,总之编译不通过.

问题的搜索:
这几天一直在baidu、CSDN、M$、VKBASE、DriverDevelop... 上搜索, 发现自己在安装时候就弄错了.于是卸了Driver Studio 3.2, 按顺序安装:
1. VC 6.0
2. XP SP1 DDK
3. Driver Studio 3.2


问题的出现:
从搜索中得知 : 在安装 Driver Studio 3.2 时候,它会提示你设置DDK所在的安装目录, 因为Driver Studio 3.2是对 DDK的二次封装, 这步是必须的.

可偶在安装过程中,它没有提示,而且出现安装的问题:


看样子是环境设置出问题了.
--------------------------------------------------------------------------------------------

偶想知道的是:

1. Driver Studio 3.2 是最新的,各位大叔在安装的时候是否出现过和偶一样的问题,是如何解决的?
如果没有出现这样的现象, 是否是安装包的问题,还是和操作系统有关联?

2. 出现这个提示的时候,偶点ignore 忽略了,可以继续安装,也可以继续使用.
但是driverstudio中没有setup ddk and start msvc
而它可以自动设置环境变量.
所以这是安装包的问题吗?



偶目前参考的是 《WINDOWS WDM 设备驱动程序开发》(武安河 编著)
此书第4章 -- 建立WDM编程环境 --  写的看起来很简单, 可是偶现在连编译DriverWorks下的那个lib库都编译不成功, 何谈写个简单的Hello World的驱动....

好几天了, 郁闷啊~

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
2
都出WDK 了奥~~~~
那个东西好就没有什么用了。
2007-9-23 18:27
0
雪    币: 14
活跃值: (2660)
能力值: ( LV12,RANK:610 )
在线值:
发帖
回帖
粉丝
3
重装一遍不行吗?
先装ddk,再装ds 3.2
2007-9-23 19:07
0
雪    币: 110
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
放弃ds 3.2吧,都已经停止开发的东西了
2007-9-23 20:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
在vc6.0或vs2005中设置好ddk路径,写代码文件

然后在ddk环境中编译,这样不行吗?
2007-9-23 21:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
编译好后在虚拟机中调试,不然蓝几次,就心疼了
2007-9-23 21:41
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
7
停止开发 不代表不经典.

完全的DDK 和DriverStudio比就好象一个是C,一个是MFC, 后者就是方便些嘛

问题还未解决啊~~~

还望用过的大叔们指点下~
2007-9-23 22:33
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
8
偶就是这样做的啊.

问题是装 DS 3.2的时候出现了图中的问题.

杂办?
2007-9-23 22:34
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
9
出现的安装错误是DriverStudio 3.2的一个小bug,Compuware已经给出了补丁,你可以到Google上去搜索,很容易找到。如果找不到,说一下,我会把它贴上来。另外,这个bug只是涉及到DriverStudio与Visual Studio 2005的集成问题,并不会影响你用vc6编译驱动程序。
2007-9-24 07:00
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
10
从“开始”菜单中选择“Compuware DriverStudio”,再选择“Develop”下的“DDK Build Settings”,在出现的对话框中选择相应的DDK根目录以及目标平台,然后单击对话框最下面的“Launch Program”按钮,这时会启动VC。然后再打开要创建的工程就可以了。以下是我在VC6中用Windows Server 2003 SP1 DDK选择Win32 WDM Free方式编译VdwLibs时的输出结果:

Current DDK Directory = D:\PROGRA~1\DDK\NT52R1
Building for i386
******Configuration: VdwLibs - Win32 WDM Free *************

        1 file(s) copied.
C:\PROGRA~1\Compuware\DriverStudio\DriverWorks\..\Common\source\kstl.cpp
C:\PROGRA~1\Compuware\DriverStudio\DriverWorks\..\Common\source\kstllmcb.cpp
C:\PROGRA~1\Compuware\DriverStudio\DriverWorks\..\Common\source\kstlnphs.cpp
C:\PROGRA~1\Compuware\DriverStudio\DriverWorks\..\Common\source\kstlphs.cpp
C:\PROGRA~1\Compuware\DriverStudio\DriverWorks\..\Common\source\stcinit.cpp
C:\PROGRA~1\Compuware\DriverStudio\DriverWorks\..\Common\source\suballoc.cpp
        6 file(s) copied.

C:\PROGRA~1\COMPUW~1\DRIVER~1\DRIVER~4\source>call D:\PROGRA~1\DDK\NT52R1\bin\setenv.bat D:\PROGRA~1\DDK\NT52R1 fre WXP  

C:\PROGRA~1\COMPUW~1\DRIVER~1\DRIVER~4\source>build.exe -ceZ
BUILD: Adding /Y to COPYCMD so xcopy ops won't hang.
BUILD: Using 2 child processes
BUILD: Object root set to: ==> objfre_wxp_x86
BUILD: Compile and Link for i386
BUILD: Examining c:\progra~1\compuw~1\driver~1\driver~4\source directory for files to compile.
    c:\progra~1\compuw~1\driver~1\driver~4\source
BUILD: Compiling (NoSync) c:\progra~1\compuw~1\driver~1\driver~4\source directory
1>Compiling - cpprt.cpp for i386
1>Compiling - stcinit.cpp for i386
1>Compiling - dwcontrl.cpp for i386
1>Compiling - kaddress.cpp for i386
1>Compiling - kchecker.cpp for i386
1>Compiling - kdevice.cpp for i386
1>Compiling - kerrlog.cpp for i386
1>Compiling - kfifo.cpp for i386
1>Compiling - kfile.cpp for i386
1>Compiling - kirp.cpp for i386
1>Compiling - kpcicfg.cpp for i386
1>Compiling - kintrupt.cpp for i386
1>Compiling - klist.cpp for i386
1>Compiling - kadapter.cpp for i386
1>Compiling - klower.cpp for i386
1>Compiling - kpnpdev.cpp for i386
1>Compiling - kpnplow.cpp for i386
1>Compiling - kquery.cpp for i386
1>Compiling - kregkey.cpp for i386
1>Compiling - kresreq.cpp for i386
1>Compiling - generating code... for i386
1>Compiling - kustring.cpp for i386
1>Compiling - ksfifo.cpp for i386
1>Compiling - kspin.cpp for i386
1>Compiling - kunitnam.cpp for i386
1>Compiling - kdevque.cpp for i386
1>Compiling - ksysthrd.cpp for i386
1>Compiling - ktimer.cpp for i386
1>Compiling - kevent.cpp for i386
1>Compiling - kmutex.cpp for i386
1>Compiling - ksemaphr.cpp for i386
1>Compiling - kdmqcsq.cpp for i386
1>Compiling - kdmqex.cpp for i386
1>Compiling - kdmaxfer.cpp for i386
1>Compiling - ktrace.cpp for i386
1>Compiling - kusb.cpp for i386
1>Compiling - khidaux.cpp for i386
1>Compiling - getnames.cpp for i386
1>Compiling - kvxdintf.cpp for i386
1>Compiling - kstl.cpp for i386
1>Compiling - kstllmcb.cpp for i386
1>Compiling - generating code... for i386
1>Compiling - kstlphs.cpp for i386
1>Compiling - kstlnphs.cpp for i386
1>Compiling - kstream.cpp for i386
1>Compiling - kstradpt.cpp for i386
1>Compiling - util.cpp for i386
1>Compiling - suballoc.cpp for i386
1>Compiling - k1394.cpp for i386
1>Compiling - k1394async.cpp for i386
1>Compiling - k1394isoc.cpp for i386
1>Compiling - kwmi.cpp for i386
1>Compiling - kwmistr.cpp for i386
1>Compiling - ksminidriver.cpp for i386
1>Compiling - kstdwmi.cpp for i386
1>Compiling - kbus.cpp for i386
1>Compiling - kphysdev.cpp for i386
1>Compiling - generating code... for i386
BUILD: Compiling  c:\progra~1\compuw~1\driver~1\driver~4\source directory
100>Building Library - c:\progra~1\compuware\driverstudio\driverworks\lib\i386\vdw_wdm.lib for i386
BUILD: Done

    56 files compiled
    1 library built
        1 file(s) copied.
BASEDIR=D:\PROGRA~1\DDK\NT52R1
Tool returned code: 0

最后产生的文件保存的位置在这个工程的目录中的workspace.txt中有说明。
2007-9-24 07:48
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
11
呵呵,偶是按照你的步骤来的.
不过没有这句:
Current DDK Directory = D:\PROGRA~1\DDK\NT52R1

偶回来再试下, 先谢谢你啦
2007-9-24 08:22
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
12
这个目录是我的DDK的根目录
2007-9-24 14:10
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
有些文件需要安装c盘才可以使用的。。

这是我的经验,还有不行,到驱网上的问一问上面的大佬吗?

上面也有一些这方面的资料,我曾近看过你所说的情况。
2007-9-24 19:08
0
雪    币: 6910
活跃值: (3410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asd
14
找武安河的书好好看一看
2007-9-25 17:51
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
15
原来要用VS 2005来编译,

偶在VS 2005 下编译 VdwLibs.dsw 时候没有其他错误, 就一个关于
#if _WIN32_WINNT >= 0x0501


的错误


这个是什么问题啊, 查了半天不知道原因.

这句是判断机器是否为 WINDOWS XP 以上版本, 偶机器就是 XP SP2 的啊
上传的附件:
2007-9-26 21:22
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
16
用我说的方法无论是VC6、VC7还是VC8都可以,在我的机器上并没有出现任何问题(警告和错误)。前面是我在VC6中编译的结果,下面是我在VC8中的结果:

------ Using D:\PROGRA~1\DDK\NT52R1 DDK
1>------ Build started: Project: VdwLibs, Configuration: WDM Free Win32 ------
1>Compiling...
1>suballoc.cpp
1>stcinit.cpp
1>kstlphs.cpp
1>kstlnphs.cpp
1>kstllmcb.cpp
1>kstl.cpp
1>util.cpp
1>kwmistr.cpp
1>kwmi.cpp
1>kvxdintf.cpp
1>kustring.cpp
1>kusb.cpp
1>kunitnam.cpp
1>ktrace.cpp
1>ktimer.cpp
1>ksysthrd.cpp
1>Kstrmdrv.cpp
1>Kstream.cpp
1>Kstradpt.cpp
1>kstdwmi.cpp
1>Generating Code...
1>Compiling...
1>kspin.cpp
1>KsMiniDriver.cpp
1>ksfifo.cpp
1>ksemaphr.cpp
1>kresreq.cpp
1>kregkey.cpp
1>kquery.cpp
1>kpnplow.cpp
1>kpnpdev.cpp
1>kphysdev.cpp
1>kpcicfg.cpp
1>kmutex.cpp
1>klower.cpp
1>klist.cpp
1>kirp.cpp
1>kintrupt.cpp
1>khidaux.cpp
1>kfile.cpp
1>kfifo.cpp
1>kexception.cpp
1>Generating Code...
1>Compiling...
1>kevent.cpp
1>kerrlog.cpp
1>kdmqex.cpp
1>kdmqcsq.cpp
1>kdmaxfer.cpp
1>kdevque.cpp
1>kdevice.cpp
1>kchecker.cpp
1>kbus.cpp
1>kaddress.cpp
1>kadapter.cpp
1>K1394Isoc.cpp
1>k1394Async.cpp
1>k1394.cpp
1>getnames.cpp
1>dwcontrl.cpp
1>cpprt.cpp
1>Generating Code...
1>Creating library...
1>Build Environment Variables
1>BASEDIR=D:\PROGRA~1\DDK\NT52R1
1>Build log was saved at "file://c:\Program Files\Compuware\DriverStudio\DriverWorks\source\obj\i386\wdmfree\BuildLog.htm"
1>VdwLibs - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

下面是在VC7中的结果:
------ Build started: Project: VdwLibs, Configuration: Win32 WDM Free Win32 ------

Compiling with D:\PROGRA~1\DDK\NT52R1 DDK x86 compiler...
suballoc.cpp
stcinit.cpp
kstlphs.cpp
kstlnphs.cpp
kstllmcb.cpp
kstl.cpp
util.cpp
kwmistr.cpp
kwmi.cpp
kvxdintf.cpp
kustring.cpp
kusb.cpp
kunitnam.cpp
ktrace.cpp
ktimer.cpp
ksysthrd.cpp
Kstrmdrv.cpp
Kstream.cpp
Kstradpt.cpp
kstdwmi.cpp
Generating Code...
Compiling...
kspin.cpp
KsMiniDriver.cpp
ksfifo.cpp
ksemaphr.cpp
kresreq.cpp
kregkey.cpp
kquery.cpp
kpnplow.cpp
kpnpdev.cpp
kphysdev.cpp
kpcicfg.cpp
kmutex.cpp
klower.cpp
klist.cpp
kirp.cpp
kintrupt.cpp
khidaux.cpp
kfile.cpp
kfifo.cpp
kexception.cpp
Generating Code...
Compiling...
kevent.cpp
kerrlog.cpp
kdmqex.cpp
kdmqcsq.cpp
kdmaxfer.cpp
kdevque.cpp
kdevice.cpp
kchecker.cpp
kbus.cpp
kaddress.cpp
kadapter.cpp
K1394Isoc.cpp
k1394Async.cpp
k1394.cpp
getnames.cpp
dwcontrl.cpp
cpprt.cpp
Generating Code...
Creating library...
Build Environment Variables
BASEDIR=D:\PROGRA~1\DDK\NT52R1

Build log was saved at "file://c:\Program Files\Compuware\DriverStudio\DriverWorks\source\obj\i386\wdmfree\BuildLog.htm"
VdwLibs - 0 error(s), 0 warning(s)

---------------------- Done ----------------------

    Build: 1 succeeded, 0 failed, 0 skipped
2007-9-26 21:53
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
17
汗,偶现在用VS 2005 可以编译, 所以不考虑编译器的问题了.

现在关键是 DDK中的一个头文件:

#if _WIN32_WINNT >= 0x0501

编译出问题,不知道大叔有没有碰到过, 和版本相关联,难道是DDK的毛病吗?
2007-9-26 21:59
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
18
那个宏定义确实是用来判断操作系统版本的,但是你的机器安装的操作系统的版本与要编译生成的驱动程序要运行的操作系统的版本完全是两码事。你在32位的Windows上完全可以编译生成在64位Windows上运行的程序,这个宏是可以自己定义的。按我前面说的方法,并不会出现任何问题,不知你到底是如何操作的???
2007-9-26 22:01
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
19
完全按照你提示的步骤来的啊:

1.


DDK目录一打开就有,默认设置

2.

Laungh Program 后系统启动了VS 2005,偶就打开了VdwLibs.sln 开始编译.

选择的是WDM FREE

于是就出现了错误:

#if _WIN32_WINNT >= 0x0501

上传的附件:
2007-9-26 22:09
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
20
我用的是Windows Server 2003 SP1 DDK,等我安装XP SP1 DDK试一下。我还没有,还得下载。
2007-9-26 22:25
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
21
Windows XP SP1 DDK真是难下载。花了我好长时间才下载下来。当我将它安装上之后进行测试,结果与前面一样,并没有任何错误。真不知道你是如何安装与设置的???
以下是结果:

------ Using D:\PROGRA~1\DDK\NT51R1 DDK
1>------ Build started: Project: VdwLibs, Configuration: WDM Free Win32 ------
1>Compiling...
1>suballoc.cpp
1>stcinit.cpp
1>kstlphs.cpp
1>kstlnphs.cpp
1>kstllmcb.cpp
1>kstl.cpp
1>util.cpp
1>kwmistr.cpp
1>kwmi.cpp
1>kvxdintf.cpp
1>kustring.cpp
1>kusb.cpp
1>kunitnam.cpp
1>ktrace.cpp
1>ktimer.cpp
1>ksysthrd.cpp
1>Kstrmdrv.cpp
1>Kstream.cpp
1>Kstradpt.cpp
1>kstdwmi.cpp
1>Generating Code...
1>Compiling...
1>kspin.cpp
1>KsMiniDriver.cpp
1>ksfifo.cpp
1>ksemaphr.cpp
1>kresreq.cpp
1>kregkey.cpp
1>kquery.cpp
1>kpnplow.cpp
1>kpnpdev.cpp
1>kphysdev.cpp
1>kpcicfg.cpp
1>kmutex.cpp
1>klower.cpp
1>klist.cpp
1>kirp.cpp
1>kintrupt.cpp
1>khidaux.cpp
1>kfile.cpp
1>kfifo.cpp
1>kexception.cpp
1>Generating Code...
1>Compiling...
1>kevent.cpp
1>kerrlog.cpp
1>kdmqex.cpp
1>kdmqcsq.cpp
1>kdmaxfer.cpp
1>kdevque.cpp
1>kdevice.cpp
1>kchecker.cpp
1>kbus.cpp
1>kaddress.cpp
1>kadapter.cpp
1>K1394Isoc.cpp
1>k1394Async.cpp
1>k1394.cpp
1>getnames.cpp
1>dwcontrl.cpp
1>cpprt.cpp
1>Generating Code...
1>Creating library...
1>Build Environment Variables
1>BASEDIR=D:\PROGRA~1\DDK\NT51R1
1>Build log was saved at "file://c:\Program Files\Compuware\DriverStudio\DriverWorks\source\obj\i386\wdmfree\BuildLog.htm"
1>VdwLibs - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
2007-9-27 10:36
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
22
哈哈,难道是人品问题

我继续琢磨~~~
2007-9-27 12:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
按照武安河的WDM设备驱动程序开发安装,加载库后,Rebuild All ,编译框出现
Deleting intermediate files and output files for project 'NdisWdm - Win32 NDIS WDM Checked'.
Deleting intermediate files and output files for project 'NdisWdm - Win32 NDIS WDM Free'.
Deleting intermediate files and output files for project 'NdisWdm - Win32 IA64 Free'.
Deleting intermediate files and output files for project 'NdisWdm - Win32 IA64 Checked'.
Deleting intermediate files and output files for project 'VdwLibs - Win32 NT4 Free'.
C:\Program Files\NuMega\DriverStudio\DriverWorks\include\kndisvdw.h(42): Could not find the file kndiscpp.h.
C:\Program Files\NuMega\DriverStudio\DriverWorks\include\kndisvdw.h(71): Could not find the file KNdisSpinLock.h.
C:\Program Files\NuMega\DriverStudio\DriverWorks\include\kndisvdw.h(73): Could not find the file KNdisList.h.
C:\Program Files\NuMega\DriverStudio\DriverWorks\include\k1394.h(31): Could not find the file 1394.h.
然后我去打光盘自带的例子,点击后缀名.dsw的文件,打不开例子程序
自己按书上步骤编程时,编译提示打不开wdm.h
是不是安装出错了啊
请大侠们指点
2007-10-11 10:43
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
24
这主要是环境变量没有设置好
2007-10-11 15:57
0
游客
登录 | 注册 方可回帖
返回
//