wince 5下能否通过USB device实现标准的U盘?
开发的wince 5设备有USB device,现在已经可以通过active sync来和Winxp PC实现同步。
但是感觉这个sync功能太强了,不希望用户能查看所有的wince文件。仅仅需要实现U盘的功能就可以了
就是通过usb device连接PC,用户仅仅看到一个U盘,可以读写文件就可以了
这个怎么实现?
可以,一般是改USB部分的注册表文件,默认的同步模式改为"Mass_Storage_Class"就可以了
当然可以。实现方法说起来简单,就是修改USB的驱动了。当然,做起来就不是这么容易了。不过很多平台都已经实现了这个功能,你可以找一个和你的平台相近的参考一下了。
1楼正解!
其实USB MASS STORAGE 和ACTIVESYNC可以共存的,方法就是操作注册表来切换
1、改注册表是可以的,但是如果别人又改回去,就失效了
2、改驱动比较保险,无论怎样改注册表,都无法访问
我也修改了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盘实现??
引用: 引用 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驱动有问题。
我的nandflash的fat分区在wince中只是一个文件夹 storage manger中是MSFLASH 没有出现DSK的前缀
这个是怎么回事?
DSK的前缀是在WINCE界面下显示的?都不会有DSK的前缀吧?至少我这边的是这样,都是一个普通的文件夹名,只是图标和普通的文件夹不太一样,如果你的SD卡之类的在WINCE名字是DSK1,那只是一个名字而已。
我这里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]
是不是这个会影响?
我也是在NANDFLASH上保存注册表
你的NANDFLASH注册表中有这两句吗?
"Prefix"="DSK"
"Index"=dword:3
我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已经注释了 我感觉这个没有影响
你试试吧
我的nandflash驱动不是这个,是除了它另外的
引用: 引用 14 楼 Veabol 的回复:
我的nandflash驱动不是这个,是除了它另外的
你说除了之外的,是什么意思??
我的不能去掉autoload 去掉之后wince启动错误 因为registry在nandflash上 能不能说一下你的nandflash配置?
我的分为两个区 binfs保存xip.bin 剩下的为fat分区 保存registry wince中可以读写文件
我还有一个ondisk.dll是专门处理nandflash的
[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
Veabol说的onedisk.dll专门处理nandflash 是不是有多片nandflash?
registry保存在另外的nandflash上? 如果只有一个nandflash,读写registry的操作dll和onedisk.dll同时对一个flash操作 是否会冲突?
你的registry中的autoload是怎么配置的?