如题,没有该驱动的源代码,只有厂家的几个.dll文件及.reg文件,目的是要加入内核。修改很简单,就是直接include.reg文件和修改platform.bib文件。
Sysgen,问题出现了:Error: Can't find import 2696 in coredll.dll,值得注意的是这个问题是出现在
makeimage的时候,从字面意义上看,是没有找到coredll中的一个函数实现。Google一把,还确实有诸多前辈出现过类似的问题,也都给出了一些解决该类问题的方法与步骤。
该问题的一般解决步骤如下:
(1) 定位到
\WINCE500\PUBLIC\COMMON\OAK\LIB\ARMV4I\RETAIL目录,我这里是三星的2440,所以是ARMV4I的。
(2) 在上述目录下有一个
coredll.def文件,用编辑工具打开它。该文件中定义的是开放给该类cpu架构的所有API,格式为:API名 @API号,例如:MessageBoxW @858。至于这个号是如何使用的,网络上有一篇文章讲的很好,可以google一下,具体的地址忘记了。
(3) 在
coredll.def文件查找那个没有找到而make出错的数字,这里是2696。
(4) 如果找到,就找出这个API的定义是在哪个CESYSGEN变量下,把这个变量对应的组件加入到OS工程中去,再sysgen。这样问题就可以解决了。在coredll.def文件中,API的列出是通过CESYSGEN变量分类的,例如:
; @CESYSGEN IF FILESYS_FSACL
CeRevertToSelf=xxx_CeRevertToSelf @1926
CeAccessCheck @1927
CePrivilegeCheck @1928
CeCreateTokenFromAccount=xxx_CeCreateTokenFromAccount @1929
CeConvertStrToSD=xxx_CeCvtStrToSD @1930
CeConvertSDToStr=xxx_CeCvtSDToStr @1931
CeCreateToken=xxx_CeCreateToken @1932
CeImpersonateToken=xxx_CeImpersonateToken @1933
CeDuplicateToken=xxx_CeDuplicateToken @1934
CeImpersonateCurrentProcess=xxx_CeImpersonateCurrentProcess @1935
; @CESYSGEN ENDIF
(5) 如果找不到,那么只能说恭喜你了,这个.dll或者别的文件你在该版本的wince系统上是用不了的了。
这次我就是那幸运的一个,
coredll.def文件中没有找到2696。用vc的depends工具打开coredll.dll文件,如下图所示:

可以看到
ordinal那一列就是API号。不过这里最大的号是2508。
从种种迹象上来看这个
2696应该是wince的更高版本中支持的,为此跑到wince6的coredll.def文件下,果然找到了这个2696。那么结论就是这个驱动的.dll文件是wince6版本的了。从以前的工程中拷贝一个过来,果然,至少makeimage通过了。