优盘中放着图像数据,我的程序运行后按显示按钮,就从直接优盘中读取数据,而非从操作系统的缓冲区中读即是按下按钮后刷新系统缓冲区中的优盘数据。用VC如何实现?
解决方案 »
- 如何提取reg_multi_sz中的字符串?
- SetColumnWidth的用法,如何改变CListCtrl列宽度?
- 一个CObArray的问题
- 为何全局鼠标钩子只能钩一次?
- 一段加载图标文件的程序
- 为何mfc多线程程序debug版本不能用?
- autocad预览控件dwgthumbnail
- 如何动态添加一个子菜单呢?
- CoCreateIntanceEX参数中的clsid未知,可以创建COM实例么?
- ====== 要 分 没 有!! 要 命 一 条!! ======= 关于把自己从任务栏中干掉!!
- 如何开发一个可以编译c语言的开发环境
- 服务端用WSAWaitForMultipleEvents这个事件模型,如果有3个客户端与其相连,3个客户端同时发送数据,为什么服务端总是得到最先连接客户端
请高手赐教
在Windows下我们第一次访问USB时是将USB的内容复制到Windows下的一个缓冲区,以后对USB的访问都是访问这个缓冲区,所以造成了后面访问设备时速度都很快,因为他不是直接访问设备。
现在我就是想要每次都要去访问USB设备,而不是访问Windows下的缓冲区,该怎么实现呢?(明白我的意思了吗?)
你的 buffer 是直接文件吗?如果是的话刷新前再拷贝一次。
你的 buffer 是数据吗?如果是的话刷新前再Load一次。明白我的意思吗?好像没什么难得。
我是读USB里的文件啊,例如USB设备里有个文件a.bin,USB盘符为G
CFile file
file.Open("G:\\a.bin",CFile::modeRead);
file.Read(&buf,file.GetLength());
...
free(buf);
这样的操作只是读缓冲区,速度很快。(第一次读时是直接读设备的,以后都是读缓冲区了)
CreateFile中有个FILE_FLAG_NO_BUFFERING参数。
ReadFile(hfile,ImageData,32*1024,NULL,NULL);
CloseHandle(hfile);
在执行ReadFile时就报错了,提示说什么内存不能为写。可我并没有写操作啊。在CreateFile里将GENERIC_WRITE去掉也不行,修改了很多FLAG结果还是会报错。
hfile=CreateFile(...,FILE_FLAG_NO_BUFFERING,NULL);
CFile file(hfile);
file.Read();
可以实现刷新。