blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1522回复:6

怎样共享设备?

楼主#
更多 发布于:2001-08-22 17:28
我建立了一设备驱动程序,我想作到多进程。可是我要在API中输出的每个函数都加上CreateFIle & CLoseHandle,就严重影响了效率;可如果不每次都 打开设备的话,就解决不了多进程。
想知道大家是怎么解决多进程共享设备的。
winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-22 20:06
看不太懂
请原谅我的无知与直率
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-22 20:53
就是说:我在一个进程中用CreateFile()打开了设备,在还没有CloseHandle()以前,我想在另外一个进程中再使用此设备,写WriteFile or ReadFile() or DeviceIoCtl,我怎么办?
我不太明白:象鼠标、Keyboard之类,也有IRP_MN_CREATE,他们好像不用打开,而且不管哪个进程都可使用此设备?
各位大哥,你们的设备怎么处理的?不可能是单任务的吧?
作驱动的也考虑一下作API的!
lxf
lxf
驱动小牛
驱动小牛
  • 注册日期2001-03-26
  • 最后登录2013-05-04
  • 粉丝4
  • 关注0
  • 积分76分
  • 威望30点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-22 21:03
我用的是互斥信号量来解决的这个问题,当然还有很多办法。
别着急,慢慢来!
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-23 08:53
这是个有意思的问题能否说的详细一点!!!
喜欢清静?享受人生
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-23 10:35
终于看到有人有解决办法了!:)
但能否说的详细一些!
你所说的互斥信号量是在驱动里作还是在API(WIN32)中作?
我可以在API中CreateFile前作一个互斥信号量,但打开设备得到的句柄怎么处理?
---你的只言片语对我是莫大的帮助!
lxf
lxf
驱动小牛
驱动小牛
  • 注册日期2001-03-26
  • 最后登录2013-05-04
  • 粉丝4
  • 关注0
  • 积分76分
  • 威望30点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-08-27 09:36
我是在驱动里面设的信号量,然后利用操作系统进行处理的,在驱动里解决这个问题很简单。

对于应用层而言你可以同时打开多个HANDLES,打开后就暂时不要关了,如果你的IOCTL/RWFILE 中用到了临界资源,这时你必须在IOCTL/RWFILE 之前设一个信号量,关闭程序进程之前关一下HANDLES即可。

别着急,慢慢来!
游客

返回顶部