vancaho
驱动牛犊
驱动牛犊
  • 注册日期2004-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分574分
  • 威望100点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分0分
阅读:1256回复:1

KMD中如何AddDevice?高手帮忙讨论下

楼主#
更多 发布于:2007-11-14 21:48
根据我的了解,WDM驱动中是PNP管理器调用DriverObject->AddDevice例程,通知驱动程序新的设备到达,然后我们可以绑定该设备,如果我的驱动想动态加载和卸载,也就是KMD的方式,就不能使用AddDevice例程了,那PNP管理器怎么通知我的驱动呢?怎样邦定该设备呢?
我有个想法,调用IoRegisterPlugPlayNotification(),注册设备的到达函数,这样获取设备的接入信息,不过有个疑问,是不是当系统使用CallBack通知我的驱动时候,PNP管理器已经对该设备IRP_START_DEVICE了?
不知道还有没有其他方法
zhangleierli
驱动小牛
驱动小牛
  • 注册日期2007-01-31
  • 最后登录2017-05-24
  • 粉丝1
  • 关注0
  • 积分3分
  • 威望158点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-11-15 13:21
应该还没发送IRP_START_DEVICE吧,看了oney的书上说  "一旦资源分配确定,PnP管理器通过向每个设备发送一个带IRP_MN_START_DEVICE副功能码的PnP请求来通知设备。通常过滤器驱动程序对这个IRP不感兴趣,所以它们使用DefaultPnpHandler方式把请求向下传。而功能驱动程序正好相反,它需要在这个IRP上做大量工作,包括分配并配置额外的软件资源以及为设备操作做准备。这个工作需要在PASSIVE_LEVEL级上进行,并在低层驱动程序处理完该IRP后完成。"
游客

返回顶部