阅读:1204回复:4
什么时候调用DefaultPnp()?
用ds的drivermonitor监测,在加载一个ds wizard自动生成没有做任何工作的driver时,发现函数的运行顺序是这样的:
DriverEntry()->AddDevice()->DefaultPnp()->DefaultPnp()->OnStartDevice()->DefaultPnp()->DefaultPnp(). 我刚学驱动,想请教一下: 1,DefaultPnp()在什么时候被调用,完成什么功能. 2,为什么会连续调用两次. |
|
|
沙发#
发布于:2005-04-14 09:36
用ds的drivermonitor监测,在加载一个ds wizard自动生成没有做任何工作的driver时,发现函数的运行顺序是这样的: 处理PnP管理器发送的PnP请求, 2,为什么会连续调用两次. 其实PnP请求里面是用子功能码来区分是什么PnP请求,这两次是不同的,子功能码不同 |
|
|
板凳#
发布于:2005-04-14 11:49
我看大多数的defaultpnp()的代码多是这样的。
DefaultPnp(KIrp I) { I.ForceReuseOfCurrentStackLocationInCalldown(); NTSTATUS status = m_Lower.PnpCall(this, I); return status; } 能解释一下这段代码马? |
|
|
地板#
发布于:2005-04-14 11:56
先把当前IO堆栈的内容拷贝到下一个IO堆栈,,然后调用下层驱动完
成此IRP的处理。。并返回下层驱动处理的返回状态。。。。。 大体就是这样子的了。。。。。 |
|
|
地下室#
发布于:2005-04-14 13:08
谢谢老大,真强。向你学习。以后请多多指教。
|
|
|