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

//=====================================================================
//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,一切正常!

 

你可能感兴趣的:(windows,测试,dll,WinCE,2010)