阅读:1591回复:7
请教一个简单的问题
在Explorer启动前能否用FindFirstFile和FindNextFile浏览U盘上的文件?
请赐教 如果可以,有什么需要注意的地方? |
|
沙发#
发布于:2008-01-03 09:49
关于U盘的东西我都已经添加,进入我的电脑后可以看到“硬盘2”
|
|
板凳#
发布于:2008-01-03 10:09
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2008-01-03 10:19
是这样的,我现在做一个自动更新的小程序,
当启动电脑前插上U盘,开机进入系统后先运行自动更新程序, 自动更新程序检测插入的U盘上是否有需要的程序,如果有就把它复制到CF卡中, 现在的问题就是我的自动更新程序检测不到U盘,只有进入我的电脑后才可以正常使用。 所以我想问一下在启动explorer前是否已经能够读写U盘上的文件。 |
|
地下室#
发布于:2008-01-03 14:26
CF卡肯定是存在的,因为系统在CF卡上存着呢,如果不存在,根本无法启动
但现在问题是当我的自动更新程序运行时,还检测不到U盘,我用的检测方法就是调用 FindFirstFile(_T("\\硬盘2\\*.*)),如果返回值不是INVALID_HANDLE_VALUE, 就说明U盘插上了,否则没有插上。 只有等程序运行一会以后(大约将近10秒钟),才能检测到U盘,我又不能在这里 耗费太长时间,因为后面还要运行主程序,别人不可能在这里白等10秒钟让你检测是否 插有U盘,是否要更新程序。 所以现在也没有办法了。 只好在主程序中加了一个线程,隔几秒检测一下是否插入了U盘,是否要更新程序。 这样也能实现。 但我还是很郁闷,因为上面自动更新程序的方法在以前试的是可以的,这一段不行了, 我怀疑是我重新裁剪了系统以后造成的,但又不知道错在哪儿了,真郁闷啊! |
|
5楼#
发布于:2008-01-03 21:31
可能是你的程序加载太早了,那时候U盘还没有准备好.
可以在程序找不到U盘以后,去处理WM_DEVICECHANGE消息,这个消息来时说明有设备加载上了,就可以再判断U盘是不是已经加载.反复做就行了. |
|
|
6楼#
发布于:2008-01-04 10:14
好的,谢谢,我试试吧
|
|
7楼#
发布于:2008-01-04 13:14
explorer.exe其实只是个界面,在加载前,文件系统已经完全准备好了。
所以才可以使用自己的程序取代explorer.exe,实现自定义启动程序,并且不出现wince桌面。 你的问题应该是程序在U盘识别之前加载,所以无法立即找到U盘。U盘识别是一步(底层的USB Host驱动及Mass Storage驱动),U盘作为盘符加载又是一步(系统中做的),这些是需要时间的。 |
|
|