Copyright 2008-2009 Farsight.
All rights reserved.
今天的内容
}Windows Mobile 系统结构
}Windows Mobile 应用程序
}本机代码
}Win32应用程序代码结构分析
}托管代码
}.Net Compact Framework应用程序代码结构分析}托管代码运行原理
}Windows Mobile托管代码开发示例}拨打电话发送短信
}POOM: 联系人日历任务
Windows CE/Mobile 系统结构3OEM Hardware Embedded Shell WIN32 APIs COREDLL, WINSOCK, OLE, COMMCTRL, COMMDLG, WININET, TAPI Windows CE Shell Services Kernel
Library
IrDA GWES Device Manager File System Manager TCP/IP OAL
Bootloader Drivers Device drivers File drivers
OEM ISV, OEM Windows Mobile Shell
Windows Mobile Application
Mobile 组件Microsoft
Applications
Windows Mobile开发工具
}OS Design Development
}Platform Builder for Windows Mobile }Boot Loader
}OAL
}Device Driver
}Service
}Native Application
}NK.bin
Windows Mobile开发工具}Application Development
}eMbedded Visual C++ 4.0
}Win32
}ATL
}MFC
}Visual Studio 2008
}Visual C++
¨Win32 ATL/WTL MFC
}Visual C# Visual Basic
¨.Net Compact Framework
Win32代码分析
}程序的起始点--main 函数
}WinMain 函数
}窗口过程
}WndProc 函数
}注册窗口类
}RegisterClassEx 函数
}消息循环
}创建窗口
}ShowWindow 函数UpdateWindow函数
C#代码分析
}Application.Run(new Form1());
}InitializeComponent();
公共语言运行库(CLR)
}.NET Compact Framework 公共语言运行库(CLR) 也被重新生成,以允许受约束的资源在有限的内存上运行以及高效率地使用电池电源。
}Windows CE 和公共语言运行库之间存在一个平台适配层,用以将CLR 和Framework 需要的服务和设备接口映射到Windows CE 服务和接口。
公共语言运行库(CLR)
}CLR是.Net Framework 运行行库的执行环境
}在CLR控制下运行的代码称为托管代码(managed code)
CLR的两个编译阶段
}把源代码编译为Microsoft 中间语言(IL) }CLR把IL 编译为平台专用的代码
托管代码的优势
}平台无关性
}中间语言根据平台编译
}类似JAVA字节代码的JAVA平台无关性}提高性能
}JIT编译-IL即时编译
}不会在启动时编译完所有的代码
}只编译调用的部分代码
}编译一次后储存内部可执行代码
}退出应用程序储存的代码失效
通用类型系统(CTS)
}值类型
}值类型直接包含它们的数据,值类型的实例要么在堆栈上,要么内联在结构中。值类型可以是内联的(由运行库实现)、用户定义的或枚举的。
}引用类型
}引用类型存储对值的内存地址的引用,位于堆上。引用类型可以是自描述类型、指针类型或接口类型。引用类型的类型可以由自描述类型的值来确定。自描述类型进一步细分成数组和类类型。类类型是用户定义的类、装箱的值类型和委托。
通用类型系统(CTS)
Windows Mobile托管代码示例
}拨打电话
}Microsoft.WindowsMobile.Telephony.dll 程序集}Microsoft.WindowsMobile.Telephony命名空间}Talk方法
}Public void Talk(String number);
}Public void Talk(String number, bool showPrompt)
Windows Mobile托管代码示例}Pocket Outlook对象模型
}账户对象模型
}SmsAccount类-短消息
}EmailAccount类-电子邮件
}文件夹对象模型
}AppointmentFolder类-日历/约会
}TaskFolder类-任务
}ContactFolder类-联系人
Q&A
17
18