阅读:2667回复:7
大虾过来看看阿 wince 串口驱动加载问题
我在 wince 下注册表的HKLM\drivers\buildin\serials 键下设定值如下:
devicearrayidex 128 dll ms2_serial.dll iclass {cc5195ac-b...} irq 22 membase 1074790400 memlen 64 order 0 prefix COM sysyintr 29 通过跟踪打印log 发现 系统并没有调用 COM_Init() 但是却调用了ms2_serial.cpp的 CSerialPDD * CreateSerialObject() 是不是驱动程序加载 不需要从COM_Init() 作为入口阿? 高手指点下 |
|
沙发#
发布于:2007-10-18 16:45
你查查是CreateSerialObject是被哪个函数调用的。
|
|
板凳#
发布于:2007-10-18 16:58
谢谢先
被 Cserpdd.cpp 的SerInit()调用,但是我在里面加了log却没有打印出来,不知道为什么 SerInit( ULONG Identifier, // @parm Device identifier. PVOID pMddHead, // @parm First argument to mdd callbacks. PHWOBJ pHWObj // @parm Pointer to our own HW OBJ for this device ) { RETAILMSG(1, (TEXT("wfq-----serpddcm==cserpdd.cpp--> SerInit(Identifier=%d)\r\n"),Identifier));//wfq for tst DEBUGMSG (ZONE_CLOSE,(TEXT("+SerInit, 0x%X\r\n"), Identifier)); CSerialPDD * pSerialPDD = NULL; if (pHWObj) { DWORD dwIndex= pHWObj->dwIntID; pHWObj->dwIntID = 0; RETAILMSG(1, (TEXT("wfq-----serpddcm==cserpdd.cpp-->will call CreateSerialObject(Identifier=%d)\r\n"),Identifier));//wfq for tst pSerialPDD = CreateSerialObject((LPTSTR)Identifier,pMddHead, pHWObj,dwIndex); } 我用的是pxa270平台 。。。。 } 我安装PB时候用的是 retail方式 |
|
地板#
发布于:2007-10-18 17:00
CSerialPDD * CreateSerialObject(LPTSTR lpActivePath, PVOID pMdd,PHWOBJ pHwObj, DWORD DeviceArrayIndex)
{ CSerialPDD * pSerialPDD = NULL; RETAILMSG (TRUE, (TEXT("wfq----ms2_serial.cpp--> CSerialPDD * CreateSerialObject(DeviceArrayIndex=%d) \r\n"), DeviceArrayIndex));//wfq tst 。。。 } 打印函数应该没有问题,因为wfq----ms2_serial.cpp--> CSerialPDD * CreateSerialObject(DeviceArrayIndex=xx已经打印出来了 |
|
地下室#
发布于:2007-10-19 08:01
应该是加了调试信息的代码没有被编译,把那些代码与你现在的文件一起编译就能出来了.
|
|
|
5楼#
发布于:2007-10-19 09:06
谢谢microsun 但是我采用的是
在 WM602\BuildScripts\WPC_MAINSTONEIII_Retail2\BaseOSEnv.bat 键入bldsdmem bldstk bldbt bldcsp 然后执行 WM602\BuildScripts\WPC_MAINSTONEIII_Retail2\BuildAll.bat 命令 这样Cserpdd.cpp 都不能编到么/ 我先改错一个代码试一试 |
|
6楼#
发布于:2007-10-19 15:57
通过改代码发现 public\common\oak\drivers\serial\serpddcm\Cserpdd.cpp 的SerInit()没有被调用。该文件都没有编,这样就奇怪了,除此之外整个程序都没有地方调用CreateSerialObject
。这究竟是怎么回事情啊,感觉就像闹鬼一样 驱动程序没有理由不掉用com_init 啊, |
|
7楼#
发布于:2007-10-20 19:33
搞定!
原来驱动还是通过dllentry进入 com_init也被加载。 是我这边的lib连接有问题!没有正确联上~ 谢谢microsun 和buaadallas |
|