silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2694回复:22

怎么用TurboDebugger或AFD调试DOS下的驱动程序?(20分)

楼主#
更多 发布于:2002-10-10 11:12
有人建议我用TurboDebugger或AFD(Advanced Full-screen Debugger)调试dos下的驱动程序,但是,好像TurboDebugger只能调试exe文件,怎样用它来调试驱动程序呢,哪儿有这些帮助吗?至于AFD,我根本就不知道怎么用它把我的驱动程序调入,更不用说设断点了,我找到的AFD就一个可执行文件,下面根本没有帮助,谁能指导指导啊。(20分以答谢)
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-08 17:01
别争了,各位的建议都很有道理,我听后收益不浅。我写的是网卡驱动程序,按ndis2写,因为要和上层协议接口,要和msclient,LanManager之类的东西一起安装,所以只能写成驱动,不能写成TSR,很可惜。如果当成普通的设备用,那我还不如直接写一个应用程序,直接对硬件进行操作呢。我的驱动和printer,clk这类有相似之处,不过比它们复杂多了:我有象它们一样的驱动头部,复杂之处就是我有很多复杂的Characteristics要和上层协议交互。向各位打听一下:调用TCPDRV$中断,ax=4402h,cx=0019h,bx=handle of \"TCPDRV\",ds:dx points to\"07 00 00 00 00 00 00 00 00 00 00 00 00...\",省略号表示00,int 21h后,CF=0(SUCCESS),AX==0019h, ds:dx:=\"07 07 00 00 00 00 00 00...\",省略号表示00。可是rtl8139调用之后,其它的一样,ds:dx:=\"07 00 00 00 62 00 a7 0c 00 00 00...\",其中0ca7:0062指向的是网卡驱动的MACServiceCharacteristics,那我的那结果又算是什么呢?谁能告诉我ds:dx指向的内容吗?谢谢!!!
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-08 16:14
你说呢?
Tom_lyd
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-08 15:14
你说得很对,.exe、.com都可以直接在命令行下执行。

那我不懂了
你说DOS驱动“有的以.exe存在,也有的以.sys存在,还有的以.com存在。”
按你的推理就是DOS驱动也能在命令行执行。那么,这样的驱动是否也有DOS .sys那些头?这样的驱动是否不挂中断?这样的驱动是否不驻留内存?
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-08 14:40
你说得很对,.exe、.com都可以直接在命令行下执行。
Tom_lyd
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-08 14:30
:)

???
我说的不对吗?
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-08 14:09
:)
Tom_lyd
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-08 13:41
驱动一定要由系统载入,用load或lh
你说那些.exe,.com,在命令行可以直接执行。
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-08 13:40
猫兄似乎有点生气,我想没有必要,我只不过是把我的观点摆出来,有什么不正确的大家可以指正,呵呵;)
驱动程序并不一定是以.sys结尾的文件,DOS下也存在多种扩展文件名的驱动,有的以.drv的形式存在,有的以.exe存在,也有的以.sys存在,还有的以.com存在。
我不知道你所说的驱动程序放到高端是指哪个位置,是640K的高端吗?还是HMA?还是UMB?还是扩展内存区?
我所说的完全等价,是指功能上和程序本身结构特点上。TSR在某些功能上甚至强于驱动。驱动依赖于操作系统的调度,TSR可以不依赖于操作系统,而直接依赖于BIOS调用激活。但是DOS储备设备链表管理当前系统中的所有软件、硬件设备,如果某一设备没有在设备链表中登记,那么你写了一个TSR程序在那里也不会工作。
 

