阅读:2276回复:2
IRP请求包中的堆栈单元怎么会有多个IO_STACK_LOCATION
IRP请求包中的堆栈单元怎么会有多个IO_STACK_LOCATION,比如用IoBuildSynchronousFsdRequesT创建一个IRP,那他只能有一个
IO_STACK_LOCATION单元。 |
|
最新喜欢:changb... |
沙发#
发布于:2001-06-10 17:47
据我理解:IRP可以沿着这个栈向下传递,完成以后再向上返回
|
|
|
板凳#
发布于:2001-06-30 16:09
WDM下的驱动程序是分层的,你生成了一个IRP需要传到下层去,你就同时生成了几个IO_STACK_LOCATION,每个代表一个下层的驱动。
用来存放一些参数,比如MajorFunction。你可能会问,为什么一个包在不同层还要指定几次MajorFunction呀?YES,因为每个驱动程序都对一个IRP的功能可以做不同的解释。 比如,一个USB设备驱动程序受到了一个IRP_MJ_READ数据包。那么它需要吧它传到BUS DRIVER去,但它和BUS DRIVER的通信是通过DEVICEIOCONTROL接口来做的。于是它就可以修改这个MajorFunction为IRP_MJ_DEVICE_CONTROL,传到下面去。 你明白了吧??? |
|
|