如何修改网站内容(WindowsCE操作系统的PlatformType类型值是怎样的?-八维教育)

优采云 发布时间: 2022-03-01 23:14

  如何修改网站内容(WindowsCE操作系统的PlatformType类型值是怎样的?-八维教育)

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

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

  <IMG style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=199 alt=选择Target菜单中的Target src="http://images.51cto.com/files/uploadimg/20090716/1513320.jpg" width=398 border=0 Control tle="clip_image004">

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

  <IMG style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=372 alt=查看运行结果 src="http://images.51cto.com/files/uploadimg/20090716/1513321.jpg" width=493 border=0 le="clip_image006">

  修改操作系统类型

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

  Windows CE 操作系统的平台类型值在 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 文件中,我们会找到以下代码:

  #if defined( project_smartfon )  #define IOCTL_PLATFORM_TYPE (L"SmartPhone\0")  #elif defined( project_wpc )  #define IOCTL_PLATFORM_TYPE (L"PocketPC\0SSDK\0")  #else  #define IOCTL_PLATFORM_TYPE (L"DeviceEmulator")  #endif  #define IOCTL_PLATFORM_OEM (L"Microsoft DeviceEmulator") 

  Device Emulator 的 BSP 通过编译选项区分不同的平台类型。如果是 Windows CE 系统,Platform Type 是 DeviceEmulator。好吧,通过修改 IOCTL_PLATFORM_TYPE 的值,我们可以“欺骗”操作系统,使其认为应用程序正在Pocket PC 或智能手机上运行。注意:由于 Windows Mobile 和 Windows CE 的函数库有很大不同,Windows Mobile 应用程序可能无法直接在 Windows CE 上运行。

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

  <IMG style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=411 alt=在Build菜单中选择Advanced src="http://images.51cto.com/files/uploadimg/20090716/1513322.jpg" width=454 border=0 Build Commands中的Rebuild Current BSP and Subprojects。>

  我们可以在编译完BSP和Subjectject之后调用BuildRel和Makeimg生成一个新的NK.bin。这样,我们可以节省大量的重新编译时间。在我的机器上完成 BSP 编译大约需要几分钟。如果是重建操作系统,大约需要20分钟。

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

  <IMG style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=361 alt=查看运行结果 src="http://images.51cto.com/files/uploadimg/20090716/1513323.jpg" width=480 border=0>

  ***另外需要提醒的是,该方法只对通过SystemParametersInfo API检测Platform Type的应用有效。如果软件使用其他方法检测Platform Type,则需要详细分析具体问题。

  更多文章关于Windows Embedded CE开发,请参考“Windows Embedded CE中国研发团队”中文博客:

  【编辑推荐】

  Windows Embedded Standard 2009 功能介绍 微软计划以Windows Embedded进入Smartbook市场 Windows Embedded Embedded系统的功能 在Windows Embedded中创建Silverlight组件 Windows Embedded与生活息息相关

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线