- TempPtr = NewOptionPtr;\r
-\r
- //\r
- // Attribute\r
- //\r
- CopyMem (\r
- TempPtr,\r
- BootOptionVar,\r
- sizeof (UINT32)\r
- );\r
-\r
- TempPtr += sizeof (UINT32);\r
-\r
- //\r
- // BBS device path Length\r
- //\r
- *((UINT16 *) TempPtr) = (UINT16) (sizeof (BBS_BBS_DEVICE_PATH) +\r
- AsciiStrLen (DescAsciiString) +\r
- END_DEVICE_PATH_LENGTH);\r
-\r
- TempPtr += sizeof (UINT16);\r
-\r
- //\r
- // Description string\r
- //\r
- CopyMem (\r
- TempPtr,\r
- DescString,\r
- StrSize (DescString)\r
- );\r
-\r
- TempPtr += StrSize (DescString);\r
-\r
- //\r
- // BBS device path\r
- //\r
- CopyMem (\r
- TempPtr,\r
- Ptr,\r
- sizeof (BBS_BBS_DEVICE_PATH)\r
- );\r
-\r
- CopyMem (\r
- ((BBS_BBS_DEVICE_PATH*) TempPtr)->String,\r
- DescAsciiString,\r
- AsciiStrSize (DescAsciiString)\r
- );\r
-\r
- SetDevicePathNodeLength (\r
- (EFI_DEVICE_PATH_PROTOCOL *) TempPtr,\r
- sizeof (BBS_BBS_DEVICE_PATH) + AsciiStrLen (DescAsciiString)\r
- );\r
-\r
- TempPtr += sizeof (BBS_BBS_DEVICE_PATH) + AsciiStrLen (DescAsciiString);\r
-\r
- //\r
- // End node\r
- //\r
- CopyMem (\r
- TempPtr,\r
- EndDevicePath,\r
- END_DEVICE_PATH_LENGTH\r
- );\r
- TempPtr += END_DEVICE_PATH_LENGTH;\r
-\r
- //\r
- // Now TempPtr point to optional data, i.e. Bbs Table\r
- //\r
- CopyMem (\r
- TempPtr,\r
- LegacyDeviceContext->BbsTable,\r
- sizeof (BBS_TABLE)\r
- );\r
-\r
- //\r
- // Now TempPtr point to BBS index\r
- //\r
- TempPtr += sizeof (BBS_TABLE);\r
- *((UINT16 *) TempPtr) = (UINT16) LegacyDeviceContext->Index;\r
+ for (Index = 0; Index < EnBootOptionCount; Index++) {\r
+ UnicodeSPrint (VarName, sizeof (VarName), L"Boot%04x", EnBootOption[Index]);\r
+ BootOptionVar = BdsLibGetVariableAndSize (\r
+ VarName,\r
+ &gEfiGlobalVariableGuid,\r
+ &OptionSize\r
+ );\r
+ if (BootOptionVar != NULL) {\r
+ Attribute = (UINT32 *) BootOptionVar;\r
+ *Attribute |= LOAD_OPTION_ACTIVE;\r