Returns BootNum: XXXX of first unoccupied BootXXXX var slot. */
| 711 | |
| 712 | /** Returns BootNum: XXXX of first unoccupied BootXXXX var slot. */ |
| 713 | EFI_STATUS |
| 714 | FindFreeBootNum ( |
| 715 | OUT UINT16 *BootNum |
| 716 | ) |
| 717 | { |
| 718 | EFI_STATUS Status; |
| 719 | UINTN Index; |
| 720 | CHAR16 VarName[16]; |
| 721 | UINTN VarSize; |
| 722 | |
| 723 | |
| 724 | for (Index = 0; Index <= 0xFFFF; Index++) { |
| 725 | snwprintf(VarName, sizeof(VarName), "Boot%04llX", Index); |
| 726 | VarSize = 0; |
| 727 | Status = gRT->GetVariable (VarName, &gEfiGlobalVariableGuid, NULL, &VarSize, NULL); |
| 728 | if (Status == EFI_NOT_FOUND) { |
| 729 | *BootNum = (UINT16)Index; |
| 730 | return EFI_SUCCESS; |
| 731 | } |
| 732 | } |
| 733 | |
| 734 | return EFI_NOT_FOUND; |
| 735 | } |
| 736 | |
| 737 | |
| 738 | /** Searches BootXXXX vars for entry that points to given FileDeviceHandle/FileName |