一个IRP 被完成第二次时蓝屏,怎么正确调用PnpComplete

一个IRP 被完成第二次时蓝屏,如何正确调用PnpComplete
这个是调试DUMP文件得到的信息:

*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

MULTIPLE_IRP_COMPLETE_REQUESTS (44)
A driver has requested that an IRP be completed (IoCompleteRequest()), but
the packet has already been completed. This is a tough bug to find because
the easiest case, a driver actually attempted to complete its own packet
twice, is generally not what happened. Rather, two separate drivers each
believe that they own the packet, and each attempts to complete it. The
first actually works, and the second fails. Tracking down which drivers
in the system actually did this is difficult, generally because the trails
of the first driver have been covered by the second. However, the driver
stack for the current request can be found by examining the DeviceObject
fields in each of the stack locations.
意思大概应该是说一个驱动要求完成一个IRP(IoCompleteRequest例程()),但
数据包已经完成。
源代码位置是

if (status != STATUS_PENDING)
{
I.PnpComplete(this, status);
}
 
请高手指点如何避免一个IRP被要求完成第二次,或如何排除这个异常?万分感谢!

------解决方案--------------------
什么样的IRP要调用PnpComplete?
这是什么设备的驱动?
lz说得详细点。
------解决方案--------------------
感觉问题出在IRP上
你最好DEBUG看看是哪个IRP执行之后出现蓝屏
有可能在那个IRP执行之后已经释放了IRP资源
有些IRP调用了下层驱动后
可能由下层驱动释放了IRP资源会导致这种情况。
------解决方案--------------------
I.Infomation()=0 都去掉