如何新增USB function client 驱动
如何新增USB function client 驱动
微软有三个usb client驱动:RNDIS, serial, and storage
但是没有提到怎么新增,另外应用层跟MDD层怎么调用?
目前我看了几天,觉得通过注册表应该可以增加DLL的,但是应用跟驱动之间的通信还是没有理解。
不知道有没有做过client相关的人员能提供一点信息 .
定制os时,勾选上你所需usb client功能的组件,通过应用程序来切换ActiveSync、Mass storage模式。
通过打开usb驱动:
HANDLE m_ufnHandle = CreateFile(L"UFN1:",FILE_WRITE_ATTRIBUTES|GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
然后通过ICCTL:IOCTL_UFN_CHANGE_CURRENT_CLIENT,可实现切换.
你要把usb模拟成一个什么新东西?function的上层有一个controller mdd,这里面有很多的iocontrol,你应该改看过usbserial和usbstorage的动态切换吧,算是应用层序吗
帮你瞄了下,是这样的
其实usbserial驱动是这样的,他就是一个串口驱动,可以参考public\common\makefile文件
serialusbfn:: com_mdd2 serpddcm ceddk ufnclientlib
@set TARGETLIBS=$(OWNSTATICLIB) $(CEDDKLIB) $(SG_OUTPUT_OAKLIB)\com_mdd2.lib $(SG_OUTPUT_OAKLIB)\serpddcm.lib $(SG_OUTPUT_OAKLIB)\ufnclientlib.lib
很明显,他是作为一个串口驱动来开机加载的,这里有这么一个关键的函数在usbfndrv.cpp里面CreateSerialObject,这里会创建出USBSerialFn,USBSerSerialFn,这里就可以用他来操作ufn驱动
所以至于分层COM_MDD-->COM_PDD-->usbserial--->usbfuction驱动