阅读:2521回复:7
请问nt的驱动和wdm之间的区别
请问这两者有什么区别呢?是不是前者不支持插拔,后者支持插拔。
表现在ds中,前者是由device派生的,后者是 pnpdevice派生的? 前者生成的驱动没有inf文件,那么应该怎样安装它。 如果要修改reg,如何修改。 |
|
沙发#
发布于:2003-10-08 15:18
请问这两者有什么区别呢?是不是前者不支持插拔,后者支持插拔。 WDM是从NT KMD(内核模式)驱动的基础上发展来的,增加了PnP,电源管理等特性。 KMD驱动可以通过INF安装,也可以通过程序加载(DS里的DriverMoniter工具就可以做到)。 |
|
|
板凳#
发布于:2003-10-08 16:04
那nt的驱动该如何安装呢?是重新生成注册表项还是inf文件?
如果要生成,该如何生成呢? 还有就是我现在要做一个epp的并口驱动,2000下。 要完成读写系统端口,挂接系统中断。 我准备用driverstudio开发。 由于是我是个新手,现在还有一些问题: (1) 我这个驱动应该做成什么类型才不会和系统原有驱动冲突。 我试过用wdm,但是在分配资源的时候会和系统并口冲突。 (2) 我准备用KInterrupt挂接中断,是否可以在epp模式中的 状态寄存器379中的第6位来判断中断是否为并口发出。 请看一下我的想法中有没有什么问题。 我在网上已经发了一些贴,但是都很零散,希望大侠能够给我 们说的具体一些,让我们这样菜鸟一看就会,而不是看了之后 浮想连翩:) 对了seaquestr,你不介意加我的qq吧,有些事可能要当面向你请教才说得清楚,我不会浪费你很多时间的。 我现在成都读研,做驱动也不是我得本职,纯粹是为了帮别人。 看在这样的动机上请你多指教。qq 67339146 在线等。 |
|
地板#
发布于:2003-10-09 10:24
还有就是我现在要做一个epp的并口驱动,2000下。
要完成读写系统端口,挂接系统中断。 我准备用driverstudio开发。 由于是我是个新手,现在还有一些问题: (1) 我这个驱动应该做成什么类型才不会和系统原有驱动冲突。 我试过用wdm,但是在分配资源的时候会和系统并口冲突。 ///////////////////////////////////////////////////// ::wdm下动态获得就不会冲突了。 (2) 我准备用KInterrupt挂接中断,是否可以在epp模式中的 状态寄存器379中的第6位来判断中断是否为并口发出。 ///////////////////////////////////////////////////// ::可以通过ACK判断。 |
|
地下室#
发布于:2003-10-09 15:20
你说的动态获得是指在kinterrupt初始化的时候指定中断号吗/
我只看明白了在nt方式下的构造程序,另一种构造方式我不太 懂,请你明示。 还有你说ack是硬件信息吧,怎么和驱动有关呢? 你做过并口驱动吗,有机会探讨一下。 |
|
5楼#
发布于:2003-10-09 17:35
//////////////////////////////////////////////////////////
你说的动态获得是指在kinterrupt初始化的时候指定中断号吗/ 我只看明白了在nt方式下的构造程序,另一种构造方式我不太 懂,请你明示。 还有你说ack是硬件信息吧,怎么和驱动有关呢? 你做过并口驱动吗,有机会探讨一下。 ////////////////////////////////////////////////////////// 1:看KIoRange 、kinterrupt构造函数; 2:ACK就是状态寄存器的bit6; 3:前段时间做过; |
|
6楼#
发布于:2003-10-09 23:37
你好。
我原来是动态分配io端口的,但是我没有动态分配中断,直接 用了它的不带中断号的初试化函数。然后安装,资源没冲突, 但是设备启动不了。 现在我用了一个折中的方法,中断指定,io动态分配。 安装的时候没有问题了,设备也能打开。 还没有试中断的应答。请问这种做法应该没有问题吧。 还有你是怎么做测试的呢?直接将中断接地? 然后看调试输出? |
|
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是? 我还是不太清楚,恳请指教。 还有就是你通过初始化,已经将中断绑定在了并口上 那么可不可以说此时只有并口可以出发中断,为什么 还要在服务程序中加入对中断位的判定呢?这样就是为 了保险? 请指教 |
|