Reads BootXXXX (XXXX = BootNum) var, parses it and returns in BootOption. * Caller is responsible for releasing BootOption->Variable with FreePool(). */
| 684 | * Caller is responsible for releasing BootOption->Variable with FreePool(). |
| 685 | */ |
| 686 | EFI_STATUS |
| 687 | GetBootOption ( |
| 688 | IN UINT16 BootNum, |
| 689 | OUT BO_BOOT_OPTION *BootOption |
| 690 | ) |
| 691 | { |
| 692 | CHAR16 VarName[16]; |
| 693 | |
| 694 | // |
| 695 | // Get BootXXXX var. |
| 696 | // |
| 697 | BootOption->BootNum = BootNum; |
| 698 | snwprintf(VarName, sizeof(VarName), "Boot%04hX", BootNum); |
| 699 | |
| 700 | BootOption->Variable = (__typeof__(BootOption->Variable))GetNvramVariable(VarName, &gEfiGlobalVariableGuid, NULL, (UINTN *)(UINTN)(OFFSET_OF(BO_BOOT_OPTION, VariableSize) + (UINTN)BootOption)); |
| 701 | if (BootOption->Variable == NULL) { |
| 702 | return EFI_NOT_FOUND; |
| 703 | } |
| 704 | |
| 705 | // |
| 706 | // Parse it. |
| 707 | // |
| 708 | return ParseBootOption (BootOption); |
| 709 | } |
| 710 | |
| 711 | |
| 712 | /** Returns BootNum: XXXX of first unoccupied BootXXXX var slot. */ |
no test coverage detected