阅读:1522回复:6
怎样共享设备?
我建立了一设备驱动程序,我想作到多进程。可是我要在API中输出的每个函数都加上CreateFIle & CLoseHandle,就严重影响了效率;可如果不每次都 打开设备的话,就解决不了多进程。
想知道大家是怎么解决多进程共享设备的。 |
|
沙发#
发布于:2001-08-22 20:06
看不太懂
|
|
|
板凳#
发布于:2001-08-22 20:53
就是说:我在一个进程中用CreateFile()打开了设备,在还没有CloseHandle()以前,我想在另外一个进程中再使用此设备,写WriteFile or ReadFile() or DeviceIoCtl,我怎么办?
我不太明白:象鼠标、Keyboard之类,也有IRP_MN_CREATE,他们好像不用打开,而且不管哪个进程都可使用此设备? 各位大哥,你们的设备怎么处理的?不可能是单任务的吧? 作驱动的也考虑一下作API的! |
|
地板#
发布于:2001-08-22 21:03
我用的是互斥信号量来解决的这个问题,当然还有很多办法。
|
|
|
地下室#
发布于:2001-08-23 08:53
这是个有意思的问题能否说的详细一点!!!
|
|
|
5楼#
发布于:2001-08-23 10:35
终于看到有人有解决办法了!:)
但能否说的详细一些! 你所说的互斥信号量是在驱动里作还是在API(WIN32)中作? 我可以在API中CreateFile前作一个互斥信号量,但打开设备得到的句柄怎么处理? ---你的只言片语对我是莫大的帮助! |
|
6楼#
发布于:2001-08-27 09:36
我是在驱动里面设的信号量,然后利用操作系统进行处理的,在驱动里解决这个问题很简单。
对于应用层而言你可以同时打开多个HANDLES,打开后就暂时不要关了,如果你的IOCTL/RWFILE 中用到了临界资源,这时你必须在IOCTL/RWFILE 之前设一个信号量,关闭程序进程之前关一下HANDLES即可。 |
|
|