相关代表:
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里找过,但是没找到)-----⑥
以上 ①②③④⑤⑥ 六个问题,请大家帮我解惑,希望大家知道多少说多少吧。
万分感谢,万分感谢。

解决方案 »

  1.   

    我自己的体验:将WDM驱动 "如moufiltr"  用SRVINSTW.EXE安装(服务名为:moufiltr),再net start moufiltr时,有报错。这也算是是WDM和NT的区别之一吗?-----① 
    ===================
    NT也能这么安装。不能这么区别上面这些网上的说法读了感觉比较笼统,我问点比较具体的: 
    比如我拿到一个 驱动源码 ,它没带有inf文件,也没有说明文件指明是WDM还是NT,那此时,我如何区分它是WDM还是NT? 
    我想到几个方式: 
    把它编译出来形成 XXX.sys,直接用SRVINSTW.EXE安装(服务名为:XXX),再net start XXX ,看会不会报错:报错为WDM,不报错为NT。这样判断可以吗?-----② 
    =========================
    没有INF,WDM也有加载成功的可能。但是运行会出问题,不信你弄个WDM的驱动,用DriverMonitor(加载NT驱动的工具)也可以加载,但是没法卸载。不像NT的那样能卸载,为什么呢?因为结构不同,WDM的IRP_MJ_CLOSE例程中随便干什么都没关系。
    判断即插即用:通过看 派遣函数 是否指派IRP_MJ_PNP?但是ctrl2cap中也有IRP_MJ_PNP,可它是NT式的啊。如何判断?-----③ 
    ==============================
    纠正你的错误。ctrl2cap是WDM型的驱动,PNP管理器是判断NT和WDM最明显的标志看在驱动中是否驱动自己 寻找设备对象进行挂载。是,则是NT(如ctrl2cap);不是,则是WDM。这样判断可以吗?-----④ 
    =====================
    再次强调,那个是WDM还有Windows系统是如何判断WDM和NT的?如上面①中,我将WDM式的moufiltr当做NT驱动来加载,并试图使其工作时,系统就报错了,系统是如何判断moufiltr不是NT式的?-----⑤ 
    ============================
    单有个sys文件,如果不逆向的话,是看不出是那种类型的。如果附带了inf,那就肯定是WDM了还有一个题外问题:写驱动时,如何查找到该种驱动需要实现那些 派遣函数(IRP_MJ_xxx)? 如鼠标驱动需要实现 几个及哪几个IRP_MJ_xxx,磁盘驱动是 那几个IRP_MJ_xxx,网卡驱动是那几个IRP_MJ_xxx,这些是在哪里可以查到?(不要直接说在MSDN里找,请指出在那个分支里,因为我在MSDN里找过,但是没找到)-----⑥ 
    ===================
    这个你自己去看书,太多了。我打字得打死我
      

  2.   

    先谢谢Tr0j4n关于⑥我是想问,关于 “各种驱动需要实现那些 派遣函数”这个知识点,在哪查到?比如用什么关键字在google上比较好搜索到?我买了2本书,都没提到,网上也没找到。只希望提供个线索就行了。
      

  3.   

    你买的什么垃圾书啊我入门看的是《Windows驱动开发技术详解》
    提高看的是《寒江独钓》