2616|1

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何让系统重新读取sd卡的内容? [复制链接]

我现在在做一个东东,上面有一个sd卡,sd卡又有引脚连接到wince系统,这样sd卡在wince系统中可见。
现在就相当于sd卡被wince和我的设备共享,使用时通过切换data线来实现。
问题来了,由于wince系统在sd卡插入时读取了里面的fat表并buffer起来,当wince中对sd卡操作时更新buffer内容再回写到sd卡,如果我的设备更新sd卡内容,wince系统并不知道,也不会重新读取。

我目前方案,调用DeactivateDevice和ActivateDevice来重新加载sd memory驱动让sd卡重新被识别。
由于当前sd卡驱动已经加载,直接ActivateDevice会失败,但是DeactivateDevice一定要有ActivateDevice返回的句柄。
我在注册表drivers\active中发现sd卡已加载驱动的句柄 hnd value和clientinfo value,直接调用DeactivateDevice(hnd)会成功,然后ActivateDevice(g_szDrvRegPath,clientInfo);//const WCHAR *g_szDrvRegPath = L"Drivers\\SDCARD\\ClientDrivers\\Class\\SDMemory_Class"; 也会成功,但是执行多次DeactivateDevice /ActivateDevice后,sd卡驱动出现异常,拔下sd卡后,系统内仍有sd卡的盘符,插入sd卡后并没有被真正识别,还是那个遗留的事实不存在的sd卡,这时再调用DeactivateDevice,假的没有了,sd卡再插上去不被识别,这时只能重启系统。

我的做法哪里有问题,大家给个建议。
多谢。

最新回复

你可以改成假插拔 有兩個函數   我要開另一台電腦找到在回給你 就不用一直load unload造成失敗 也少去找handle的過程 我看resume回來 很多都這樣處理 防止suspend卡被拿出改過 之前有找過更新sd卡內容的資料 結果沒有找到相關的 請問有先進知道嗎 win mobile上點到folder裡 manu裡的refresh根本沒有用 @@"  详情 回复 发表于 2009-8-15 00:10
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你可以改成假插拔 有兩個函數  
我要開另一台電腦找到在回給你
就不用一直load unload造成失敗
也少去找handle的過程
我看resume回來 很多都這樣處理
防止suspend卡被拿出改過
之前有找過更新sd卡內容的資料
結果沒有找到相關的
請問有先進知道嗎 win mobile上點到folder裡
manu裡的refresh根本沒有用 @@"
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表