slenslen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-21
  • 最后登录2008-09-09
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望46点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
阅读:1497回复:7

请教一个简单的问题

楼主#
更多 发布于:2008-01-03 09:47
在Explorer启动前能否用FindFirstFile和FindNextFile浏览U盘上的文件?

请赐教

如果可以,有什么需要注意的地方?
slenslen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-21
  • 最后登录2008-09-09
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望46点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-01-03 09:49
关于U盘的东西我都已经添加,进入我的电脑后可以看到“硬盘2”
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
板凳#
发布于:2008-01-03 10:09
用户被禁言,该主题自动屏蔽!
slenslen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-21
  • 最后登录2008-09-09
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望46点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-01-03 10:19
是这样的,我现在做一个自动更新的小程序,
当启动电脑前插上U盘,开机进入系统后先运行自动更新程序,
自动更新程序检测插入的U盘上是否有需要的程序,如果有就把它复制到CF卡中,
现在的问题就是我的自动更新程序检测不到U盘,只有进入我的电脑后才可以正常使用。

所以我想问一下在启动explorer前是否已经能够读写U盘上的文件。
slenslen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-21
  • 最后登录2008-09-09
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望46点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-01-03 14:26
CF卡肯定是存在的,因为系统在CF卡上存着呢,如果不存在,根本无法启动

但现在问题是当我的自动更新程序运行时,还检测不到U盘,我用的检测方法就是调用
FindFirstFile(_T("\\硬盘2\\*.*)),如果返回值不是INVALID_HANDLE_VALUE,
就说明U盘插上了,否则没有插上。

只有等程序运行一会以后(大约将近10秒钟),才能检测到U盘,我又不能在这里
耗费太长时间,因为后面还要运行主程序,别人不可能在这里白等10秒钟让你检测是否
插有U盘,是否要更新程序。

所以现在也没有办法了。

只好在主程序中加了一个线程,隔几秒检测一下是否插入了U盘,是否要更新程序。
这样也能实现。

但我还是很郁闷,因为上面自动更新程序的方法在以前试的是可以的,这一段不行了,
我怀疑是我重新裁剪了系统以后造成的,但又不知道错在哪儿了,真郁闷啊!
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-01-03 21:31
可能是你的程序加载太早了,那时候U盘还没有准备好.
可以在程序找不到U盘以后,去处理WM_DEVICECHANGE消息,这个消息来时说明有设备加载上了,就可以再判断U盘是不是已经加载.反复做就行了.
学海无涯
slenslen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-21
  • 最后登录2008-09-09
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望46点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-01-04 10:14
好的,谢谢,我试试吧
dfgeoff
驱动牛犊
驱动牛犊
  • 注册日期2004-07-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望69点
  • 贡献值0点
  • 好评度69点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-01-04 13:14
explorer.exe其实只是个界面,在加载前,文件系统已经完全准备好了。
所以才可以使用自己的程序取代explorer.exe,实现自定义启动程序,并且不出现wince桌面。

你的问题应该是程序在U盘识别之前加载,所以无法立即找到U盘。U盘识别是一步(底层的USB Host驱动及Mass Storage驱动),U盘作为盘符加载又是一步(系统中做的),这些是需要时间的。
日本-倭子-该死! 抵制日货! 敢犯我中华者,虽远必诛!
游客

返回顶部