当前位置: 代码迷 >> WinCE >> 如何新增USB function client 驱动
  详细解决方案

如何新增USB function client 驱动

热度:351   发布时间:2016-04-28 12:36:16.0
怎么新增USB function client 驱动
微软有三个usb client驱动:RNDIS, serial, and storage
但是没有提到怎么新增,另外应用层跟MDD层怎么调用?

目前我看了几天,觉得通过注册表应该可以增加DLL的,但是应用跟驱动之间的通信还是没有理解。

不知道有没有做过client相关的人员能提供一点信息
------解决方案--------------------
看看这个帖子,或许有帮助http://blog.csdn.net/nanjianhui/article/details/4555595
------解决方案--------------------
LZ定制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驱动

至少我是这么理解的
  相关解决方案