具体那种高端,怎么调入,我真的忘记了,我最早玩电脑时主要玩得DOS,很久不玩了。
为何要DOS调度呢?TSR完全可以。
你说的.exe,.com的驱动,其实就是TSR
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-08 13:30
猫兄似乎有点生气,我想没有必要,我只不过是把我的观点摆出来,有什么不正确的大家可以指正,呵呵;)
驱动程序并不一定是以.sys结尾的文件,DOS下也存在多种扩展文件名的驱动,有的以.drv的形式存在,有的以.exe存在,也有的以.sys存在,还有的以.com存在。
我不知道你所说的驱动程序放到高端是指哪个位置,是640K的高端吗?还是HMA?还是UMB?还是扩展内存区?
我所说的完全等价,是指功能上和程序本身结构特点上。TSR在某些功能上甚至强于驱动。驱动依赖于操作系统的调度,TSR可以不依赖于操作系统,而直接依赖于BIOS调用激活。但是DOS储备设备链表管理当前系统中的所有软件、硬件设备,如果某一设备没有在设备链表中登记,那么你写了一个TSR程序在那里也不会工作。
Tom_lyd
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-08 12:44
silan:花猫说得有点偏颇。
DOS下的TSR和DOS驱动不可同日而语,不能完全等价。
TSR可视为DOS内核的扩充,使DOS具备了简单的多任务功能。它通过挂接特定中断的方式驻留在内存(一般是常规内存),当特定的中断被调用时,它就被激活。
而DOS驱动程序当然也是DOS内核的一部分,DOS驱动程序有特定的结构,分为三部分:具体分布我现在不记得了,只记得第一部分为设备头,第三部分为设备体,即驱动程序的实际工作代码。DOS自身会维护一个设备链表,你自己写的驱动程序只要加载成功,DOS就会在内核为你的驱动生成一个节点(而TSR没有这个概念);另一个区别在于内存的存储位置:DOS具备了把所有的驱动程序放在高端内存的功能,而TSR需要程序编制者自己写,这样会很复杂;用户写的驱动一般在Config.sys里加载,命令格式如下:
lh c:\\driver\\abc.sys
lh的意思就是说让DOS把驱动放在高端,不占用常规内存。

 

1,有什么东西驱动能做TSR不能做的?有多少“驱动”是.sys的?鼠标驱动是什么格式的?
2,TSR一样可以简单地放到高端,具体做法我忘记了,但确实可以!
3,什么叫完全等价?难道文件格式一样才叫等价?
4,不知道你们看过多少DOS下的“驱动”,就是那种用来管理硬件的,有多少是.sys的???
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-08 11:21
[quote]DOS下的码动虽然没WINDOWS的明了,但它也它的概念,和TSR是有点不同的,因为在DOS下写也它的规范,当然可以说,能写成DOS的东西也可以用TSR来实现,但不是一种简单替代,因为它在概念和格式上是二回事,在DOS下码动根本没有和TSR有什么驻留、勾持中断等东西,这一切工作是由DOS本身来帮你完成,你根本就不必知道。总之它们的写法是完全不同的!!!!!!!

\"这一切工作是由DOS本身来帮你完成,你根本就不必知道\",如果我知道了,还自己做了,也一样效果吧,结果不就是TSR?
DOS帮做什么了?
鼠标驱动是驱动吧,但DOS下一般的鼠标驱动都是.exe的,很少有.sys的。
二进制格式当然不一样,但最后落点不都一样?
其实我对DOS驱动根本不了解,因为我知道TSR可以干一切事情就足够了。
干嘛那么多感叹号?????????????????????
 :mad: :mad: :mad: :mad: :mad: :mad: [/quote]
silan:花猫说得有点偏颇。
DOS下的TSR和DOS驱动不可同日而语,不能完全等价。
TSR可视为DOS内核的扩充,使DOS具备了简单的多任务功能。它通过挂接特定中断的方式驻留在内存(一般是常规内存),当特定的中断被调用时,它就被激活。
而DOS驱动程序当然也是DOS内核的一部分,DOS驱动程序有特定的结构,分为三部分:具体分布我现在不记得了,只记得第一部分为设备头,第三部分为设备体,即驱动程序的实际工作代码。DOS自身会维护一个设备链表,你自己写的驱动程序只要加载成功,DOS就会在内核为你的驱动生成一个节点(而TSR没有这个概念);另一个区别在于内存的存储位置:DOS具备了把所有的驱动程序放在高端内存的功能,而TSR需要程序编制者自己写,这样会很复杂;用户写的驱动一般在Config.sys里加载,命令格式如下:
lh c:\\driver\\abc.sys
lh的意思就是说让DOS把驱动放在高端,不占用常规内存。

