引用: 引用楼主 meifenxiazai 的回复:
各位大虾:
我的平台是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? 设备没有就绪
请大家支歌招阿 多谢了。
引用: 引用 22 楼 flyalice 的回复:
引用楼主 meifenxiazai 的回复:
各位大虾:
我的平台是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? 设备没有就绪
请大家支歌招阿 多谢了。
从你的帖子中发现几个问题,有说得不正确的地方还请大家指正:
1."Profile"="DSK",应该改为"Profile"="SMFLASH"吧
2.[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH],这种加载方式是由存储管理器来加载,而不是设备管理器加载,所以设备名不会是你所期望的DSK2。
3.在USB的注册表中,配置为DeviceName"="DSK2:"
但根本就不存在DSK2,所以open store DSK2:就会fail.
引用: 引用 24 楼 meifenxiazai 的回复:
to 楼上的诸位大虾:
多谢大家的指点,
2.[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH],这种加载方式是由存储管理器来加载,而不是设备管理器加载,所以设备名不会是你所期望的DSK2。
这个确实如此,请教下大家:
不由存储管理器来加载,由设备管理器加载,该怎么处理呢 ?
引用: 引用 27 楼 flyalice 的回复:
引用 24 楼 meifenxiazai 的回复:
to 楼上的诸位大虾:
多谢大家的指点,
2.[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH],这种加载方式是由存储管理器来加载,而不是设备管理器加载,所以设备名不会是你所期望的DSK2。
这个确实如此,请教下大家:
不由存储管理器来加载,由设备管理器加载,该怎么处理呢 ?
修改注册表:
把[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
? ? "DriverPath"="Drivers\\BuiltIn\\SMFLASH"
? ? "LoadFlags"=dword:1
? ? "BootPhase"=dword:0
去掉即可。
设备管理器在遍历到[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]时就会加载对应的smflash.dll。
不知道你Flash上有几个分区。是不是BinFS和FAT32分区使用同一个smflash.dll。这样改的话,或许会造成BinFS分区访问不正常。
引用: 引用 29 楼 meifenxiazai 的回复:
引用 27 楼 flyalice 的回复:
引用 24 楼 meifenxiazai 的回复:
to 楼上的诸位大虾:
多谢大家的指点,
2.[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH],这种加载方式是由存储管理器来加载,而不是设备管理器加载,所以设备名不会是你所期望的DSK2。
这个确实如此,请教下大家:
不由存储管理器来加载,由设备管理器加载,该怎么处理呢 ?
修改注册表:
把[HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\SMFLASH]
? ? "DriverPath"="Drivers\\BuiltIn\\SMFLASH"
? ? "LoadFlags"=dword:1
? ? "BootPhase"=dword:0
去掉即可。
设备管理器在遍历到[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]时就会加载对应的smflash.dll。
不知道你Flash上有几个分区。是不是BinFS和FAT32分区使用同一个smflash.dll。这样改的话,或许会造成BinFS分区访问不正常。
是同一个,所以还是不行。呵呵 继续努力中。
?
xuefeng_baggio 你不是COOLbad公司的吧 ,也弄个天道酬勤。。。。