CE6下,oal.exe(即nk.exe)是个特殊的进程,它不能享受其他AP的进程那样,link一个lib的方式来和一个dll建立隐式链接,包括coredll.
OAL.exe也不能用Loadlibrary方式来加载dll,因为loadlibrary本身就是API,可以使用它的exe必须link coredll.lib。
可怜的oal只能访问kernel.dll,但是也是用特殊的方法(NKGlobal)来做到的,具体方法是,romimage帮忙吧NKGlobal的地址fixup在pTOC, oal通过pToc得到kernel.dll的入口地址和几个少的可怜的函数接口。在这里LoadOneLibrary和GetProcessAddrA之类的函数依然是在kernel实现,但是这些接口并没有默认提供给OAL,郁闷吧!? 因为heap在cE6下依然是coredll实现的,kernel可以通过loadlibrary的方式来搞定coredll,从而可以调用LocalAlloc之类的heap分配,但是oal就望尘莫及了,所以oal里面的东西比如kernelioctrl里面的函数实现代码不能使用堆!
我之前强行link coredll可以运行的原因也可能是pc指针在coredll.dll在没有load到kernel xip地址之前的代码段运行,这种方式是非常脆弱和不建议的。
相关推荐
通过CETOOLS 1.4控件访问WINCE设备的实践指南
Windows CE(简称WINCE),是微软公司开发的一套嵌入式操作系统。它具备模块化、可伸缩性强、实时性能优秀的特点,广泛应用于智能手机、工业控制系统、POS机以及车载设备等领域。WINCE系统的高可定制性让它能够根据不同设备的需求进行优化配置,从而在资源有限的环境下高效运行。CETOOLS是一套专为WINCE设备开发而设计的工具包,它集成了多种开发组件,极大地方便了开发人员进行设备驱动、应用程序以及系统定制等工作。
API函数大全(转载)
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetCo
基于CE平台下调用底层API画圆弧?希望给予指导~~
<br /> <br />在windows PC下GDI32.dll中有arc或者是ArcTo这个画圆弧函数,但是基于windows CE下没有,本人利用的就算计图形学画的圆弧,有什么不当的地方请指出,O(∩_∩)O谢谢(这里只考虑了画圆~而不是椭圆)<br />代码如下:<br /> <br /> /// <summary> /// 获取圆弧上的点(中点画圆法) /// </summary> /// <param name="x0">
CE5 vs CE6
主要区别:1、 进程地址空间由原来的32M,增大到1GB2、 进程数量由32个,增大到32768个3、 有内核态和用户态的驱动4、 Device/Filesys/GWES,3大exe合并到内核中,变为DLL5、 SetKMode、SetProcPermissions函数不再提供6、 系统调度的效率提高了 1. 进程地址空间:CE5是Slot机制,每个
WinCE6.0 OAL的特点
转载自( http://www.cnblogs.com/we-hjb/ ) WinCE6.0的OAL跟WinCE5.0中的有较大差别。了解这些差别,对我们移植OAL部分很有帮助。本文将简要介绍WinCE6.0 OAL的特点。 WinCE5.0将内核、OAL和KITL链接成一个内核可执行文件NK.exe。而WinCE6.0将这三者分开,分别对应Kernel.dll、OAL.exe
WinCE6.0 OAL的特点
WinCE6.0的OAL跟WinCE5.0中的有较大差别。了解这些差别,对我们移植OAL部分很有帮助。本文将简要介绍WinCE6.0 OAL的特点。 WinCE5.0将内核、OAL和KITL链接成一个内核可执行文件NK.exe。而WinCE6.0将这三者分开,分别对应Kernel.dll、OAL.exe和KITL.dll。显而易见,这样做最大的好处是可以单独升级这三者中的任何...
CE6 驱动: 你不得不知道的事情
许多人担心CE6驱动的向后兼容性。在CE6上,应用程序和OAL可以比较良好的兼容,但驱动就比较难。驱动在移植到CE6上必须做一定的修改,原封不动的放到CE6上运行是不太可能的。驱动需要修改的主要原因:1、 API的差异2、 内存传递3、 Buffer异步访问4、 用户层接口处理 CE6驱动的最大差异在于内嵌指针和数据传递,这个在《Memory marshal
VirtualCopy in WinCE6.0
在CE4.2/5.0里面滚打多年的兄弟应该经常用这个函数吧。这个函数方便驱动和应用程序范围任何的物理地址,包括物理内存啊,设备控制器的寄存器啊,甚至GPIO也可以在AP里面随便拉上拉下。这个函数虽然方便,但是并不安全,你想你好不容易把一个功能完善的image给build出来了,结果碰到了一个写AP的“高手”,把你的寄存器和共享内存中的数据修改得一塌糊涂,最后报出bug来说你驱动的你会不会晕倒!
Windows ce的体系结构和功能
Windows ce的体系结构和功能 Windows ce体系结构图操作系统层操作系统的基本功能被放在多个独立的进程(exe)里面实现。在运行的时候,这些进程大致有如下几个:l 内核NK.EXEl 图形系统GWES.EXEl 对象存储FILESYS.EXEl 设备管理系统DEVI
Windows CE的体系结构和功能
http://www.cnblogs.com/hbt19860104/archive/2008/01/22/1048729.html Windows CE体系结构图 操作系统层 操作系统的基本功能被放在多个独立的进程(exe)里面实现。在运行的时候,这些进程大致有如下几个: l 内核NK.EXE l 图形系统GWES.
Windows Embedded CE 6.0 Internals (1)
最近在学习Windows Embedd CE 6.0和Windows桌面系统内部一些知识,这篇文章是对部分内核知识的整理和总结,跟各位博客园的朋友分享。Windows Embedded CE 6.0是非常优秀的嵌入式系统(不是做广告哦^^),对其内核的学习对我们开发、移植驱动和应用程序,对开发、移植嵌入式系统都非常有好处。最好的学习方式就是看源码啦,直接看源码有点困难,所以这篇文章就是帮
Windows Embedded CE 6.0 Internals (1) Kernel Overview
最近在学习Windows Embedd CE 6.0和Windows桌面系统内部一些知识,这篇文章是对部分内核知识的整理和总结,跟各位博客园的朋友分享。Windows Embedded CE 6.0是非常优秀的嵌入式系统(不是做广告哦^^),对其内核的学习对我们开发、移植驱动和应用程序,对开发、移植嵌入式系统都非常有好处。最好的学习方式就是看源码啦,直接看源码有点困难,所以这篇文章
852




被折叠的 条评论
为什么被折叠?