Tom_lyd
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-11-08 09:58
DOS下的码动虽然没WINDOWS的明了,但它也它的概念,和TSR是有点不同的,因为在DOS下写也它的规范,当然可以说,能写成DOS的东西也可以用TSR来实现,但不是一种简单替代,因为它在概念和格式上是二回事,在DOS下码动根本没有和TSR有什么驻留、勾持中断等东西,这一切工作是由DOS本身来帮你完成,你根本就不必知道。总之它们的写法是完全不同的!!!!!!!

\"这一切工作是由DOS本身来帮你完成,你根本就不必知道\",如果我知道了,还自己做了,也一样效果吧,结果不就是TSR?
DOS帮做什么了?
鼠标驱动是驱动吧,但DOS下一般的鼠标驱动都是.exe的,很少有.sys的。
二进制格式当然不一样,但最后落点不都一样?
其实我对DOS驱动根本不了解,因为我知道TSR可以干一切事情就足够了。
干嘛那么多感叹号?????????????????????
 :mad: :mad: :mad: :mad: :mad: :mad:
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-11-08 09:52
兄弟你有ndis2网卡驱动例子代码吗?那太好了, 我真急需这个,雪中送炭!!!遇到救星了!!!发到我的信箱号码:zhangba@cmmail.com,可以吗?谢谢喽!
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
gz818
驱动小牛
驱动小牛
  • 注册日期2002-02-26
  • 最后登录2008-11-15
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-10-24 13:14
我有DOS下网卡的源程序例子,回去找找,想必可以有所帮助!
如果是国外的下不来的东东,可以告诉我,帮帮也可以,不要太大了!
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-10-22 13:37
silan兄来了只回复,好吗?
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-10-19 10:33
softice2.8我实在不敢恭维,我已经摸索了好长时间,才决定放弃softice for dos:和emm386.exe冲突,没有emm386.exe我的网络又不能加载,没法调(我的是网卡驱动程序)。此外还不能用\'boot\',老是出现\'Divide overflow\'或死在softice中出不来。我的目标是要做一个像rtl8139那样的dos下的网卡驱动程序,一来可以和网络协议接口,二来可以做pxe无盘网络。可是这个dos下的网卡驱动简直要了我的命,已经四个月了,我还没调出来,我快崩溃了,调试工具不好用(不像windows下的又多又好),还没有这方面的例子源代码(指dos下的网卡驱动程序)。


silan兄,我还是建议用SOFTICE2.8,是真的,它的功能很强大的,你还不知道吗?它除了是一个很好的调试器,更是个一个DOS下的好内存管理器,你根不用加载EMM386.EXE,用SOFTICE2.8就可以管理RAM内存!!!

要不你把你的东西拿来我给你调试吧,在这行我不行的!!!

[编辑 -  10/19/02 by  ldljlzw]
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-10-19 10:24
DOS下的码动虽然没WINDOWS的明了,但它也它的概念,和TSR是有点不同的,因为在DOS下写也它的规范,当然可以说,能写成DOS的东西也可以用TSR来实现,但不是一种简单替代,因为它在概念和格式上是二回事,在DOS下码动根本没有和TSR有什么驻留、勾持中断等东西,这一切工作是由DOS本身来帮你完成,你根本就不必知道。总之它们的写法是完全不同的!!!!!!!
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-10-11 16:56
问题是我的驱动早就写好了,就是不知道怎么调试。写TSR可以和ndis2接口吗?能和protman等这些东东交互吗(我是外行,提出的问题可能会让你喷饭)?哎,还是先给你20分吧(恋恋不舍的,无可奈何花落去啊)。。。。。。

你是外行,我也不是内行
注意,DOS不是Windows,它下面驱动的概念很淡,而且即使是.sys驱动,也是挂接中断,和TSR一样。你把你的.sys改成TSR,应该是很容易的。DOS下的驱动,其实就是在中断里干一些事。
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-10-11 15:41
问题是我的驱动早就写好了,就是不知道怎么调试。写TSR可以和ndis2接口吗?能和protman等这些东东交互吗(我是外行,提出的问题可能会让你喷饭)?哎,还是先给你20分吧(恋恋不舍的,无可奈何花落去啊)。。。。。。
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
上一页
游客

返回顶部