WinCE EBOOT中的Optional函数
来源:互联网 发布:淘宝自然搜索怎么弄 编辑:程序博客网 时间:2024/05/29 10:07
WinCE EBOOT中的Optional函数在WinCE的EBOOT中,有一些函数属于Optional的OEM函数,也就是可选择实现的。这些函数会在BLCOMMON模块中被调用,我们需要在EBOOT中实现它们,然后把实现的函数赋值给BLCOMMON中的相应的函数指针上面就可以了,这样BLCOMMON模块在调用这些Optional函数的时候,会首先检查他们是否为NULL,如果为NULL就不执行,如果不是NULL就运行这些函数。 可以先看一下BLCOMMON模块的代码,在blcommon.c中有如下的定义:PFN_OEMVERIFYMEMORY g_pOEMVerifyMemory;PFN_OEMREPORTERROR g_pOEMReportError;PFN_OEMCHECKSIGNATURE g_pOEMCheckSignature;PFN_OEMMULTIBINNOTIFY g_pOEMMultiBINNotify; 这4个Optional函数指针在EBOOT中一般会对应下面的函数:BOOL OEMVerifyMemory(DWORD dwStartAddr, DWORD dwLength)BOOL OEMReportError(DWORD dwReason, DWORD dwReserved)BOOL OEMCheckSignature(DWORD dwImageStart, DWORD dwROMOffset, DWORD dwLaunchAddr, BOOL bDownloaded)void OEMMultiBINNotify(const PMultiBINInfo pInfo) 下面介绍一些这些OEM函数: 1. BOOL OEMVerifyMemory(DWORD dwStartAddr, DWORD dwLength) 该函数主要用于对要被下载WinCE image的存储设备进行验证,它在BLCOMMON模块中的DownloadImage函数中被调用,用于下载前验证存储设备。dwStartAddr为被下载的image在存储器中的起始地址,dwLength为image的长度,成功返回TRUE。 2. BOOL OEMReportError(DWORD dwReason, DWORD dwReserved) 该函数用于报告错误,用户可以通过串口打印的方式来实现。在BLCOMMON模块中,它会被HALT函数调用,而HALT函数会在BLCOMMON模块中的BootloaderMain函数出错时被调用来报告错误。dwReason为错误原因,dwReserved为预留,目前没有被使用。 3. BOOL OEMCheckSignature(DWORD dwImageStart, DWORD dwROMOffset, DWORD dwLaunchAddr, BOOL bDownloaded) 该函数用于验证WinCE image中的署名并检查其有效性。它会被BLCOMMON模块中的DownloadImage中被调用,主要验证下载后的WinCE image。dwImageStart为被下载image的存储起始地址,dwROMOffset为config.bib文件中定义的ROMOFFSET的值,dwLaunchAddr为被加载的地址,bDownloaded为TURE表示是被下载的image文件。其实在BLCOMMON模块中已经提供了一个通用的署名检查函数CheckSignature(..)在signimage.c文件中,可以在该函数中调用这个函数来验证image的署名。 4. void OEMMultiBINNotify(const PMultiBINInfo pInfo) 该函数用于告诉用户在下载多个bin文件的时候,每个文件的区域信息。它会被BLCOMMON模块的DownloadImage函数调用。Platform Builder本身是支持一次下载多个Bin文件的,所以EBOOT下载的时候,可以通过该函数要下载的Bin文件数以及每个Bin文件的起始地址和长度,这些信息在pInfo中体现。 上面的这些OEM函数是用户根据自己的需要来实现的,如果想让他们被BLCOMMON模块调用,还需要将他们赋值给相应的函数指针,如下:g_pOEMVerifyMemory = OEMVerifyMemory(..)g_pOEMReportError = OEMReportError(..)g_pOEMCheckSignature = OEMCheckSignature(..)g_pOEMMultiBINNotify = OEMMultiBINNotify(..) 上面的赋值操作最好在OEMDebugInit函数中完成。 最后还要提一个EBOOT中的函数,该函数应该不算是Optional的OEM函数,但是也是可以根据EBOOT的需要来选择实现的: DWORD OEMEthGetSecs (void): 该函数实际上是一个Timer函数,用于返回当前的秒数。它在EBOOT中主要用于Polling模式下的超时判断,一般会在OEMPlatformInit函数中被调用。在OEMPlatformInit中,常会等待用户从串口输入信息来决定是否直接加载运行WinCE还是进入Bootloader菜单进行设置。这个等待用户输入会有一定的时间限制,就是通过在while循环中调用该函数直到超时时间到以后自动跳出。本篇文章来自IDC专家网 原文链接:http://www.soidc.net/articles/1215485053493/20081129/1215945612079_1.html
- WinCE EBOOT中的Optional函数
- WinCE EBOOT中的Optional函数
- WinCE EBOOT中的Optional函数
- WinCE EBOOT中的Optional函数
- WinCE EBOOT中的Optional函数和BootPart分析
- WinCE Eboot中的网络函数
- WinCE Eboot中的网络函数
- WinCE Eboot中的网络函数
- WinCE Eboot中的OEM控制函数
- WinCE Eboot中的OEM Flash函数
- WinCE Eboot中的OEM控制函数
- WinCE Eboot中的OEM Flash函数
- WinCE Eboot中的OEM Flash函数
- WinCE Eboot中的OEM控制函数
- WinCE Eboot中的OEM控制函数
- WinCE Eboot中的OEM控制函数
- WinCE Eboot中的OEM Flash函数
- WinCE Eboot中的OEM控制函数
- using namespace std
- spring整合hibernate关于session的管理
- 使用DirectoryWalker和FileFilterUtils进行搜索
- oracle 查询隐含参数语句
- 开明关系系列
- WinCE EBOOT中的Optional函数
- poj2612
- 在WinCE 6.0系统下实现USB功能定制
- pku2186 popular cows
- Hadoop报错“could only be replicated to 0 nodes, instead of 1”
- 安博之行
- 文件上传插件Uploadify在Struts2中的应用,完整详细实例!
- 优秀博客收集
- 转:编译Python源代码