阅读:1141回复:2
半夜23:20提个问题
我看Walt Oney的书看到一个函数:
NTSTATUS HandleStartDevice(PDEVICE_OBJECT fdo, PIRP Irp) { Irp->IoStatus.Status = STATUS_SUCCESS; <--1 NTSTATUS status = ForwardAndWait(fdo, Irp); .... } 对于第一句的解释是这样的: 总线驱动程序利用IoStatus.Status中的设置来判断上层驱动程序是否已经处理了该IRP。对于IRP_MJ_PNP的其它几种副功能码,总线驱动程序也做类似的判断。因此,我们需要把IRP的Status域初始化成STATUS_SUCCESS,然后再传递下去。 我的疑问是: 1,如果上层驱动不把Irp->IoStatus.Status初始化成STATUS_SUCCESS,则总线驱动程序会有什么反应? 2,是出于什么原因让总线驱动程序去检查这个东西?我想如果在上层驱动程序对于StartDevice这个PNP请求的处理发生错误(我也不知道大概会发生什么错误)的情况下,上层驱动程序还有必要往下发IRP吗? 菜鸟的菜问题。老鸟有空帮忙看看。 |
|
|
沙发#
发布于:2002-05-16 23:30
你去看一下DDK帮助里面的PNP一节吧!上面有说明了!刚才回答错了,后来看DDK和源代码才知道的
|
|
板凳#
发布于:2002-05-17 00:10
:D多谢老大,很遗憾,刚才错的我没有看到哦。娃哈哈。。。。
|
|
|