- if (EfiLoadOptionSize < sizeof(UINT32) + sizeof(UINT16) + sizeof(CHAR16) + sizeof(EFI_DEVICE_PATH_PROTOCOL)) {\r
- return EFI_BAD_BUFFER_SIZE;\r
- }\r
-\r
- LoadOption = (BDS_LOAD_OPTION*)AllocatePool(sizeof(BDS_LOAD_OPTION));\r
- if (LoadOption == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- LoadOption->LoadOption = EfiLoadOption;\r
- LoadOption->LoadOptionSize = EfiLoadOptionSize;\r
-\r
- LoadOption->Attributes = *(UINT32*)EfiLoadOption;\r
- FilePathListLength = *(UINT16*)(EfiLoadOption + sizeof(UINT32));\r
- LoadOption->Description = (CHAR16*)(EfiLoadOption + sizeof(UINT32) + sizeof(UINT16));\r
- DescriptionLength = StrSize (LoadOption->Description);\r
- LoadOption->FilePathList = (EFI_DEVICE_PATH_PROTOCOL*)(EfiLoadOption + sizeof(UINT32) + sizeof(UINT16) + DescriptionLength);\r
-\r
- if ((UINTN)((UINT8*)LoadOption->FilePathList + FilePathListLength - EfiLoadOption) == EfiLoadOptionSize) {\r
- LoadOption->OptionalData = NULL;\r