阅读:1203回复:5
如何记住文件的指针
我的驱动可能是多个线程读写的,每个线程都调用CreateFile打开驱动,为了每个线程读写不混乱,我如何记住当前线程文件的位置?请高人指点迷津。
|
|
最新喜欢:flyfox
|
沙发#
发布于:2003-06-17 19:08
一个全局的handle,如果不是NULL,表明已经调用createfile了,就不再调用。
|
|
板凳#
发布于:2003-06-17 19:17
通常和driver直接打交道的部分做成dll
上层的调用dll提供的函数,打开driver一次,保存,就够了。 多次也行,dll就检查一下看是不是NULL,决定是记数加一还是调用createfile 。。。等等 |
|
地板#
发布于:2003-06-18 08:05
我的意思是在Driver里实现。
我原想在在Create例程是作一标记,在Read例程找到这一标记,这样可以记住文件指针位置,但Create例程没有么唯一标记。那么当很多线程在Read的时候,我怎么知道哪个线程读到哪个位置了? |
|
|
地下室#
发布于:2003-06-18 09:09
可以试试 PsGetCurrentThreadId(),同事说可以得到CreateFile()的线程ID,我没试过.
成功的话,提示提示. |
|
5楼#
发布于:2003-06-19 09:09
如果每个线程都是通过CREATEFILE打开文件的, IO MANAGER会记录指针. 你在IRP_MJ_READ/IRP_MJ_WRITE那边检查参数就可以了.
|
|
|