阅读:912回复:5
50分,这是什么原因?
我设备的缓冲方式是直接I/O,采用DEVICEIOCONTROL的方式向端口写数据,采用METHOD_BUFFERED,我使用输出缓冲区来在应用程序和驱动程序之间传输数据,可是发生以下的错误,我在应用程序里开辟的缓冲区里写入数据,从驱动中读出来,发现不一致!
如果我把缓冲方式采用METHOD_IN_DIRECT,或METHOD_OUT_DIRECT,数据则一致! 到底是什么原因? |
|
最新喜欢:drird
|
沙发#
发布于:2003-04-11 15:48
刚才又试了一下,,仍然采用缓冲I/O的方式传输数据,在应用和驱动里,我把数据放到输入缓冲区里,驱动中得到的数据和应用中写入的数据一致!
但采用输出缓冲区的话,则不一致! |
|
|
板凳#
发布于:2003-04-11 23:30
对于buffered_io,输入buffer的内容先copy到systembuffer,完的时候再把systembuffer的内容copy到输出buffer
你放到输出buffer,在driver怎么得到数据? |
|
地板#
发布于:2003-04-12 19:06
我是闻分而来!
|
|
|
地下室#
发布于:2003-04-12 20:32
我设备的缓冲方式是直接I/O,采用DEVICEIOCONTROL的方式向端口写数据,采用METHOD_BUFFERED,我使用输出缓冲区来在应用程序和驱动程序之间传输数据,可是发生以下的错误,我在应用程序里开辟的缓冲区里写入数据,从驱动中读出来,发现不一致! 你一会直接I/O,一会METHOD_BUFFERED,到底是哪种方式啊?? METHOD_BUFFERED方式arthurtu说的是对的;DIRECT方式时则在输出缓冲区放输入数据,所以你可以得到正确数据 |
|
|
5楼#
发布于:2003-04-16 14:07
[quote]我设备的缓冲方式是直接I/O,采用DEVICEIOCONTROL的方式向端口写数据,采用METHOD_BUFFERED,我使用输出缓冲区来在应用程序和驱动程序之间传输数据,可是发生以下的错误,我在应用程序里开辟的缓冲区里写入数据,从驱动中读出来,发现不一致! 你一会直接I/O,一会METHOD_BUFFERED,到底是哪种方式啊?? METHOD_BUFFERED方式arthurtu说的是对的;DIRECT方式时则在输出缓冲区放输入数据,所以你可以得到正确数据 [/quote] 感谢楼上大哥的回答,我觉得,对于DIRECT方式,输入和输出缓冲区都可以放输入的数据(写往扳子的数据)。两个可以同时用! |
|
|