您的位置:首页 > 产品设计 > UI/UE

uefi bds boot flow

2017-01-14 15:06 1066 查看
BdsEntry.c 是BDS的入口函数所在的文件,其入口函数为BdsEntry。

在BdsEntry 中会调用

  // Check if we have the boot next option

  //

  mBootNext = BdsLibGetVariableAndSize (

                L"BootNext",

                &gEfiGlobalVariableGuid,

                &BootNextSize

                );

得到当前boot menu中的选项,即决定从哪一项开始启动os,而这一项是由BootNext 来决定的.

之后调用

  BdsBootDeviceSelect ()——>BdsLibBootViaBootOption

在BdsLibBootViaBootOption中会调用如下code来装载os Image.    

// Report status code for OS Loader LoadImage.

    //

    REPORT_STATUS_CODE (EFI_PROGRESS_CODE, PcdGet32 (PcdProgressCodeOsLoaderLoad));

    Status = gBS->LoadImage (

                    TRUE,

                    gImageHandle,

                    DevicePath,

                    NULL,

                    0,

                    &ImageHandle

                    );

然后调用gBS->StartImage 来开始进入下下一阶段.

  Status = gBS->StartImage (ImageHandle, ExitDataSize, ExitData);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: