如何区分 WDM驱动 和NT驱动??
相关代表:
WDM驱动:Windows WDK中的例子 src\input\moufiltr 鼠标过滤驱动
NT驱动:Mark Russinovich编写的ctrl2cap 键盘过滤驱动
网上查到资料:
WDM由.inf文件加载,NT通过服务手动加载
WDM支持即插即用,NT不支持即插即用
WDM通过注册表指定挂载那个驱动,NT可通过寻找不同的设备对象指定挂载
我自己的体验:将WDM驱动 "如moufiltr" 用SRVINSTW.EXE安装(服务名为:moufiltr),再net start moufiltr时,有报错。这也算是是WDM和NT的区别之一吗?-----①
上面这些网上的说法读了感觉比较笼统,我问点比较具体的:
比如我拿到一个 驱动源码 ,它没带有inf文件,也没有说明文件指明是WDM还是NT,那此时,我如何区分它是WDM还是NT?
我想到几个方式:
把它编译出来形成 XXX.sys,直接用SRVINSTW.EXE安装(服务名为:XXX),再net start XXX ,看会不会报错:报错为WDM,不报错为NT。这样判断可以吗?-----②
判断即插即用:通过看 派遣函数 是否指派IRP_MJ_PNP?但是ctrl2cap中也有IRP_MJ_PNP,可它是NT式的啊。如何判断?-----③
看在驱动中是否驱动自己 寻找设备对象进行挂载。是,则是NT(如ctrl2cap);不是,则是WDM。这样判断可以吗?-----④
还有Windows系统是如何判断WDM和NT的?如上面①中,我将WDM式的moufiltr当做NT驱动来加载,并试图使其工作时,系统就报错了,系统是如何判断moufiltr不是NT式的?-----⑤
还有一个题外问题:写驱动时,如何查找到该种驱动需要实现那些 派遣函数(IRP_MJ_xxx)? 如鼠标驱动需要实现 几个及哪几个IRP_MJ_xxx,磁盘驱动是 那几个IRP_MJ_xxx,网卡驱动是那几个IRP_MJ_xxx,这些是在哪里可以查到?(不要直接说在MSDN里找,请指出在那个分支里,因为我在MSDN里找过,但是没找到)-----⑥
以上 ①②③④⑤⑥ 六个问题,请大家帮我解惑,希望大家知道多少说多少吧。
万分感谢,万分感谢。