wince 5下能否通过USB device实现标准的U盘?

wowow   2009-4-30 09:05 楼主
开发的wince 5设备有USB device,现在已经可以通过active sync来和Winxp PC实现同步。

但是感觉这个sync功能太强了,不希望用户能查看所有的wince文件。仅仅需要实现U盘的功能就可以了

就是通过usb device连接PC,用户仅仅看到一个U盘,可以读写文件就可以了

这个怎么实现?

回复评论 (23)

可以,一般是改USB部分的注册表文件,默认的同步模式改为"Mass_Storage_Class"就可以了
点赞  2009-4-30 10:22
当然可以。实现方法说起来简单,就是修改USB的驱动了。当然,做起来就不是这么容易了。不过很多平台都已经实现了这个功能,你可以找一个和你的平台相近的参考一下了。
点赞  2009-4-30 10:23
1楼正解!
其实USB MASS STORAGE 和ACTIVESYNC可以共存的,方法就是操作注册表来切换
点赞  2009-4-30 10:28
1、改注册表是可以的,但是如果别人又改回去,就失效了
2、改驱动比较保险,无论怎样改注册表,都无法访问
点赞  2009-4-30 10:31
mark
点赞  2009-4-30 13:17
我也修改了serial_class 为mass_storage_class,可以通过usb device来识别为一个U盘

但是有几个问题还没有解决

这个U盘可以识别SD/MMC卡 因为sd mmc卡为DSK1 DSK2 但是不能识别我的nandflash分区 nandflash分为两个部分 binfs和剩余的为fat分区 wince中可以读写fatfs 但是我查看registry 发现这个nandflash没有export为DSK

另外一个问题 连接USB线,SD作为U盘 则wince中SD folder自动消失, wince不能读写了 去掉usb连接 SD还不会自动出现 这个还需要能自动回来

我想知道怎么能把nandflash作为一个U盘实现??
点赞  2009-4-30 13:43
引用: 引用 6 楼 sdssly 的回复:
我也修改了serial_class 为mass_storage_class,可以通过usb device来识别为一个U盘

但是有几个问题还没有解决

这个U盘可以识别SD/MMC卡 因为sd mmc卡为DSK1 DSK2 但是不能识别我的nandflash分区 nandflash分为两个部分 binfs和剩余的为fat分区 wince中可以读写fatfs 但是我查看registry 发现这个nandflash没有export为DSK

另外一个问题 连接USB线,SD作为U盘 则wince中SD folder自动消失, wince不能读写了 去掉usb连…


NANDFLASH的FATFS在你的WINCE界面里边没有显示成一个盘符吗?如果显示成一个盘符了就方便了,把它设置成DSK3,然后在USBMS注册表中的DeviceName设成DSK3,就可以了。
拔掉USB连接,SD不能自动恢复,估计是你的BSP的USBFN驱动有问题。
点赞  2009-4-30 14:19
我的nandflash的fat分区在wince中只是一个文件夹 storage manger中是MSFLASH 没有出现DSK的前缀
这个是怎么回事?
点赞  2009-4-30 14:42
DSK的前缀是在WINCE界面下显示的?都不会有DSK的前缀吧?至少我这边的是这样,都是一个普通的文件夹名,只是图标和普通的文件夹不太一样,如果你的SD卡之类的在WINCE名字是DSK1,那只是一个名字而已。
点赞  2009-4-30 14:56
uping
点赞  2009-4-30 15:04
我这里wince显示中是一个磁盘的盘符,不是一个文件夹的图标。但是在registry中的drivers\active中找不到这个flash对应的dsk设备

其他的ramdisk和SD显示也是磁盘的图标,但是在registry中可以找到对应的active的DSK1 DSK2
存储管理器中显示的ramdisk和SD有DSK1: DSK2:的前缀 但是那个nandflash就是一个smflash microsoft flash disk

我是在nandflash上保存registry的 registry中有一个[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]

是不是这个会影响?
点赞  2009-4-30 15:20
我也是在NANDFLASH上保存注册表

你的NANDFLASH注册表中有这两句吗?
"Prefix"="DSK"
"Index"=dword:3
点赞  2009-4-30 15:27
我googl中发现这个
http://www.tech-archive.net/Archive/WindowsCE/microsoft.public.windowsce.platbuilder/2007-06/msg00403.html

说是这个autoload会影响 我的registry设置如下
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
    "Prefix"="DSK"
    "Dll"="smflash.dll"
    ;"Index"=dword:1
    "Order"=dword:0
    "Profile"="SMFLASH"
    "IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
                ;"BootPhase"=dword:0
    ;"flags"=dword:1000
    "FriendlyName"="NAND disk driver"

index已经注释了 我感觉这个没有影响
点赞  2009-4-30 16:00
你试试吧
我的nandflash驱动不是这个,是除了它另外的
点赞  2009-4-30 16:07
引用: 引用 14 楼 Veabol 的回复:
我的nandflash驱动不是这个,是除了它另外的


你说除了之外的,是什么意思??

我的不能去掉autoload 去掉之后wince启动错误 因为registry在nandflash上 能不能说一下你的nandflash配置?

我的分为两个区 binfs保存xip.bin 剩下的为fat分区 保存registry wince中可以读写文件
点赞  2009-4-30 16:09
我还有一个ondisk.dll是专门处理nandflash的
点赞  2009-4-30 18:01
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\FlashDisk]
   "Prefix"="DSK"
   "Dll"="ONDisk.dll"
   "Order"=dword:1
   "Index"=dword:3
   "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
   "Profile"="FlashDisk"
   "BmlVolumeId"=dword:0        ; BML volume ID = 0
   "BmlPartitionId"=dword:8        ; BML parition ID = PARTITION_ID_FILESYSTEM
   "WMRStartSector"=dword:0
   "WMRNumOfSector"=dword:40000        ; 128MByte
   "Flags"=dword:11000        ; do not load again in boot phase 2        ;
   ;"Flags"=dword:1000        ; do not load again in boot phase 2        ;


[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
    "DefaultFileSystem"="FATFS"
    "PartitionDriver"="mspart.dll"
    "Name"="PocketMory MLC Disk"
    "Folder"="System"
    "AutoMount"=dword:1
    "AutoPart"=dword:1
    "AutoFormat"=dword:1
    "MountAsBootable"=dword:1   

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS]
    "FriendlyName"="PocketMory FAT FileSystem"
    "Dll"="fatfsd.dll"
    "Flags"=dword:00000014                        ; FATFS_ENABLE_BACKUP_FAT | FATFS_DISABLE_AUTOSCAN
    "FormatTfat"=dword:1
    "EnableCacheWarm"=dword:0
点赞  2009-4-30 18:07
Veabol说的onedisk.dll专门处理nandflash 是不是有多片nandflash?

registry保存在另外的nandflash上? 如果只有一个nandflash,读写registry的操作dll和onedisk.dll同时对一个flash操作 是否会冲突?

你的registry中的autoload是怎么配置的?
点赞  2009-4-30 23:33
顶,学习!
点赞  2009-5-1 11:30
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复