hsly110
驱动牛犊
驱动牛犊
  • 注册日期2004-11-03
  • 最后登录2007-12-31
  • 粉丝1
  • 关注0
  • 积分378分
  • 威望40点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
阅读:1453回复:2

一个全局数据内存,在IRP_WRITE或者IRP_READ是否需要同步呢?

楼主#
更多 发布于:2007-04-11 15:32
  一个全局数据内存,在IRP_WRITE或者IRP_READ是否需要同步呢?

在内核驱动中用
PVOID pvoid_Buffer = ExAllocatePoolWithTag(NonPagedPool,0x10000,DISKPERF_POOLTAG) ;
创建了一个全局数据内存

然后我同步的时,这样做的: 是否合理呢?

1> 针对pvoid_Buffer 使用IoAllocateMdl创建MDL
2> 对该MDL使用MmProbeAndLockPages 加锁
3> 用MmGetSystemAddressForMdlSafe 转换为缓冲区指针
4>然后进行数据操作
5>操作完之后用解锁并释放 MmUnlockPages() IoFreeMdl()

这样做同步正确吗?
magichere
驱动小牛
驱动小牛
  • 注册日期2007-01-24
  • 最后登录2008-05-07
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望137点
  • 贡献值0点
  • 好评度136点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-12 10:51
是呀,全局变量 就用全局锁。就好了。
创造美好的未来生活!!!
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
板凳#
发布于:2007-04-11 15:47
自己搞个全局访问互斥(MUTEX、SPINLOCK、EVENT。。。),没那么复杂。
人总在矛盾中徘徊。。。
游客

返回顶部