WEB开发网
开发学院软件开发VC OAL点点滴滴(一) 阅读

OAL点点滴滴(一)

 2007-03-18 21:25:57 来源:WEB开发网   
核心提示: 三、内核初始化函数执行完毕后开始按如下步骤执行:内核创建用于与filesys.exe同步的事件对象SYSTEM/FSReady,之后启动filesys.exe,OAL点点滴滴(一)(3),启动filesys.exe的意义是让filesys.exe读取注册表数据,内核等待事件SYSTEM/F

三、内核初始化函数执行完毕后开始按如下步骤执行:

内核创建用于与filesys.exe同步的事件对象SYSTEM/FSReady,之后启动filesys.exe。启动filesys.exe的意义是让filesys.exe读取注册表数据。

内核等待事件SYSTEM/FSReady被触发,这个事件是由filesys.exe在做完一系列工作后触发。这一系列的工作内容如下:

2.1 先检测这是一次冷启动还是热启动,如果是冷启动,那么初始化对象存储内存区域。

2.2 调用OEMIoControl函数,I/O控制代码为IOCTL_HAL_INIT_RTC,也就是初始化RTC。

2.3 初始化数据库子系统和API、文件系统API、消息队列API。

2.4 如果操作系统镜像(nk.bin)包括RAM文件系统,那么读取Initobj.dat文件内容后创建一个RAM文件系统。

2.5 初始化注册表(在内存中形成注册表)。

2.6 如果此时device.exe没有启动,那么读取HKEY_LOCAL_MACHINESystemStorageManager下"Dll"的值(这个值为存储管理器所在的.dll的文件名)并加载到内存。加载之后创建一个线程专用于初始化存储管理器,初始化之后此线程结束。

2.7 初始化NLS(national language support)。关于NLS请参见我的文章《CE下中文输入法编辑器》。

2.8 为数据库引擎设置本地ID。

2.9 读取Initdb.ini文件,安装在对象存储中的数据库。

2.10 触发SYSTEM/FSReady事件,之后filesys.exe处于等待状态,等待内核发通知给它。

此时注册表已经存在于内存当中,内核开始读取如下位置数据:    HKEY_LOCAL_MACHINELoaderSystemPath
    HKEY_LOCAL_MACHINESYSTEMOOMcbLow and cpLow
    HKEY_LOCAL_MACHINESYSTEMKERNELInjectDLL
    HKEY_LOCAL_MACHINEMUIEnable and SysLang
    HKEY_CURRENT_USERMUICurLang

内核设置低内存处理(out of memory)。低内存处理是指当前可用的内存非常少时,内核所做的解决方案(CE帮助文档中有详细说明)。

内核在做好了上述工作后通知filesys.exe,由filesys.exe做其余工作。filesys.exe所做的工作内容如下:

5.1 读取HKEY_LOCAL_MACHINESystemEvents 下包含的所有事件对象名称并一一创建。

5.2 读取HKEY_LOCAL_MACHINEInit 下包括的所有应用程序名称并一一启动。如果device.exe在列表中并且此时它已经启动了,那么触发SYSTEM/BOOTPHASE2事件,这会使device.exe重新读取注册表数据来完成最后的驱动程序初始化。

5.3 初始化时间区域(time zone)。

上一页  1 2 3 

Tags:OAL 点点滴滴

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接