litth
驱动牛犊
驱动牛犊
  • 注册日期2001-04-26
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望110点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1203回复:5

如何记住文件的指针

楼主#
更多 发布于:2003-06-17 18:08
我的驱动可能是多个线程读写的,每个线程都调用CreateFile打开驱动,为了每个线程读写不混乱,我如何记住当前线程文件的位置?请高人指点迷津。

最新喜欢:

flyfoxflyfox
------------------------------------ 天涯飞云 http://www.my66.com
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-06-17 19:08
一个全局的handle,如果不是NULL,表明已经调用createfile了,就不再调用。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-06-17 19:17
通常和driver直接打交道的部分做成dll
上层的调用dll提供的函数,打开driver一次,保存,就够了。
多次也行,dll就检查一下看是不是NULL,决定是记数加一还是调用createfile
。。。等等
litth
驱动牛犊
驱动牛犊
  • 注册日期2001-04-26
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望110点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-06-18 08:05
我的意思是在Driver里实现。
我原想在在Create例程是作一标记,在Read例程找到这一标记,这样可以记住文件指针位置,但Create例程没有么唯一标记。那么当很多线程在Read的时候,我怎么知道哪个线程读到哪个位置了?
------------------------------------ 天涯飞云 http://www.my66.com
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-18 09:09
可以试试 PsGetCurrentThreadId(),同事说可以得到CreateFile()的线程ID,我没试过.
成功的话,提示提示.
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-19 09:09
如果每个线程都是通过CREATEFILE打开文件的, IO MANAGER会记录指针. 你在IRP_MJ_READ/IRP_MJ_WRITE那边检查参数就可以了.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
游客

返回顶部