WinCE EBOOT中的BootPart分析
来源:互联网 发布:北京seo网络优化公司 编辑:程序博客网 时间:2024/05/18 09:06
应该说BootPart算是微软提供的一个用于分区的模块,可以在EBOOT中使用。不过说实话,我很少使用它,知道有些厂商的BSP里面支持这个功能,而且也算是EBOOT的一部分,所以还是介绍一下。先看一下架构,如图:
在EBOOT中,BLCOMMON处于最上层,这个在以前已经介绍过,BootPart模块会被OEM函数来调用,而BootPart模块要操作存储设备需要Flash Driver的支持。这里要说的是Flash Driver是指WinCE下的Flash驱动,也就是FMD_xxx接口的驱动。所以要使用BootPart模块,首先要有Flash的驱动的支持。BootPart模块在”/WINCE600/public/common/oak/drivers/ethdbg/bootpart”下面可以找到源代码,主要的实现都在bootpart.cpp中。Bootpart模块主要提供对Flash设备的分区功能和对BinFS的支持。下面介绍一下会用到的函数:
1. BOOL BP_Init (LPBYTE pMemory, DWORD dwSize, LPCTSTR lpActiveReg, PPCI_REG_INFO pRegIn, PPCI_REG_INFO pRegOut)
该函数可以说是BootPart模块的初始化函数,看看代码就知道他会调用FMD_Init来初始化Flash设备并初始化一块内存。该函数一般会在OEMPlatformInit函数中被调用。pMemory指向一块内存来存放MBR信息,dwSize为内存的大小,lpActiveReg,pRegIn和pRegOut会被FMD_Init用到,一般可以设置为NULL。
2. BOOL BP_LowLevelFormat(DWORD dwStartBlock, DWORD dwNumBlocks, DWORD dwFlags)
该函数用于低级格式化,它会格式化Flash设备中的Block,重新创建MBR并将MBR存到第一个Blockd的第一个扇区中。dwStartBlock为起始Block,dwNumBlocks为多少个Block,dwFlags为格式化标记位,表示采用何种格式化方式。该函数会根据需要来由EBOOT中的函数调用。
3. PPARTENTRY BP_GetPartitionInfo (HANDLE hPartition)
该函数用于获得某个分区的信息。hPartition为某一个分区的句柄,返回相应的分区信息。
4. HANDLE BP_OpenPartition(DWORD dwStartSector, DWORD dwNumSectors, DWORD dwPartType, BOOL fActive, DWORD dwCreationFlags)
该函数用于打开或者创建一个分区,可以通过该函数在Flash设备上面创建分区。dwStartSector为起始逻辑扇区,dwNumSectors为该分区中包含多少个扇区,dwPartType表示分区的类型,fActive为是否是激活分区,dwCreationFlags表示是创建分区还是打开分区,执行成功后返回该分区的句柄。
5. BOOL BP_WriteData(HANDLE hPartition, LPBYTE pbBuffer, DWORD dwLength)
该函数负责向某一个分区写入数据,一般EBOOT可以通过这个函数将WinCE image写入分区中。hPartition为被创建的分区的句柄,pbBuffer为要写入数据的Buffer,dwLength为要写入数据的长度。
6. BOOL BP_ReadData(HANDLE hPartition, LPBYTE pbBuffer, DWORD dwLength)
该函数负责从一个分区中读出数据,EBOOT可以通过这个函数将WinCE image读到RAM中。hPartition为被创建的分区的句柄,pbBuffer为要读出数据的Buffer,dwLength为要读出数据的长度。
7. BOOL BP_SetDataPointer (HANDLE hPartition, DWORD dwAddress)
该函数用于设置某一个分区的数据指针,实际上数据指针是指在该分区中下一次被读或写的位置。一般会配合BP_ReadData(..)和BP_WriteData(..)两个函数来用。hPartition为被创建分区的句柄,dwAddress为数据指针的新位置。
一般比较常用的就是这些函数。最后简单总结一下,微软提供的这个模块主要是用于在Flash设备上进行分区,或者说就是帮助我们来对Flash进行Layout。在EBOOT中要使用它,首先要实现Flash的驱动才可以。其实看看代码就会发现,这些函数无论是创建MBR,还是创建分区,本质上就是在Flash里面写了一些标记性信息,封装了一些函数给用户使用。我很少使用BootPart模块,更习惯整个Flash都由自己来管理,感觉更清楚些。
- WinCE EBOOT中的BootPart分析
- WinCE EBOOT中的BootPart分析
- WinCE EBOOT中的BootPart分析
- WinCE EBOOT中的BootPart分析
- WinCE EBOOT中的BootPart分析
- 浅谈WinCE EBOOT中的BootPart分析
- WinCE EBOOT中的BootPart分析 基于WinCE6.0
- WinCE EBOOT中的BootPart分析 基于WinCE6.0
- WinCE EBOOT中的BootPart分析 基于WinCE6.0
- WinCE EBOOT中的Optional函数和BootPart分析
- WinCE操作系统 EBOOT中的BootPart…
- wince eboot分析
- WinCE Eboot中的BLCOMMON
- WinCE Eboot中的BLCOMMON
- WinCE Eboot中的BLCOMMON
- WinCE Eboot中的BLCOMMON
- WinCE Eboot中的网络函数
- WinCE EBOOT中的Optional函数
- pl/sql用for in和for select into循环遍历表
- 【python】路径搜索和搜索路径
- 【python】import导入顺序(风格)
- 【python】载入时执行模块
- 【python】from...import ...
- WinCE EBOOT中的BootPart分析
- 三国群英传3
- fedora 如何切换成中文的界面
- 利用软件工具高效实施推行CMMI、GJB5000A体系
- FCKeditor编辑器在JAVA中的使用与配置方法
- JSP中“预定义变量”的使用
- 利用搜索命令寻找外链论坛方法
- 如何做好seo的数据分析
- 网赚项目:致富在线盘点六种网络兼职赚钱方法