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

返回顶部