beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1354回复:4

需要多线程吗?

楼主#
更多 发布于:2002-07-01 10:53
同样的设备装了N个,在访问他们的时候WDM驱动需要创建线程为每个
应用程序服务吗?
只要能解决问题,就一定给分。 希望高手赐教!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-01 11:10
不需要,每个驱动会管理N个设备对象,驱动代码是可重入的
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
JackyWu
驱动小牛
驱动小牛
  • 注册日期2001-10-25
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-01 11:53
驱动程序应该会为每个硬件都调用一次AddDevice吧。然后你在AddDevice里面一般都会创建一个fdo和DeviceExtension。每个硬件私有的数据都在fdo和DeviceExtension里面,以后IO Manager调用你的例程的时候都会将fdo传给你。我想IO Manager应该不会将具体硬件和fdo搭配错把。

瞎说的。错了请指正。
多年以后,我又回来了。
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-01 12:50
不需要。需要的是CreateFile时的不同的Symbol link对应不同的设备。而不同的Symbol link是驱动程序在AddDevice时分别创建的,比如
\\DosDevices\\000000000000001c#{a5dcbf10-6530-11d2-901f-00c04fb951ed}//一个设备
\\DosDevices\\000000000000001d#{a5dcbf10-6530-11d2-901f-00c04fb951ed}//另一个设备。
驱动程序只需在AddDevice调用IoCreateDevice时带FILE_AUTOGENERATED_DEVICE_NAME参数就可以了。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-01 14:06
多谢楼上的3位高手。
只要能解决问题,就一定给分。 希望高手赐教!
游客

返回顶部