[讨论]如何判断某个驱动是总线驱动、功能驱动、还是过滤驱动?

解决方案 »

  1.   

    是说只有一个sys(...)文件么???没什么好办法,要是系统的,ms有过说明,你去找找,要是额外的,碰运气吧,随便什么办法,想到就用吧!
      

  2.   

    我想您的意思是某个驱动sys 文件是总线驱动程序、功能驱动程序、还是过滤驱动程序把?
    建议你去读代码
    ntddk\src\general\toaster
    目录下有在同一条设备栈上由底到顶的。总线驱动、功能驱动、过滤驱动的samples ,还有挂接stack的应用程序都有代码。
    我可以简单的说一下(wdm模式来说):
    Bus driver 是挂接在root设备上的。root设备是一个驱动程序中最下边的东西, Bus driver的fdo挂在root 上,跟其他驱动不同的是Bus driver 的fdo在接受到PNP的IRP_MN_QUERY_DEVICE_RELATIONS下的BusRelations情况的时候产生在他设备蘸上的功能驱动程序的pdo
    功能驱动程序相对简单,附加到设备堆栈的时候在AddDevice()里,IocreateDevice()跟BUs driver为他创建的pdo挂接就连接到设备栈上了。
    过滤器嘛,就更简单过滤驱动程序最大的特点是把自己的IRP_MJ_**列成拷贝一份,实现上传下达。
    这是我个人的理解希望对你有用。