bootload启动流程(补充一)--Eboot磁盘分区及读写函数分析

本文深入分析了ReadKernelRegionFromBootMedia()中的关键函数BP_OpenPartition(),该函数负责查找或创建硬盘上的BINFS分区。首先检查MBR的有效性,如果MBR无效则进行格式化。接着,函数根据给定参数决定打开现有分区还是创建新的。通过GetPartitionTableIndex()获取所需分区的索引,并检查是否已存在。最后,函数可能返回分区的句柄或在条件不满足时返回错误值。此外,还介绍了辅助函数IsValidMBR()用于验证MBR是否有效。
摘要由CSDN通过智能技术生成

ReadKernelRegionFromBootMedia( )的详细分析

对于这个函数其实主要关于两个重要的函数分析,下面将对这两个函数进行详细的说明:

一、BP_OpenPartition的分析

hPart = BP_OpenPartition( NEXT_FREE_LOC,

                              USE_REMAINING_SPACE,

                              PART_BINFS,

                              TRUE,

                              PART_OPEN_EXISTING);

这个函数是找到存储在硬盘中的代码活着创建一块BINFS区域,在public/oak/drives/ethedg/bootpart/bootpart.cpp先看一下这个函数的原型:

HANDLE BP_OpenPartition(DWORD dwStartSector, DWORD dwNumSectors, DWORD dwPartType, BOOL fActive, DWORD dwCreationFlags)

{

        DWORD dwPartIndex;

        BOOL fExists;

        ASSERT (g_pbMBRSector);

        if (!IsValidMBR()) {

//检验MBR是不是有效,如果无效将开始创建分区

            DWORD dwFlags = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值