不要让BIB文件成为加载驱动的拦路虎

在将WinCE5.0驱动移植到WinCE6.0时遇到驱动未加载的问题,通过修改BIB文件中的DLL重定位属性解决了该问题。

//=====================================================================
//TITLE:
// 不要让BIB文件成为加载驱动的拦路虎
//AUTHOR:
// norains
//DATE:
// Wednesday 10-November-2010
//Environment:
// Windows CE 6.0
// TCC8900
//=====================================================================

最近在将WinCE 5.0驱动移植到WinCE 6.0时,发现了一件很匪夷所思的怪事,就是驱动根本没有被加载。从输出的串口消息看出,XXX_Init函数根本就没有被调用。难道是系统将驱动给忽略掉了?虽然这可能性不大,但还是要确认一下。所以,就手动调用ActivateDeviceEx试试,结果返回为FALSE。用GetLastError查看错误值,为2,查看Error Lookup,提示系统找不到指定的文件。

这就奇怪了,通过ActiveSync在Windows目录实实在在看到文件了啊?不信邪了,将驱动注册表的DLL换个名字,然后将编译好的驱动也换个名字,拷贝到Windows目录,然后调用ActivateDeviceEx,结果居然成功加载了!

改了名字就能成功加载,首先可以断定问题绝对不是出在代码上,也不会出在编译阶段,那么会在哪里呢?和文件有关的,莫非是BIB文件?

打开我驱动下的bib文件,内容如下:

MODULES
EncSecMgr.dll $(_FLATRELEASEDIR)/Enc.dll NK

这语句看起来应该没有什么问题,因为在WinCE 5.0是一切正常的。不过,突然想起来,WinCE 6.0的内存机制已经变动很大,会不会是因为DLL没有重定位的原因?想到这里,将该语句添加一个K属性,如:

MODULES
EncSecMgr.dll $(_FLATRELEASEDIR)/Enc.dll NK K

烧录系统,测试,XXX_Init 函数被调用,输出了相应的串口信息。OK,一切正常!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值