参考的:http://blog.csdn.net/gooogleman/article/details/3338912
将Public下的驱动移植到BSP下比较容易,实际上PB也提供了相关的工具:Sysgen_capture(参考MSDN:Cloning the Microsoft Public Common Code)。那么如何来用这个工具呢? 下面就以PRINTER为例子来介绍一下:首先把WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USB\CLASS下的PRINTER文件夹拷贝到<Platform>/SRC/DRIVERS/路径下。然后在命令行中设置到该路径下,键入sysgen_capture usbprn之后回车。那么在该文件夹下出现一个sources.usbprn打开该文件有如下的设置:
TARGETNAME=usbprn
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
SYNCHRONIZE_DRAIN=1
DLLENTRY=DllEntry
DEFFILE=$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\usbprn.def
SOURCELIBS=
TARGETLIBS=\
$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\usbprn_lib.lib \
$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\usbclient.lib \
$(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\usbd.lib \
$(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib
SOURCES=
把这个DEFFILE的值直接改成usbprn.def
之后看TARGETLIBS下的东西,可以看到有个usbprn_lib.lib这个lib就是PRINTER下的源码所生成的,所以直接把这个拿掉
最后修改过的文件如下:
TARGETNAME=usbprn
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
SYNCHRONIZE_DRAIN=1
DLLENTRY=DllEntry
DEFFILE=usbprn.def
SOURCELIBS=
TARGETLIBS=\
$(_PUBLICROOT)\common\oak\lib\$(_CPUINDPATH)\usbclient.lib \
$(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\usbd.lib \
$(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib
SOURCES = \
USBPRN.C \
LPT.C
CDEFINES = $(CDEFINES)
MSC_WARNING_LEVEL = $(MSC_WARNING_LEVEL) /W3 /WX
!IF "$(BUILD_BROWSE)"=="1"
CDEFINES = $(CDEFINES) -FR
!ENDIF
#xref VIGUID {a43d90c5-c1cd-4516-bac0-bdb8f1d44e8a}
#xref VSGUID {bd8488e3-a124-405f-8031-c45ae314bfc5}