SOS,wince 5.0 Flash做U盘UsbMsFn!STORE_Init: failed to open store DSK2
各位大虾:
我的平台是wince5.0 +2440
打算用Flash做U盘,在FLASH的部分注册表如下:
IF BSP_NONANDFS !
[HKEY_LOCAL_MACHINE\init\BootVars]
"SystemHive"="ResidentFlash\\system.hv"
"ProfileDir"="ResidentFlash"
"Flags"=dword:3
"DefaultUser"="default"
"RegistryFlags"=dword:1
"Start DevMgr"=dword:1
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
"DefaultFileSystem"="BINFS"
"AutoPart"=dword:1
"AutoMount"=dword:1
"PartitionDriver"="mspart.dll"
"Name"="Microsoft Flash Disk"
"Folder"="ResidentFlash"
"BootPhase"=dword:0
"MountAsBootable"=dword:0
"Flags"=dword:1000
; Keep FATFS from trying to shadow \Windows
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH\FATFS]
"Flags"=dword:14
"FormatTfat"=dword:1
"CheckForFormat"=dword:1
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Index"=dword:2
"Order"=dword:0
"Profile"="DSK"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS]
"Flags"=dword:00000014 ;FATFS_TFAT_ALWAYS|FATFS_FORCE_TFAT
"MountFlags"=dword:1
[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
"DriverPath"="Drivers\\BuiltIn\\SMFLASH"
"LoadFlags"=dword:1
"BootPhase"=dword:0
ENDIF ; BSP_NONANDFS
USB的配置信息如下:
IF BSP_KITL != USBSERIAL
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SC2440USBFN]
"Dll"="sc2440usbfn.dll"
"Prefix"="UFN"
"Priority256"=dword:64
"IoBase"=dword:B1200000
"IoLen"=dword:1000 ; Use one page
"Irq"=dword:19
"BusIoctl"=dword:2a0048
"IClass"=multi_sz:"{E2BDC372-598F-4619-BC50-54B3F7848D35}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"=- ; erase previous default
"DefaultClientDriver"="Mass_Storage_Class"
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK2:"
"FriendlyName"="Mass Storage"
"idVendor"=dword:045E
"Manufacturer"="Generic Manufacturer (PROTOTYPE--Remember to change idVendor)"
"idProduct"=dword:FFFF
"Product"="Generic Mass Storage (PROTOTYPE--Remember to change idVendor)"
"bcdDevice"=dword:0
使用DEbug版本打印出信息是无法打开设备:
0x83d04000: UsbMsFn!STORE_Init: DeviceName = DSK2:
0x83d04000: UsbMsFn!STORE_Init: Removable = 1
0x83d04000: UsbMsFn!STORE_Init: failed to open store DSK2:; error = 4319
// error = 4319 设备没有就绪
请大家支歌招阿 多谢了。
to 楼上的兄弟:
error = 4319 是 Getlasterro返回的,error = 4319 的意思是设备没有就绪
我觉得问题出在Flash的注册表设置,可是没找到,大家给点建议阿。。。
看了你的注册表,你是想通过usb把flash mount到pc上
但是由于你的smflash.dll是在autoload下加载的,所以你usb中openstore()的那个函数返回错误,
我猜想你应该是device name不对,你可以遍历一下device上所有的store,然后获得一个正确的设备名
多谢楼上的兄弟,不过我不是很明白你的这句话 :
可以解释下吗
我猜想你应该是device name不对,你可以遍历一下device上所有的store,然后获得一个正确的设备名
不清楚你这样使用BINFS自动加载的盘符是否可以,我使用的都是FAT后加载的驱动产生的盘符。
估计是由于BINFS这部分内容由于保存着系统的文件,所以不允许unmount吧。
你没有其它的盘符了吗?可以用其它盘符试下。
to 楼上的兄弟:
我试验过了 最早是 1 后来改成2 的.
引用: 引用 7 楼 veabol 的回复:
不清楚你这样使用BINFS自动加载的盘符是否可以,我使用的都是FAT后加载的驱动产生的盘符。
估计是由于BINFS这部分内容由于保存着系统的文件,所以不允许unmount吧。你没有其它的盘符了吗?可以用其它盘符试下。
请问Veabol兄:
如果不使用BINFS自动加载的盘符,我该怎么设置呢 ?
如果启动WINCE后你还有其它的盘符的话,看下其它的盘符是DKS多少,然后USB注册表那部分用对应的DSK几就行了
引用: 引用 12 楼 veabol 的回复:
如果启动WINCE后你还有其它的盘符的话,看下其它的盘符是DKS多少,然后USB注册表那部分用对应的DSK几就行了
Veabol兄:FLASH只是作为根目录,剩余的空间是作为一个文件夹存在的。
就是"ResidentFlash"
多谢你提醒 我想办法把它弄个盘符出来看下,google下,
奇怪的是MSDN怎么不能上了
引用: 引用 13 楼 meifenxiazai 的回复:
引用 12 楼 veabol 的回复:
如果启动WINCE后你还有其它的盘符的话,看下其它的盘符是DKS多少,然后USB注册表那部分用对应的DSK几就行了
Veabol兄:FLASH只是作为根目录,剩余的空间是作为一个文件夹存在的。
就是"ResidentFlash"
多谢你提醒 我想办法把它弄个盘符出来看下,google下,
奇怪的是MSDN怎么不能上了
应该就是这个问题了
在mass storage情况下使用storage manager加载的块驱动不行,只能够使用device.exe/dll加载的块驱动,但是由于activesync情况下由于不涉及到store的unmount和mount,所以理论上应该是可行的,不过,我没有试过
。。。真笨,还没实现在FLASH 分区盘符。。。
努力中 ,大虾们有人做过吗?
FLASH分区盘符要有相应的驱动。
如果你的板子支持SD卡的话你可以先把SD的盘符设置成 mass storage试下
引用: 引用 17 楼 veabol 的回复:
FLASH分区盘符要有相应的驱动。
如果你的板子支持SD卡的话你可以先把SD的盘符设置成 mass storage试下
to Veabol: SD卡是可以的 ,FLASH不行。
Veabol兄改过 这个吗 给各建议,多谢。。。