问题层出不穷,一切皆有原因。
今天发现最新的DM程序,在PPC上面不能正常运行,截图如下。
每个主键下只打开了一个子键。而TRE,就没有这个问题。起初以为是数字签名的问题,查看了相关的帮助文档后发现,应该不是数字签名的原因。
Additionally, the system protects a set of registry keys so that they cannot be modified by normal applications. All applications can read all registry keys and values, but only privileged applications can modify values or subkeys below protected keys. The system protects a base set of keys. This set of keys is extensible by the original equipment manufacturer.
确定了是代码的问题后,通过插桩调试的方法,终于找到了问题所在。原来是GetCursorPos()惹得祸,在PPC上似乎是不支持这个API的,用GetMessagePos()替换掉该API后,就成功解决了这个问题。截图如下。
我想不光是PPC上会有这个问题,在某些特定的WinCE系统上(没有包涵GWES_CURSOR OR GWES_MCURSOR组件)也会存在这个问题,只是自己平时定制系统时都包括了这些组件,所以一直以来没有发现这个BUG。这里又涉及到一个问题,如何确定一个程序能否在特定的WinCE系统上正常运行。因为WinCE系统是一个非标的操作系统,它对API的支持在定制系统时就决定了。关于这个问题,有时间应该整理一下,最好是写个程序来检测,产生一个Report,方便开发者判断需要在定制系统时添加哪些组件,也能让用户在程序不能运行时有个答案。
刚刚去书店转了一下,发现已经有介绍WinCE6.0的书了,书很厚,讲的内容也不少,电子工业出版社出的,书名《Windows CE嵌入式系统开发从基础到实践》。还有一本是《EVC高级编程及应用开发》的升级版,基于VS2005来介绍的,应该也不错。