xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1791回复:5

数据同步问题

楼主#
更多 发布于:2002-04-22 10:44
如果驱动程序与应用程序通过共享缓冲区传递数据,有什么方法保证数据的同步?也就是说,如果驱动程序不断地往共享缓冲区写数据,而应用程序要从共享缓冲区读数据,有什么办法可以保证当应用程序没有把余下的数据全部读完之前,禁止驱动程序往共享缓冲区中写新的数据呢?可不可以使用mutant对象来同步?或者自己定义某种方法?
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-22 10:54
参见DDK文档IoCreateSynchronizationEvent、KeWaitForSingleObject
使用过程不必说了吧
xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-04-22 11:04
如果应用程序在等待到事件之后去读缓冲区中的数据,在读了一部分数据之后而没有全部读完之前,我们无法保证驱动程序例程不会中断应用程序的读数据过程,从而无法保证缓冲区中余下的数据不会被驱动程序所产生的新数据覆盖。我的想法是:提供一种方法,使得当应用在访问缓冲区数据时,驱动程序必须等待,直到应用程序把当前缓冲区中所有数据都读完之后,驱动程序才能更新数据。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-22 12:36
使用kernel事件可以,还有你也可以使用队列
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-22 12:36
使用kernel事件可以,还有你也可以使用队列,当然是在Kernel中使用了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
低调小强
驱动牛犊
驱动牛犊
  • 注册日期2005-09-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分457分
  • 威望48点
  • 贡献值0点
  • 好评度45点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-03-09 12:42
你在没有读完前置无信号,读完就置有信号不就可以了
游客

返回顶部