nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:2560回复:23

困惑的问题:一个完整的驱动都包括那些内容?愿意放尽所有的分!

楼主#
更多 发布于:2003-06-09 18:09
想知道一个完整的驱动都包括那些内容?
我是这样认为的:首先,它应该包括三部分:第一部分,是设备端的程序;第二部分,是WDM驱动程序,第三部分,是用户应用程序。不知这样说对不对?同时我很想知道的是这三部分各自又包含那些内容,比如说都包含那些文件?(尤其是第二部分)
我现在正在看的是第二部分的驱动程序,是用DDK+VC开发的(其他的我不知道)。有两套例程集可以参考,一套是Chris Cant的Windows WDM设备驱动程序开发指南的随书光盘中的例程,一个是DDK的例程src,前一个由于有书的讲解,有如下印象:一个驱动程序应该包括有一个*.dsp(dsw)工程文件,这样才能在在这个工程里,我们才能编写一些*.c,*.h文件,另外在这个工程里还包括和一些MAKEFILEbuild.err,build.log,build.wrn,MakeDrvr.bat,Makefile.inc,SOURCRE之类的文件(具体有哪些我也不太清楚,还要各位大侠补充一下),但是,在看DDK开发包的例程时,发现没有工程文件(dsp或dsw),那怎么编译呢?又如何把文件夹中的文件联系(大概是这个意思吧)到一块呢?
罗罗嗦嗦的说了一大堆,也不知大家看明白了没有?回答者必有分,当然,回答最细致的人得分最多,我已经做好把我现有的分都花在这个问题上的准备了。问题解决后,我在灌水坛放分!

最新喜欢:

mapoflmapofl
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-12 17:57
想知道一个完整的驱动都包括那些内容?
我是这样认为的:首先,它应该包括三部分:第一部分,是设备端的程序;第二部分,是WDM驱动程序,第三部分,是用户应用程序。不知这样说对不对?同时我很想知道的是这三部分各自又包含那些内容,比如说都包含那些文件?(尤其是第二部分)
我现在正在看的是第二部分的驱动程序,是用DDK+VC开发的(其他的我不知道)。有两套例程集可以参考,一套是Chris Cant的Windows WDM设备驱动程序开发指南的随书光盘中的例程,一个是DDK的例程src,前一个由于有书的讲解,有如下印象:一个驱动程序应该包括有一个*.dsp(dsw)工程文件,这样才能在在这个工程里,我们才能编写一些*.c,*.h文件,另外在这个工程里还包括和一些MAKEFILEbuild.err,build.log,build.wrn,MakeDrvr.bat,Makefile.inc,SOURCRE之类的文件(具体有哪些我也不太清楚,还要各位大侠补充一下),但是,在看DDK开发包的例程时,发现没有工程文件(dsp或dsw),那怎么编译呢?又如何把文件夹中的文件联系(大概是这个意思吧)到一块呢?
罗罗嗦嗦的说了一大堆,也不知大家看明白了没有?回答者必有分,当然,回答最细致的人得分最多,我已经做好把我现有的分都花在这个问题上的准备了。问题解决后,我在灌水坛放分!


驱动程序都是被动调用的,所以可以简单分成三部分,1、上层接口,2、中间处理部分,3、与底层接口部分,这可能是直接对设备或别的驱动。
你的认可是对我最大的鼓励!
perrywong2003
驱动牛犊
驱动牛犊
  • 注册日期2003-06-11
  • 最后登录2003-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-12 16:42
windyguy兄,我也是新手,
麻烦您也给我也发一份,kevinw77@ms33.hinet.net
谢谢!!
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-12 16:16
windyguy兄,我也是新手,
麻烦您给我也发一份,speaker103@sina.com.cn
谢谢
答得好的话,请兄弟们加点分,那是对我的肯定
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-12 09:02
明白了,谢谢windyguy. :)
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
windyguy
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2004-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-11 21:38
  Build先通过Source和makefile这两个文件的内容来编译项目,所以你要build什么,在Source里面指定清楚就好,不用build 目录A。

直接进入放了Source和makefile的目录,build,然后回车就ok。
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-11 21:18
谢谢windyguy! :)
-----------------------------
BUILD!!!!!
注意:source,makefile 文件!!!
------------------------
BUILD什么呀?是不是这样:build 目录A
makefile,source以及source里列出的*.c,*.h文件都在目录A下面? :D
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-11 19:47
-----------------------------------------------------------
在看DDK开发包的例程时,发现没有工程文件(dsp或dsw),那怎么编译呢?
-----------------------------------------------------------
BUILD!!!!!
注意:source,makefile 文件!!!
windyguy
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2004-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-11 19:19
    已发:),请查收
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-11 09:29
 我开始学习驱动,到现在差不多一个月了,毕业论文已经完成,这两天正在浏览那本厚厚的驱动程序开发指南。和Baofu,nlq_new兄一样,只是这方面的新手,因为都刚经历了初始入门的阶段,有些体悟相互交流一下也许对大家都是很大的帮助,如果需要的话,我可以把完成的论文发给你们一份,虽然大量内容都是来自Chris Cant和Walt Oney的书:)


