SOS,wince 5.0 Flash做U盘UsbMsFn!STORE_Init: failed to open store DSK2

shengming217   2009-11-25 18:50 楼主
各位大虾:

我的平台是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  设备没有就绪

请大家支歌招阿 多谢了。

回复评论 (34)

先看看error = 4319 代码什么意思吧
点赞  2009-11-25 19:59
to 楼上的兄弟:

error = 4319 是 Getlasterro返回的,error = 4319 的意思是设备没有就绪
点赞  2009-11-26 08:55
我觉得问题出在Flash的注册表设置,可是没找到,大家给点建议阿。。。
点赞  2009-11-26 08:57
看了你的注册表,你是想通过usb把flash mount到pc上
但是由于你的smflash.dll是在autoload下加载的,所以你usb中openstore()的那个函数返回错误,
我猜想你应该是device name不对,你可以遍历一下device上所有的store,然后获得一个正确的设备名
点赞  2009-11-26 09:18
多谢楼上的兄弟,不过我不是很明白你的这句话 :
可以解释下吗

我猜想你应该是device name不对,你可以遍历一下device上所有的store,然后获得一个正确的设备名
点赞  2009-11-26 09:33
自己顶起来 ,免得沉了....
点赞  2009-11-26 09:35
不清楚你这样使用BINFS自动加载的盘符是否可以,我使用的都是FAT后加载的驱动产生的盘符。
估计是由于BINFS这部分内容由于保存着系统的文件,所以不允许unmount吧。
你没有其它的盘符了吗?可以用其它盘符试下。
点赞  2009-11-26 09:41
"Index"=dword:2
改成1试下
点赞  2009-11-26 09:46
to 楼上的兄弟:
我试验过了 最早是 1 后来改成2 的.
点赞  2009-11-26 09:53
顶起来,等待救援...
点赞  2009-11-26 10:11
引用: 引用 7 楼 veabol 的回复:
不清楚你这样使用BINFS自动加载的盘符是否可以,我使用的都是FAT后加载的驱动产生的盘符。
估计是由于BINFS这部分内容由于保存着系统的文件,所以不允许unmount吧。
你没有其它的盘符了吗?可以用其它盘符试下。


请问Veabol兄:
如果不使用BINFS自动加载的盘符,我该怎么设置呢 ?
点赞  2009-11-26 10:23
如果启动WINCE后你还有其它的盘符的话,看下其它的盘符是DKS多少,然后USB注册表那部分用对应的DSK几就行了
点赞  2009-11-26 14:14
引用: 引用 12 楼 veabol 的回复:
如果启动WINCE后你还有其它的盘符的话,看下其它的盘符是DKS多少,然后USB注册表那部分用对应的DSK几就行了


Veabol兄:FLASH只是作为根目录,剩余的空间是作为一个文件夹存在的。
就是"ResidentFlash"

多谢你提醒 我想办法把它弄个盘符出来看下,google下,
奇怪的是MSDN怎么不能上了
点赞  2009-11-26 14:28
引用: 引用 13 楼 meifenxiazai 的回复:
引用 12 楼 veabol 的回复:
如果启动WINCE后你还有其它的盘符的话,看下其它的盘符是DKS多少,然后USB注册表那部分用对应的DSK几就行了


Veabol兄:FLASH只是作为根目录,剩余的空间是作为一个文件夹存在的。
就是"ResidentFlash"

多谢你提醒 我想办法把它弄个盘符出来看下,google下,
奇怪的是MSDN怎么不能上了

应该就是这个问题了
在mass storage情况下使用storage manager加载的块驱动不行,只能够使用device.exe/dll加载的块驱动,但是由于activesync情况下由于不涉及到store的unmount和mount,所以理论上应该是可行的,不过,我没有试过
点赞  2009-11-26 14:55
。。。真笨,还没实现在FLASH 分区盘符。。。

努力中 ,大虾们有人做过吗?
点赞  2009-11-26 15:41
顶起来,别沉了。。。。。
点赞  2009-11-26 15:53
FLASH分区盘符要有相应的驱动。
如果你的板子支持SD卡的话你可以先把SD的盘符设置成 mass storage试下
点赞  2009-11-26 15:56
引用: 引用 17 楼 veabol 的回复:
FLASH分区盘符要有相应的驱动
如果你的板子支持SD卡的话你可以先把SD的盘符设置成 mass storage试下


to Veabol: SD卡是可以的 ,FLASH不行。

Veabol兄改过 这个吗 给各建议,多谢。。。
点赞  2009-11-26 16:06
没改过,我的是BSP直接支持的。
点赞  2009-11-26 16:47
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复