libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:912回复:5

50分,这是什么原因?

楼主#
更多 发布于:2003-04-11 14:42
我设备的缓冲方式是直接I/O,采用DEVICEIOCONTROL的方式向端口写数据,采用METHOD_BUFFERED,我使用输出缓冲区来在应用程序和驱动程序之间传输数据,可是发生以下的错误,我在应用程序里开辟的缓冲区里写入数据,从驱动中读出来,发现不一致!
如果我把缓冲方式采用METHOD_IN_DIRECT,或METHOD_OUT_DIRECT,数据则一致!
到底是什么原因?

最新喜欢:

drirddrird
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-11 15:48
刚才又试了一下,,仍然采用缓冲I/O的方式传输数据,在应用和驱动里,我把数据放到输入缓冲区里,驱动中得到的数据和应用中写入的数据一致!
但采用输出缓冲区的话,则不一致!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-04-11 23:30
对于buffered_io,输入buffer的内容先copy到systembuffer,完的时候再把systembuffer的内容copy到输出buffer
你放到输出buffer,在driver怎么得到数据?
hamsir
驱动小牛
驱动小牛
  • 注册日期2003-03-24
  • 最后登录2003-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-12 19:06
我是闻分而来!
一只流泪的鱼
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-04-12 20:32
我设备的缓冲方式是直接I/O,采用DEVICEIOCONTROL的方式向端口写数据,采用METHOD_BUFFERED,我使用输出缓冲区来在应用程序和驱动程序之间传输数据,可是发生以下的错误,我在应用程序里开辟的缓冲区里写入数据,从驱动中读出来,发现不一致!
如果我把缓冲方式采用METHOD_IN_DIRECT,或METHOD_OUT_DIRECT,数据则一致!
到底是什么原因?

你一会直接I/O,一会METHOD_BUFFERED,到底是哪种方式啊??
METHOD_BUFFERED方式arthurtu说的是对的;DIRECT方式时则在输出缓冲区放输入数据,所以你可以得到正确数据
早起早睡 精神百倍
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-16 14:07
[quote]我设备的缓冲方式是直接I/O,采用DEVICEIOCONTROL的方式向端口写数据,采用METHOD_BUFFERED,我使用输出缓冲区来在应用程序和驱动程序之间传输数据,可是发生以下的错误,我在应用程序里开辟的缓冲区里写入数据,从驱动中读出来,发现不一致!
如果我把缓冲方式采用METHOD_IN_DIRECT,或METHOD_OUT_DIRECT,数据则一致!
到底是什么原因?

你一会直接I/O,一会METHOD_BUFFERED,到底是哪种方式啊??
METHOD_BUFFERED方式arthurtu说的是对的;DIRECT方式时则在输出缓冲区放输入数据,所以你可以得到正确数据
 [/quote]
   感谢楼上大哥的回答,我觉得,对于DIRECT方式,输入和输出缓冲区都可以放输入的数据(写往扳子的数据)。两个可以同时用!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
游客

返回顶部