深入BREW模块加载机制 |
| 作者:东方欲晓 来源:本站整理 发布时间:2008-4-8 1:02:34 |
|
ply the AEEClsCreateInstance() // function. Hence, invoke it. For a static app, they will have // registered the create Instance function. Invoke it. if (pme->pfnModCrInst) { nErr = pme->pfnModCrInst(ClsId, pIShell, pIModule, ppObj); #if !defined(AEE_STATIC) } else { nErr = AEEClsCreateInstance(ClsId, pIShell, pIModule, ppObj); #endif } return nErr; } 可见对于dynamic module,由于pme->pfnModCrInst为NULL,所以调用通用的创建函数AEEClsCreateInstance(ClsId, pIShell, pIModule, ppObj)来进行创建。而对于static module,因为指定了自身的Createinstance函数,所以pme->pfnModCrInst不为NULL,从而执行特定于该module自身的createinstance函数 5. Applet创建 之后,不管是 AEEClsCreateInstance还是pme->pfnModCrInst其实都是类似的,通过AEEApplet_New(除extension class外通常都是调用该函数)来最终创建applet,AEEApplet_New无非是具体分配applet内存,初始化applet的vtbl(这里最重要的是实例化applet_handleevent)并返回Iapplet指针,供运行时使用 6. 程序运行 通常就是在applet_handleevent中进行各种事件处理。处理前一般将传入的Iapplet指针先转换为AEEApplet或者用户自身的结构,以便可以访问其中的数据变量。 以上就是我对BREW模块加载机制的理解。大家相互交流 |
| [] [返回上一页] [打 印] |
|
文章评论 |