真是好人哪!给我一份吧!信箱:nlq_new@hotmail.com.另:现在可以去灌水坛领分了!

有必要吗??


没别的办法表示感激呀! :D :D :D
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
BaoFu
驱动小牛
驱动小牛
  • 注册日期2002-10-07
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-11 07:00
谢谢windyguy兄:论文可发到:plbm1299@sohu.com,让我拜读一下,提高提高。
nlq_new兄:
  SOURCE文件中的内容是dos的批处理语句,基本是QBaisc语言中的东西,找本dos的书参考一下,很容易懂的。要说难点,在于BUILD命令采用的命令行界面,较之于图形界面的直观性太差。但命令行界面
也有它所好处:灵活性很强,一旦熟练后,用起来比图形界面更顺手和随心所欲。这也是微软至今仍(在这个领域里)坚持使用它的原因。
windyguy
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2004-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-10 21:03
你起码得有一些dos使用的知识,我试着解释下吧。

\"下面的是MakeDrvr文件的内容,我看不明白呀!都是什么意思?有没有人讲解一下。
@echo off                  //关闭屏幕回显,没什么要紧的
if \"%1\"==\"\" goto usage     //假如不存在参数1跳到usage段,参数1就是你运行MakeDrvr.bat后接的第一个参数,后同
if \"%3\"==\"\" goto usage    
if not exist %1\\bin\\setenv.bat goto usage//假如不存在该文件也跳到usage,就是setenv.bat这个文件,其中引用了参数1
call %1\\bin\\setenv %1 %4  //运行setenv.bat,call 就是开始一个外部命令
%2  //直接运行参数2,比如你MakeDrvr ok dir,因为dir是参数2,所以这个地方相当与执行dir命令
cd %3
build -b -w %5 %6 %7 %8 %9 //这儿就是用ddk来build了
goto exit  //成功退出.bat

:usage
echo usage   MakeDrvr DDK_dir Driver_Drive Driver_Dir free/checked [build_options]
echo eg      MakeDrvr %%DDKROOT%% C: %%WDMBOOK%% free -cef
:exit [/quote]\"
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-10 20:34
另:各位(我在包括以后的各位)去灌水坛领分吧。!


有必要吗??
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-10 20:23
我打开SOURCE文件看了:
wTARGETNAME=Wdm1
TARGETTYPE=DRIVER
DRIVERTYPE=WDM
TARGETPATH=OBJ

INCLUDES=$(BASEDIR)\\inc;

SOURCES= init.cpp \\
dispatch.cpp \\
pnp.cpp \\
DebugPrint.c \\
Wdm1.rc
以上这几个就是要编译的文件吗?
NTTARGETFILES=PostBuildSteps------这个是什么意思?

下面的是MakeDrvr文件的内容,我看不明白呀!都是什么意思?有没有人讲解一下。
@echo off
if \"%1\"==\"\" goto usage
if \"%3\"==\"\" goto usage
if not exist %1\\bin\\setenv.bat goto usage
call %1\\bin\\setenv %1 %4
%2
cd %3
build -b -w %5 %6 %7 %8 %9
goto exit

:usage
echo usage   MakeDrvr DDK_dir Driver_Drive Driver_Dir free/checked [build_options]
echo eg      MakeDrvr %%DDKROOT%% C: %%WDMBOOK%% free -cef
:exit
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
windyguy
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2004-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-10 19:27
  我开始学习驱动,到现在差不多一个月了,毕业论文已经完成,这两天正在浏览那本厚厚的驱动程序开发指南。和Baofu,nlq_new兄一样,只是这方面的新手,因为都刚经历了初始入门的阶段,有些体悟相互交流一下也许对大家都是很大的帮助,如果需要的话,我可以把完成的论文发给你们一份,虽然大量内容都是来自Chris Cant和Walt Oney的书:)
xyyln
驱动老牛
驱动老牛
  • 注册日期2003-01-02
  • 最后登录2009-12-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-06-10 15:50
[quote]那当我修改src里面的例子时,是不是就直接修改.c,.h文件就可以了,如果我想建立一个工程文件将它们包括进去进行再编译可不可以?还是习惯这样。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当然可以,随你所愿。

