如何修改网站内容(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与生活息息相关