移植到Windows CE 的经验

简介:   Windows CE 是微软早期推出的嵌入式设备和移动设备的开发运行平台,虽然目前移动端几乎都是android和ios的天下,但是,在嵌入式设备领域,Windows CE仍然占有一块地盘。很多用户希望让ESFramework通信框架和轻量级的通信引擎StriveEngine能支持Windows CE 客户端,基于这个需求,前几个月,我将ESFramework和StriveEngine的客户端引擎移植到了WinCE平台。

  Windows CE 是微软早期推出的嵌入式设备和移动设备的开发运行平台,虽然目前移动端几乎都是android和ios的天下,但是,在嵌入式设备领域,Windows CE仍然占有一块地盘。很多用户希望让ESFramework通信框架和轻量级的通信引擎StriveEngine能支持Windows CE 客户端,基于这个需求,前几个月,我将ESFramework和StriveEngine的客户端引擎移植到了WinCE平台。

  在WinCE平台下,可以使用.NET(Compact Framework),这是个好消息,但是移植的过程还是碰到了很多麻烦,特别是部署WinCE的开发环境就摸索了很久。

一.部署WinCE开发环境

1.安装VS2005以及SP1

  更高的VS版本已经不直接支持WinCE了,VS2005对WinCE开发的支持应该说是最方便的。

2.安装Windows Embedded CE 6.0

  这个比较坑爹,在MS官网居然找不到一个6.0的完整安装包,可能是因为太老了。转折N久之后,还是从这个地方批量下载一个个安装文件,才算凑成了一个完整的安装程序。

3.安装ActiveSync 4.5

  ActiveSync在baidu搜索就很容易找到下载地址,下载后安装也还是很顺利的。

二.使用WinCE进行开发、调试

  在上述的环境准备就绪后,我们就可以开始创建WinCE项目并进行调试了。

1.创建WinCE项目。

  使用VS2005创建项目,在左侧菜单中,可以选择“智能设备->WinCE”,其是基于.NET 2.0 Compact Framework的。然后,就可以像开发普通的.NET应用一样来编写代码了。

2.开始调试

(1)启动ActiveSync。

  并点击“文件”—>“连接设置”,在“允许连接到以下其中一个端口”下选择“DMA”。

(2)打开仿真设备管理器(VS2005->tools->仿真设备管理器)。

(3)让模拟器可以联网。

  在仿真设备管理器界面上,可以看到仿真程序列表,在某个列表项上(比如 Pocket PC 2003 SE 仿真程序)右键->Connect,连接成功后,再右键->cradle。

         

  如此,模拟器相当于与当前电脑位于同一个局域网,如果,服务端程序在当前电脑上运行,那么,模拟器上运行的客户端程序要连接的是当前电脑的局网IP地址,而不能是“127.0.0.1”。我们需要把模拟器当作一个独立的电脑设备。

(4)接下来,我们就可以在WinCE程序中设置断点,进行跟踪和调试了。

三.关于反射(Reflection)在WinCE上的运行

  将ESFramework的某些功能移植到WinCE时,需要使用Reflection来动态获取和设置object的某个属性的值,就像这样: 

 object val = type.InvokeMember(propertyName, BindingFlags.Default | BindingFlags.GetProperty, null, targetObj, null);

   代码的编写和编译都是没有问题的,但是运行到这句时,会抛出NotSupportException。于是,我换了一个反射的方式:

 PropertyInfo pro = type.GetProperty(propertyName);
 object val = pro.GetValue(targetObj, null);

  这样,居然就能正常运行了,这是个有点奇怪的事情。

 

目录
相关文章
|
3月前
|
Shell PHP Windows
来自红队大佬的经验之谈---命令执行过滤绕过-Windows篇
感谢来自老流氓大佬的投稿,本次文章介绍的是在windows环境下,过滤的“点”和“空格”等符号,如何利用windowsit特性进行绕过
|
3月前
|
网络协议 Linux 编译器
【原创】EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统移植指南
EtherCAT主站方案对比:商业的如Acontis、TwinCAT3和开源的igh、SOEM。SOEM易移植但功能和实时性不足,适合简单应用;igh功能强大,实时性能优秀,基于内核态,适合复杂场景。igh能移植到其他RTOS,但需克服多任务无调度的挑战。依赖操作系统服务如定时器、内存分配,适合Linux内核,但移植到裸机复杂。
106 0
|
Linux Go C语言
ucgui在windows上的移植,及为go语言打造简易跨平台GUI的想法
ucgui在windows上的移植,及为go语言打造简易跨平台GUI的想法
|
Windows
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(三)
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(三)
186 0
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(三)
|
Windows
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(二)
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(二)
140 0
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(二)
|
Windows
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(一)
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(一)
178 0
【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )(一)
|
UED Windows
【Windows 逆向】OD 调试器工具 ( OD 工具简介 | OD 工具与 CE 工具对比 )
【Windows 逆向】OD 调试器工具 ( OD 工具简介 | OD 工具与 CE 工具对比 )
958 0
【Windows 逆向】OD 调试器工具 ( OD 工具简介 | OD 工具与 CE 工具对比 )
|
安全 数据挖掘 定位技术
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 尝试进行瞬移操作 | 尝试查找飞天漏洞 )
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 尝试进行瞬移操作 | 尝试查找飞天漏洞 )
357 0
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 尝试进行瞬移操作 | 尝试查找飞天漏洞 )
|
数据挖掘 Windows
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 人物数据内存结构 | 人物三维坐标数据分析 )
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 人物数据内存结构 | 人物三维坐标数据分析 )
398 0
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 人物数据内存结构 | 人物三维坐标数据分析 )
|
Windows
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 遍历查找后坐力数据 | 尝试修改后坐力数据 )
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 遍历查找后坐力数据 | 尝试修改后坐力数据 )
297 0
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 遍历查找后坐力数据 | 尝试修改后坐力数据 )