如题,仔细跟过代码;默认的USB Function Client Driver是在 “ CUfnBus::PostInit() ”函数里面加载的,但实在找不出是谁在什么地方Call的上面的这个PostInit()函数。。。
求指教~
------解决方案--------------------
OTG的驱动来管理 USBFN 和HCD的,先load USBFN再HCD,USBFN LOAD包括你看的BUS上的PostInit
还有通过
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
; Selects USBFN serial class driver (activesync)
"DefaultClientDriver"="Serial_Class"
这个来找到对应的DefaultClientDriver
再把Serial_Class对应的注册表里的信息都保存起来。这些信息你看注册表就知道是PID,VID一些USB的描述符。
当真正插入设备的时候,USB的PDD层会检测到设备的插入,然后发一些消息,这些消息会转到USBFN的枚举enum.cpp,这里就会完成枚举的过程(这里会用上开始的注册表信息),枚举完了设备就真正加载了,后面才是最终的设备之间的通信。
enum.cpp里有ProcessRequest这个函数,然后这些消息来源于PDD层,你自己去找,跟完枚举就跟我了解的差不多了。
花了一个月断断续续的我也只能做到这部分,后面的真正BULK通信,协议层怎么跟USBFN结合,然后应用层结合,全是大问题,我是搞得没信心了。主要是时间太紧,准备求助第三方了