阅读:2171回复:5
关于 IRP_MJ_INTERNAL_DEVICE_CONTROL 的几个小问题!!!1,IRP_MJ_INTERNAL_DEVICE_CONTROL : DriverEntry设置的这个入口 在什么情况下才会执行? 2,对这个主功能码 的使用 有什么限制 ? 是不是只能在某个层次的驱动程序才能使用? 还是 所有的功能驱动,mini-driver ,filter 驱动 都能够使用啊/?? :( |
|
|
沙发#
发布于:2003-01-15 12:35
------------------------------
1,IRP_MJ_INTERNAL_DEVICE_CONTROL : DriverEntry设置的这个入口 在什么情况下才会执行? ----------------------------- 一个驱动向另一个驱动发送自定义的IRP时使用。 --------------------------- 2,对这个主功能码 的使用 有什么限制 ? 是不是只能在某个层次的驱动程序才能使用? 还是 所有的功能驱动,mini-driver ,filter 驱动 都能够使用啊/?? --------------------------- 没限制。 |
|
板凳#
发布于:2003-01-15 15:01
谢谢 tjm
我觉得一个顶层 的和 应用程序接口的 驱动程序并不用处理这个 功能代码吧?? :( 如果可以, 能不能举个简单的例子说明一下?? :) 稍侯给分! :) |
|
|
地板#
发布于:2003-01-15 19:14
目前该功能好像主要用于 usb .
在 USB 体系中,驱动程序收到 irp_mj_write 之后,就会创建一个 IRP_MJ_INTERNAL_DEVICE_CONTROL 得主功能码往下传. oney 得那本书讲得很清楚. ;) |
|
|
地下室#
发布于:2003-01-15 20:51
有些驱动必须处理这个IRP,例如MINIDRIVER,某些FILTER,最好的离子就是HID的MINIDRIVER。
有些程序是可选择的,如果你有两个驱动,他们之间需要通信,一种方法就是构建一个自己定义的IRP,用IOCALLDRIVER,发送出去,发出的就是IRP_MJ_INTERNAL_DEVICE_CONTROL,接受的一方就从IRP_MJ_INTERNAL_DEVICE_CONTROL中得到详细信息。从这个用途讲,是否在顶层并无多大关系。 如果你不是在顶层又不处理这个IRP,而你所处战中有驱动发出INTERNAL_DEVICE_CONTROL,我不清楚会发生什么。 根据IRP的传送方向,在顶层的驱动如果没有横向通信的需要,可能不许要处理这个IRP。 不过,我通常都处理这个IRP,以及SYSTEM-CONTROL IRP,反正向下传就是了。 |
|
5楼#
发布于:2003-01-16 09:58
谢谢tjm , lvwj ,
找 oney 的书翻翻 先, 慢慢体会 :) 给分 :) |
|
|