




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Elastos平台上可执行文件的三种入口规范白轶荣 陈榕(同济大学计算机科学与工程系,上海 200092)摘 要:“Elastos”嵌入式操作系统是基于CAR构件技术、支持构件化应用的操作系统,是国家863支持的TD-SCDMA的操作系统标准。Elastos平台上的可执行文件是Elastos嵌入式操作系统中最重要的文件类型,因为可执行文件是完成操作的真正执行者。可执行文件的大小、运行速度、资源占用情况以及可扩展性等与文件的加载过程和文件的入口规范紧密相关。研究可执行文件的加载过程、执行流程和入口规范对编写高性能程序和一些黑客技术的运用都是非常有意义的。关键词:Elastos平台;可执行文件;ElastosMain;Three entry criterions of executable file on Elastos platformBai Yirong Chen Rong (Department of Computer Science and Engineering, Tongji University, 200092, China)Abstract:Elastos is an embedded operating system based on CAR component technology, and the standard TD-SCDMA operating system supported by the 863 Program. Executable file on Elastos platform is the most important file type in Elastos embedded OS. Because executable file is the real executor of operation. The size, speed, owned resources and extensibility of executable file is closed to the loading process and entry criterions of executable file. The research of loading process, flow of execution and entry criterions of executable file is very significant to improve the performance of program and apply some hacker techniques.Key words:Elastos platform; Executable file; ElastosMain;1. 引言Elsatos 1是科泰世纪自主设计、实现的网络构件运行平台。Elastos 具有体积小、速度快、效率高的特点,适合于智能手机等消费类电子的嵌入式应用。Elastos 提供关于CAR4编程模型和CAR 构件运行的最优化支持。其主要特色包括:支持使用XML 进行用户界面(MMI)设计;利用URL 对数据文件和CAR 构件进行编址;通过CAR 构件动态扩展XML 标签。Elastos平台上的可执行文件是Elastos嵌入式操作系统中最重要的文件类型,因为它们是完成操作的真正执行者。可执行文件的大小、运行速度、资源占用情况以及可扩展性等与文件的入口规范和文件加载过程紧密相关。研究可执行文件的入口规范对编写高性能程序和一些黑客技术的运用都是非常有意义的5。2. Elastos平台可执行文件执行的基本流程在Elastos平台或POSIX标准兼容的系统中,执行一个可执行文件就创建了一个进程。进程只是提供了一段地址空间和内核对象,其运行是通过在其地址空间内的主线程来体现的。在进程启动的同时即启动了一个被称作主线程或是执行线程的线程,该线程的入口一般来说就是main函数(或ElastosMain、wmain/main等),由它可以继续创建子线程。如果主线程退出,那么进程也就没有存在的可能了,系统将自动撤消该进程并完成对其地址空间的释放7。为了支持消息回调和事件触发机制,在Elastos系统中,当主线程返回时,如果进程退出码为成功返回,且在主线程中注册了回调事件,则系统不是立刻撤销该进程,而是进入一个事件处理过程的Event Loop,由用户在事件处理的过程中退出进程。如果当主线程返回时的进程退出码为失败返回,或没有在主线程中注册回调事件,则不进入事件处理过程,直接撤销该进程。StartUpElastosMain(const WStringArray& args)Initcode;/AddXXXCallback;return ec;EventQueuedoEvent() Exit();Exit(exitcode)图1 Elastos平台可执行文件执行的基本流程3. Exit code 进程退出码Exit code进程退出码可通接口方法IProcess:GetExitCode2得到,如果被结束的是本进程,可以通过CProcess:GetCurrent2得到当前进程。如果进程退出,那么进程的退出码有可能是以下几种情况:1. CProcess:Exit()2方法指定的exit code值。 2. main()函数中return语句返回的整型值。 3. CRT的exit函数退出进程时指定的返回值。 返回值的选择取决于应用程序的具体实现。一般情况下,正常退出时应该返回零,当exit code大于等于0时表示返回成功,当exit code小于0时表示返回失败。4. Elastos平台上三种可执行文件的主函数类型在Elastos平台上支持三种可执行文件的主函数类型:1)ECode _cdecl ElastosMain(const WStringArray& args) 3;2)int _cdecl _wmain(int argc, wchar_t * wargv)3;3)int _cdecl main(int argc, char * argv)3;其中ElastosMain()是Elastos平台默认首选的可执行文件的主函数,_wmain()和main()是POSIX标准兼容的主函数。5. Elastos 平台可执行文件EXE入口ECode _cdecl ElastosMain(const WStringArray& args);这是Elastos平台上EXE类型的可执行文件的默认入口点函数,args是一个包含启动参数的WStringArray,为了和POSIX特性6兼容,第一个参数为可执行文件的PATH,后续依次为用户参数。在ElastosMain执行完成后,会进入线程的事件处理过程,直到用户退出。 在ElastosMain返回后,若返回成功则进入事件处理过程,失败则结束进程,该ECode即为进程退出码。 如果用户没有在ElastosMain中安装回调处理句柄,那么在ElastosMain返回后进程会退出,ElastosMain的返回值即为进程退出码。示例1:#include ECode ElastosMain(const WStringArray& args) CConsole:WriteLine(L”Hello World!”); return NOERROR;6. POSIX兼容的标准可执行文件EXE入口int _cdecl main(int argc, char * argv);int _cdecl _wmain(int argc, wchar_t * argv);其形态和行为都和POSIX标准兼容。 与ElasotsMain的区别:1) 参数类型与参数列表不一样2) 返回后直接结束进程,不会进入事件循环示例2:#include int wmain(int argc, wchar_t *argv)wprintf(LHello World!n);return 0;示例3:#include int main(int argc, char *argv) printf(Hello World!n); return 0;7. 可独立执行的CAR构件DLL入口具有main属性的CAR构件可以被独立的加载运行,如: main class CFooBar2 .对应会生成包含 ECode CFooBar:Main(const WStringArray& args);的C+代码。这个函数和ElastosMain的原型一致,行为也一致。参数表存在一些差异,第一个参数为该DLL的PATH,而非宿主进程的可执行文件PATH。 可以使用SuperExe2来执行CAR构件dll,必须有带main属性的class的dll才能被SuperExe执行。其他CAR构件只能由其他进程以dll的形式调用。示例:4CFooBar carmodule CFooBar.dll main class CFooBar CFooBar.cppECode CFooBar:Main(const WStringArray& args) WStringBuf_ wstrBuf;wstrBuf.Copy(LHelloWorld!n); CConsole:WriteLine(wstrBuf); return NOERROR;8. Elastos平台上执行可执行文件的宿主程序SuperExeSuperExe2是Elastos2.1应用开发环境下统一运行或调试可执行文件、具有main属性的CAR构件或widgets应用的宿主程序。 命令格式superexe -?|-Debug|-Hosting*.dll args .|*.dew args .|Directory args . 参数说明参 数描 述-? 显示帮助信息 -Debug 调试一个car构件或widgets程序 -Hosting 作为domain host运行 *.dll args . 运行或调试一个具有main属性的CAR构件 *.dew args . 运行或调试一个widgets程序 Directory args . 运行或调试某路径目录下的widgets程序 用法示例1) superexe -Hosting 作为domain host运行。 2) superexe btmaindll.dll 执行一个car dll。 3) superexe Dialer.dew 执行一个widgets。 4) superexe D:Elastos21ElastosXmlGlueSampleWidgetsDialer执行一个指定目录路径的widgets。9 总结本文主要介绍了Elastos平台上执行可执行文件的宿主程序superexe的用法;可执行文件的三种主函数类型ElastosMain(),_wmain(),main();平台上执行一个可执行文件的基本流程。参考文献1科泰世纪Elastos技术白皮书 EB/OL. . 2006 2科泰世纪和欣2.0资料大全EB/OL 2005,12月3Koretide. Elastos 2.0 Operating System ManualM/CD. , 2004/2005.6.4Chen Rong. The Application of Middleware Technology in Embedded OSR. Hangzhou: Workshop on Embedded System, In Conjunction with the ICYCS(6th), 2001. 1-35William S.Davis, Operating Systems A Systematic View M, Addison Wesley Longman, Inc, 20016Daniel P. Bovet, Marco Cesati. Understanding the Linux Kernel, 2nd EditionM. Sebastopol:OReilly, 2002. 22-35.7毛德操,胡希明. LINUX内核源代码情景分析M. 杭州: 浙江大学出版社. 2001.作者简介:白轶荣(1983-),男,山
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 能源转型新引擎:2025年储能技术多元化发展模式与格局解读报告
- 餐饮业食品安全监管区域联动机制:2025年构建与实施报告
- 电气施工方案设计流程与技术要点
- 美育营销活动方案
- 童装年底活动方案
- 组织畅游洛阳活动方案
- 电缆商会活动方案
- 美容院脱毛活动方案
- 线下正面管教活动方案
- 福建培训活动方案
- 看守所巡控岗位课件
- 2025秋冀人版(2024)科学二年级上册教学计划、教学设计(附目录)
- 第十四章 全等三角形 单元测试(含部分解析) 2025-2026学年人教版八年级数学上册
- 2025年中式烹调师(技师)考试题库及答案
- (高清版)DBJ∕T 13-91-2025 《福建省房屋市政工程安全风险分级管控与隐患排查治理标准》
- 2025年消防员招录面试题库及答案
- 小儿疱疹性咽峡炎护理查房
- 初中英语新人教版八年级上册全册单词(2025秋)
- 支气管扩张伴咯血的护理
- 村居法律明白人培训课件
- 6.3.3 点到直线的距离 课件-2025-2026学年高一数学高教版2023修订版基础模块 下册
评论
0/150
提交评论