daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2399回复:7

请问nt的驱动和wdm之间的区别

楼主#
更多 发布于:2003-10-08 15:00
请问这两者有什么区别呢?是不是前者不支持插拔,后者支持插拔。

表现在ds中,前者是由device派生的,后者是 pnpdevice派生的?

前者生成的驱动没有inf文件,那么应该怎样安装它。
如果要修改reg,如何修改。
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于:2003-10-08 15:18
请问这两者有什么区别呢?是不是前者不支持插拔,后者支持插拔。

表现在ds中,前者是由device派生的,后者是 pnpdevice派生的?

前者生成的驱动没有inf文件,那么应该怎样安装它。
如果要修改reg,如何修改。
 


WDM是从NT KMD(内核模式)驱动的基础上发展来的,增加了PnP,电源管理等特性。
KMD驱动可以通过INF安装,也可以通过程序加载(DS里的DriverMoniter工具就可以做到)。
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-08 16:04
那nt的驱动该如何安装呢?是重新生成注册表项还是inf文件?
如果要生成,该如何生成呢?

还有就是我现在要做一个epp的并口驱动,2000下。
要完成读写系统端口,挂接系统中断。
我准备用driverstudio开发。
由于是我是个新手,现在还有一些问题:
(1) 我这个驱动应该做成什么类型才不会和系统原有驱动冲突。
      我试过用wdm,但是在分配资源的时候会和系统并口冲突。

(2) 我准备用KInterrupt挂接中断,是否可以在epp模式中的
      状态寄存器379中的第6位来判断中断是否为并口发出。

请看一下我的想法中有没有什么问题。
我在网上已经发了一些贴,但是都很零散,希望大侠能够给我
们说的具体一些,让我们这样菜鸟一看就会,而不是看了之后
浮想连翩:)

对了seaquestr,你不介意加我的qq吧,有些事可能要当面向你请教才说得清楚,我不会浪费你很多时间的。
我现在成都读研,做驱动也不是我得本职,纯粹是为了帮别人。
看在这样的动机上请你多指教。qq  67339146 在线等。

exdata
驱动牛犊
驱动牛犊
  • 注册日期2002-11-11
  • 最后登录2007-07-16
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-09 10:24
还有就是我现在要做一个epp的并口驱动,2000下。
要完成读写系统端口,挂接系统中断。
我准备用driverstudio开发。
由于是我是个新手,现在还有一些问题:
(1) 我这个驱动应该做成什么类型才不会和系统原有驱动冲突。
我试过用wdm,但是在分配资源的时候会和系统并口冲突。

/////////////////////////////////////////////////////
::wdm下动态获得就不会冲突了。


(2) 我准备用KInterrupt挂接中断,是否可以在epp模式中的
状态寄存器379中的第6位来判断中断是否为并口发出。
/////////////////////////////////////////////////////
::可以通过ACK判断。
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-09 15:20
你说的动态获得是指在kinterrupt初始化的时候指定中断号吗/
我只看明白了在nt方式下的构造程序,另一种构造方式我不太
懂,请你明示。
还有你说ack是硬件信息吧,怎么和驱动有关呢?

你做过并口驱动吗,有机会探讨一下。
exdata
驱动牛犊
驱动牛犊
  • 注册日期2002-11-11
  • 最后登录2007-07-16
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-09 17:35
//////////////////////////////////////////////////////////
你说的动态获得是指在kinterrupt初始化的时候指定中断号吗/
我只看明白了在nt方式下的构造程序,另一种构造方式我不太
懂,请你明示。
还有你说ack是硬件信息吧,怎么和驱动有关呢?

你做过并口驱动吗,有机会探讨一下。
//////////////////////////////////////////////////////////

1:看KIoRange 、kinterrupt构造函数;

2:ACK就是状态寄存器的bit6;

3:前段时间做过;
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-09 23:37
你好。
我原来是动态分配io端口的,但是我没有动态分配中断,直接
用了它的不带中断号的初试化函数。然后安装,资源没冲突,
但是设备启动不了。
现在我用了一个折中的方法,中断指定,io动态分配。
安装的时候没有问题了,设备也能打开。
还没有试中断的应答。请问这种做法应该没有问题吧。
还有你是怎么做测试的呢?直接将中断接地?
然后看调试输出?
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-10-10 09:09
麻烦再向您请教一个问题:
KInterrupt 在wdm
方式下的构造函数为:
VOID KInterrupt::Initialize(
KIRQL irql,
ULONG vector,
KINTERRUPT_MODE mode,
BOOLEAN bShareVector,
KAFFINITY affinity,
BOOLEAN bSaveFloat
)
其中irql应该是指中断号,即7?
vector是指中断向量号,对应该是多少?
mode是指latched?
bShareVector,affinity,bSaveFloat是?
我还是不太清楚,恳请指教。

还有就是你通过初始化,已经将中断绑定在了并口上
那么可不可以说此时只有并口可以出发中断,为什么
还要在服务程序中加入对中断位的判定呢?这样就是为
了保险?

请指教


游客

返回顶部