Raul_Shao
驱动牛犊
驱动牛犊
  • 注册日期2005-03-05
  • 最后登录2006-03-22
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望14点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1204回复:4

什么时候调用DefaultPnp()?

楼主#
更多 发布于:2005-04-14 09:24
用ds的drivermonitor监测,在加载一个ds wizard自动生成没有做任何工作的driver时,发现函数的运行顺序是这样的:
DriverEntry()->AddDevice()->DefaultPnp()->DefaultPnp()->OnStartDevice()->DefaultPnp()->DefaultPnp().
我刚学驱动,想请教一下:
1,DefaultPnp()在什么时候被调用,完成什么功能.
2,为什么会连续调用两次.
我是一只小小牛
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-14 09:36
用ds的drivermonitor监测,在加载一个ds wizard自动生成没有做任何工作的driver时,发现函数的运行顺序是这样的:
DriverEntry()->AddDevice()->DefaultPnp()->DefaultPnp()->OnStartDevice()->DefaultPnp()->DefaultPnp().
我刚学驱动,想请教一下:
1,DefaultPnp()在什么时候被调用,完成什么功能.
2,为什么会连续调用两次.
 

处理PnP管理器发送的PnP请求,
2,为什么会连续调用两次.
其实PnP请求里面是用子功能码来区分是什么PnP请求,这两次是不同的,子功能码不同
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
Raul_Shao
驱动牛犊
驱动牛犊
  • 注册日期2005-03-05
  • 最后登录2006-03-22
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望14点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-14 11:49
我看大多数的defaultpnp()的代码多是这样的。
DefaultPnp(KIrp I)
{
    I.ForceReuseOfCurrentStackLocationInCalldown();
    NTSTATUS status = m_Lower.PnpCall(this, I);
    return status;
}
能解释一下这段代码马?
我是一只小小牛
aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-04-14 11:56
先把当前IO堆栈的内容拷贝到下一个IO堆栈,,然后调用下层驱动完

成此IRP的处理。。并返回下层驱动处理的返回状态。。。。。

大体就是这样子的了。。。。。
酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
Raul_Shao
驱动牛犊
驱动牛犊
  • 注册日期2005-03-05
  • 最后登录2006-03-22
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望14点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-14 13:08
谢谢老大,真强。向你学习。以后请多多指教。
我是一只小小牛
游客

返回顶部