唉,当年设置VC时,一个星期才搞定,差点没疯掉。所以,BaoFu兄,跟我这种笨蛋加菜鸟比起来,你已经是天才少年了 :D。打起精神来,把DDK学好,让我将来有的问。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
就是就是,BaoFU不用谦虚了,呵呵。
[img]http://www.jt99.com/zjbbs/UploadFile/2003113018513643830.gif[/img]
xyyln
驱动老牛
驱动老牛
  • 注册日期2003-01-02
  • 最后登录2009-12-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-06-10 15:47
这段话的意思是说如果选择DDK作开发工具,不限制用什么编程工具来写,只要在DDK的free build或checkde build环境中将C,H,RC,SOURCE,MAKEFILE等文件进行编译就可以了。但是不能单个进行编译吧?比如说,我有这些文件(C,H,,RC,SOURCE,MAKEFILE)在文件夹WDM1里,是不是就要就编译整个WDM1文件夹中的所有内容?那DDK怎么识别那些哪些是要编译的,哪些文件是跟整个驱动无关的呢?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
进行怎样的编译SOURCE文件里已经决定了,Makefile所有的驱动都一样,只有相同的一行,SOURCE文件指定了编译文件的依赖性,RC从某个角度看就是SOURCE在VC下的表现。

MakeDrvr.bat批处理文件到底起什么作用?我打开它,但是看不懂它的内容;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
不就是几句批处理命令吗?很早前我看过,就是把编译的命令行参数拿进来,方便你编译驱动,完全可以自己写。
[img]http://www.jt99.com/zjbbs/UploadFile/2003113018513643830.gif[/img]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-06-10 11:40
另:各位(我在包括以后的各位)去灌水坛领分吧。!
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-06-10 10:48
引用BaoFu的话:
“src中的例子,每个特定的项目占据一个子目录,最低层的子目录中,就是生成一个WDM驱动所需要的全部源文件。注意里面有个htm文件,用IE打开后,会看到用英文写的简略地介绍该子目录中每个文件的作用,如何编译等等信息。你比较几个子目录就会发现,彼此并不相同。但其构成也无非是头文件,和扩展名为.C的源文件等等。“

那当我修改src里面的例子时,是不是就直接修改.c,.h文件就可以了,如果我想建立一个工程文件将它们包括进去进行再编译可不可以?还是习惯这样。

”下面说点题外话。----我猜,你大概想从整体上弄清WDM的结构,特别希望有个注释信息很详尽的例子,能事先知道程序的结构和功能,然后对照参考源代码进行模仿学习,这和我的念头一样。但至今也没有找到合适的资料。所以学习进展很慢。也许将来不得不该学较为容易的工具。 ”

我推荐过chris cant的书《Windows WDM驱动开发指南》,书中的内容就是针对随书光盘中的例子进行讲解的,不太深入,但是还可以,就是逐个看例子,对每个例子的代码逐行进行分析,同时参照walter
oney的书和DDK的help(最头疼的英文),挺有收获的,但是我就像windyguy说的,对基本知识没有概念(其实这才是关键的),所以虽然知道它(例子)这样作,但是不太明白它为什么这样作,再加上一些注册表,内存池,中断过程中优先级的转换等等让我望而生畏的概念(虽然我看了这些概念的相关资料,一遍又一遍的,但还是很糊涂,不能完全理解),所以,我的学习可以说是“消化了,但没吸收”。

唉,当年设置VC时,一个星期才搞定,差点没疯掉。所以,BaoFu兄,跟我这种笨蛋加菜鸟比起来,你已经是天才少年了 :D。打起精神来,把DDK学好,让我将来有的问。
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-06-10 10:08
引用windyguy的话:
“一个驱动程序,你甚至可以不用vc来编写,直接用记事本就可以。所谓的工程文件,是vc为了更好得组织代码而创建的。驱动不是必须要包含工程文件,至于dsw是vc的WorkSpace文件,也是为了组织代码
的,自己去看看vc的书吧。”

这段话的意思是说如果选择DDK作开发工具,不限制用什么编程工具来写,只要在DDK的free build或checkde build环境中将C,H,RC,SOURCE,MAKEFILE等文件进行编译就可以了。但是不能单个进行编译吧?比如说,我有这些文件(C,H,,RC,SOURCE,MAKEFILE)在文件夹WDM1里,是不是就要就编译整个WDM1文件夹中的所有内容?那DDK怎么识别那些哪些是要编译的,哪些文件是跟整个驱动无关的呢?


“MakeDrvr.bat是Chris Cant为了方便编译做的批处理,你可以手工用DDK编译,所以也不是必须。”

MakeDrvr.bat批处理文件到底起什么作用?我打开它,但是看不懂它的内容;
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
上一页
游客

返回顶部