|
|
发表于 2009-4-3 12:54:49
|
显示全部楼层
通常每个设备上都挂了不止一个驱动,这些驱动一起形成一个链栈。
, i) L! n! }# |: j/ j每当上面有IRP发下来(即用户要通过IRP请求驱动去操作设备),
) [- Q0 K- [2 _. }$ D2 d/ B总是最上面的那个驱动先得到处理权。8 |$ g9 n& t+ l- y8 }, |0 ~
该驱动可以按照自己的意愿去返回结果,也可以继续往下传送IRP,$ f) i1 u' o# v7 m6 w( B
让下面的驱动去处理。
- V2 I% g3 E# L$ M# x8 m* U. s4 r/ P. L
这个很类似于dos时代的hook中断服务程序(如果你做过的话会很熟悉)。' N7 W9 }! A3 ^6 H8 P
而dos下面的虚拟磁盘,内存磁盘等等虚拟的设备,就是通过hook相应的中断服务实现的 |
|