如何修改Windows CE的平台类型(下)

开发
本文介绍如何修改Windows CE的平台类型,我们介绍如何编写一个应用程序来检测当前运行的平台类型。

如果使用SPI_GETOEMINFO参数,我们可以获得OEM信息,如果返回字符串中包括“Microsoft DeviceEmulator”,则表示当前应用程序运行在模拟器中。

CheckPlatform 程序编译好后,会自动加入到NK.bin 中。我们可以通过Command Shell,运行应用程序。调用Attach Device启动Windows CE操作系统后,选择Target菜单中的Target Control(快捷键Alt+1),输入”s chekplatform”,就可以运行CheckPlatform程序。

选择Target菜单中的Target

好了,***看一下运行结果:

查看运行结果


修改操作系统的类型

上面的话题其实很多文章都讨论过了。但是在实际工作中,我们会遇到一些平台迁移的工作。我们会首先将 Windows Mobile的软件在Windows CE上运行,以验证功能。不过有些软件检测了操作系统类型,在不修改软件代码的情况下,我们是否可以在Windows CE上运行检测平台类型的应用程序呢?

Windows CE操作系统的Platform Type类型值是在BSP中被指定的,我们可以通过修改BSP中的Platform Type来改变系统的Platform Type。注意:这种情况只能出现在测试时,不应该修改实际产品的平台类型,否则会引起很多安全性的问题。

我们打开Windows CE 6.0 R2的源代码,位置在:

x:\WINCE600\PLATFORM\DEVICEEMULATOR\SRC\INC

我们修改的是DEVICEEMULATOR的代码,如果是其他平台的代码,则去相应BSP文件夹中的指定位置。在BSP的INC文件夹中,我们会找到一个ioctl_cfg.h文件。

在ioctl_cfg.h文件中,我们会找到下面的代码:

  1. #if defined( project_smartfon )  
  2. #define IOCTL_PLATFORM_TYPE (L"SmartPhone\0")  
  3. #elif defined( project_wpc )  
  4. #define IOCTL_PLATFORM_TYPE (L"PocketPC\0SSDK\0")  
  5. #else  
  6. #define IOCTL_PLATFORM_TYPE (L"DeviceEmulator")  
  7. #endif  
  8. #define IOCTL_PLATFORM_OEM (L"Microsoft DeviceEmulator") 

Device Emulator的BSP通过编译选项区分了不同的平台类型,如果是Windows CE系统,则Platform Type为DeviceEmulator。好了,我们可以通过修改IOCTL_PLATFORM_TYPE的值,来“欺骗”操作系统,让应用程序认为自己运行在Pocket PC或Smartphone上。注意:因为Windows Mobile和Windows CE的函数库存在巨大差异,Windows Mobile的应用程序在Windows CE上未必能够直接运行。

修改IOCTL_PLATFORM_TYPE之后,我们需要重新编译BSP,才能够完成Platform Type的修改。在Build菜单中选择Advanced Build Commands中的Rebuild Current BSP and Subprojects。

在Build菜单中选择Advanced

我们可以编译BSP和Subporject后,调用BuildRel和Makeimg生成新的NK.bin。这样,我们就可以节省大量的重新编译的时间。在我的机器上大概几分钟就完成了BSP的编译,如果是重新Build操作系统的话,需要二十分钟左右。

NK编译成功后,选择Attach Device,重新运行系统和CheckPlatform程序,会得到下面的运行结果:

查看运行结果

***还需要提示一下,这种方法只对通过SystemParametersInfo API检测Platform Type的应用程序有效。如果软件使用了其他方法检测Platform Type的话,那就需要具体问题具体分析了。

更多关于Windows Embedded CE开发的文章,请参考“Windows Embedded CE 中国研发团队”的中文博客:http://blogs.msdn.com/wincechina/

【编辑推荐】

  1. Windows Embedded Standard 2009 功能简介
  2. 微软计划通过Windows Embedded进军Smartbook市场
  3. Windows Embedded嵌入式系统的特色
  4. 在Windows Embedded中创建Silverlight组件
  5. Windows Embedded与生活息息相关
责任编辑:佚名 来源: 博客园
相关推荐

2009-07-16 14:52:00

修改Windows C平台类型

2009-04-11 15:12:24

Windows CE串行通信GPS

2009-05-28 13:27:33

Windows CE

2010-02-25 15:30:47

SDRAMWindows CE

2009-07-16 10:23:43

AD驱动Windows CE

2010-01-13 14:18:52

Windows Emb

2010-03-31 16:36:35

Windows CE

2009-04-22 17:18:29

WindowsCEVistaXP

2011-08-01 16:52:42

Windows CE 嵌入式

2009-08-17 09:57:00

C# Windows

2011-06-27 09:49:53

Windows CEAndroid

2010-02-25 14:27:59

Windows CE

2010-05-28 09:31:10

修改SVN密码

2010-03-17 14:21:47

Windows Emb

2009-07-06 18:01:04

Windows CE未公开函数

2010-05-05 13:16:02

Windows PhoWindows CE

2015-10-28 09:56:47

云计算Windows10Windows应用

2009-09-24 09:45:07

Windows Emb

2009-08-17 09:27:12

c# Windows

2010-03-30 15:44:16

Windows CE
点赞
收藏

51CTO技术栈公众号