关于USB MassStorage Client Function的几个问题?
在WinCE上实现优盘的功能已经实现了,现在我有几个小问题想请教一下?
1、usbmsfn.dll是MassStorage Client Function对应的驱动文件,这个文件的源代码在哪里,如何编译?
我通过查阅以前的帖子,发现可以通过sysgen_capture usbmsfn 得到对应的sources文件,以下是我得到的文件
//////////////////////////////////////////////////
TARGETNAME=usbmsfn
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
SYNCHRONIZE_DRAIN=1
DLLENTRY=DllEntry
DEFFILE=$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\usbmsfn.def
SOURCELIBS=
TARGETLIBS=\
$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\usbmsfn_lib.lib \
$(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\scsi2dad.lib \
$(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\ufnclientlib.lib \
$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\storeapi.lib \
$(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib
SOURCES=
//////////////////////////
我还是个初学者,对这个文件看的不是很懂,为什么sources这里是空的?
2、在注册表中
////////////////////////////
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\Mass_Storage_Class]
"Dll"="usbmsfn.dll"
"InterfaceSubClass"=dword:06
"InterfaceProtocol"=dword:50
"DeviceName"="DSK1:"
"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
////////////////////////////////////////////////////
InterfaceSubClass=6,这里的定义是什么?
我查阅资料发现表示是SCSI接口,当改成2时对应应该是的是ATAPI(光驱).
可是我改成2后,发现系统还是一样将其识别为普通的优盘.
这里想问下InterfaceSubClass是什么意思?应该在哪里找对应的资料.
此外MSDN上的InterfaceProtocol=50,而我的手机中的InterfaceProtocol=80,这个键值又是什么意思?
3、我看了下对应的代码,发现bot.cpp比较像是Client Function的源代码,我想请问这里这个代码是在哪里对U盘的类型进行判断的?能不能像U3盘一样将U盘识别为光盘或者磁盘?
上面问的问题比较多,可能没有解释清楚,请大家多多指教!