12#define UI_HII_DRIVER_LIST_SIZE 0x8
15 EFI_STRING_ID PromptId;
17 EFI_STRING_ID DevicePathId;
19 BOOLEAN EmptyLineAfter;
34 IN VOID *StartOpCodeHandle
40 VOID *OptionsOpCodeHandle;
47 BootNextIndex = NONE_BOOTNEXT_VALUE;
50 ASSERT (OptionsOpCodeHandle !=
NULL);
56 if (NewLoadContext->IsBootNext) {
59 NewMenuEntry->DisplayStringToken,
60 EFI_IFR_OPTION_DEFAULT,
61 EFI_IFR_TYPE_NUM_SIZE_32,
64 BootNextIndex = Index;
68 NewMenuEntry->DisplayStringToken,
70 EFI_IFR_TYPE_NUM_SIZE_32,
76 if (BootNextIndex == NONE_BOOTNEXT_VALUE) {
80 EFI_IFR_OPTION_DEFAULT,
81 EFI_IFR_TYPE_NUM_SIZE_32,
89 EFI_IFR_TYPE_NUM_SIZE_32,
96 (EFI_QUESTION_ID)BOOT_NEXT_QUESTION_ID,
97 VARSTORE_ID_BOOT_MAINT,
102 EFI_IFR_NUMERIC_SIZE_4,
120 IN VOID *StartOpCodeHandle
125 (EFI_QUESTION_ID)FORM_TIME_OUT_ID,
126 VARSTORE_ID_BOOT_MAINT,
127 BOOT_TIME_OUT_VAR_OFFSET,
130 EFI_IFR_FLAG_CALLBACK,
131 EFI_IFR_NUMERIC_SIZE_2 | EFI_IFR_DISPLAY_UINT_DEC,
149 IN VOID *StartOpCodeHandle
157 EFI_IFR_FLAG_CALLBACK,
172 IN VOID *StartOpCodeHandle
177 FORM_DRIVER_SETUP_ID,
180 EFI_IFR_FLAG_CALLBACK,
195 IN VOID *StartOpCodeHandle
203 EFI_IFR_FLAG_CALLBACK,
218 IN VOID *StartOpCodeHandle
226 EFI_IFR_FLAG_CALLBACK,
227 KEY_VALUE_BOOT_FROM_FILE
241 IN VOID *StartOpCodeHandle
264 ASSERT (Handle !=
NULL);
266 if (Handle ==
NULL) {
271 if (EFI_ERROR (Status)) {
294 OUT EFI_STRING_ID *PromptId,
295 OUT EFI_STRING_ID *HelpId,
296 OUT VOID *FormsetGuid
309 if (EFI_ERROR (Status)) {
315 Ptr = (UINT8 *)Buffer;
316 while (TempSize < BufferSize) {
326 while (ClassGuidNum-- > 0) {
361 IN VOID *StartOpCodeHandle
367 EFI_STRING_ID TokenHelp;
369 CHAR16 *DevicePathStr;
374 BOOLEAN EmptyLineAfter;
376 if (gHiiDriverList !=
NULL) {
381 ASSERT (HiiHandles !=
NULL);
384 ASSERT (gHiiDriverList !=
NULL);
385 DriverListPtr = gHiiDriverList;
386 CurrentSize = UI_HII_DRIVER_LIST_SIZE;
388 for (Index = 0, Count = 0; HiiHandles[Index] !=
NULL; Index++) {
389 if (!
IsRequiredDriver (HiiHandles[Index], ClassGuid, &Token, &TokenHelp, &gHiiDriverList[Count].FormSetGuid)) {
394 if (String ==
NULL) {
396 ASSERT (String !=
NULL);
397 }
else if (SpecialHandlerFn !=
NULL) {
401 EmptyLineAfter =
FALSE;
402 if (SpecialHandlerFn (String, &NewName, &EmptyLineAfter)) {
405 DriverListPtr[Count].EmptyLineAfter = EmptyLineAfter;
413 if (String ==
NULL) {
415 ASSERT (String !=
NULL);
422 if (DevicePathStr !=
NULL) {
423 DriverListPtr[Count].DevicePathId =
HiiSetString (HiiHandle, 0, DevicePathStr,
NULL);
426 DriverListPtr[Count].DevicePathId = 0;
430 if (Count >= CurrentSize) {
433 (Count + UI_HII_DRIVER_LIST_SIZE)
437 ASSERT (DriverListPtr !=
NULL);
438 gHiiDriverList = DriverListPtr;
439 CurrentSize += UI_HII_DRIVER_LIST_SIZE;
446 while (gHiiDriverList[Index].PromptId != 0) {
450 gHiiDriverList[Index].PromptId,
451 gHiiDriverList[Index].HelpId,
455 &gHiiDriverList[Index].FormSetGuid,
456 gHiiDriverList[Index].DevicePathId
459 if (gHiiDriverList[Index].EmptyLineAfter) {
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
BM_MENU_ENTRY * BOpt_GetMenuEntry(BM_MENU_OPTION *MenuOption, UINTN MenuNumber)
BM_MENU_OPTION BootOptionMenu
VOID BmmCreateBootOptionMenu(IN EFI_HII_HANDLE HiiHandle, IN VOID *StartOpCodeHandle)
VOID BmmCreateBootNextMenu(IN EFI_HII_HANDLE HiiHandle, IN VOID *StartOpCodeHandle)
VOID BmmCreateBootFromFileMenu(IN EFI_HII_HANDLE HiiHandle, IN VOID *StartOpCodeHandle)
VOID BmmCreateTimeOutMenu(IN EFI_HII_HANDLE HiiHandle, IN VOID *StartOpCodeHandle)
CHAR16 * ExtractDevicePathFromHandle(IN EFI_HII_HANDLE Handle)
VOID BmmCreateEmptyLine(IN EFI_HII_HANDLE HiiHandle, IN VOID *StartOpCodeHandle)
VOID BmmCreateComOptionMenu(IN EFI_HII_HANDLE HiiHandle, IN VOID *StartOpCodeHandle)
VOID BmmCreateDriverOptionMenu(IN EFI_HII_HANDLE HiiHandle, IN VOID *StartOpCodeHandle)
EFI_STATUS BmmListThirdPartyDrivers(IN EFI_HII_HANDLE HiiHandle, IN EFI_GUID *ClassGuid, IN DRIVER_SPECIAL_HANDLER SpecialHandlerFn, IN VOID *StartOpCodeHandle)
BOOLEAN IsRequiredDriver(IN EFI_HII_HANDLE HiiHandle, IN EFI_GUID *Guid, OUT EFI_STRING_ID *PromptId, OUT EFI_STRING_ID *HelpId, OUT VOID *FormsetGuid)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI DevicePathFromHandle(IN EFI_HANDLE Handle)
CHAR16 *EFIAPI ConvertDevicePathToText(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts)
VOID *EFIAPI ReallocatePool(IN UINTN OldSize, IN UINTN NewSize, IN VOID *OldBuffer OPTIONAL)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
BOOLEAN(EFIAPI * DRIVER_SPECIAL_HANDLER)(IN CHAR16 *DriverName, OUT CHAR16 **NewName, OUT BOOLEAN *EmptyLineAfter)
UINT8 *EFIAPI HiiCreateSubTitleOpCode(IN VOID *OpCodeHandle, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 Flags, IN UINT8 Scope)
UINT8 *EFIAPI HiiCreateNumericOpCode(IN VOID *OpCodeHandle, IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 NumericFlags, IN UINT64 Minimum, IN UINT64 Maximum, IN UINT64 Step, IN VOID *DefaultsOpCodeHandle OPTIONAL)
UINT8 *EFIAPI HiiCreateGotoOpCode(IN VOID *OpCodeHandle, IN EFI_FORM_ID FormId, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN EFI_QUESTION_ID QuestionId)
VOID *EFIAPI HiiAllocateOpCodeHandle(VOID)
VOID EFIAPI HiiFreeOpCodeHandle(VOID *OpCodeHandle)
EFI_HII_HANDLE *EFIAPI HiiGetHiiHandles(IN CONST EFI_GUID *PackageListGuid OPTIONAL)
EFI_STRING EFIAPI HiiGetString(IN EFI_HII_HANDLE HiiHandle, IN EFI_STRING_ID StringId, IN CONST CHAR8 *Language OPTIONAL)
UINT8 *EFIAPI HiiCreateOneOfOptionOpCode(IN VOID *OpCodeHandle, IN UINT16 StringId, IN UINT8 Flags, IN UINT8 Type, IN UINT64 Value)
UINT8 *EFIAPI HiiCreateOneOfOpCode(IN VOID *OpCodeHandle, IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 OneOfFlags, IN VOID *OptionsOpCodeHandle, IN VOID *DefaultsOpCodeHandle OPTIONAL)
EFI_STRING_ID EFIAPI HiiSetString(IN EFI_HII_HANDLE HiiHandle, IN EFI_STRING_ID StringId OPTIONAL, IN CONST EFI_STRING String, IN CONST CHAR8 *SupportedLanguages OPTIONAL)
UINT8 *EFIAPI HiiCreateGotoExOpCode(IN VOID *OpCodeHandle, IN EFI_FORM_ID RefFormId, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN EFI_QUESTION_ID QuestionId, IN EFI_QUESTION_ID RefQuestionId, IN EFI_GUID *RefFormSetId OPTIONAL, IN EFI_STRING_ID RefDevicePath)
EFI_STATUS EFIAPI HiiGetFormSetFromHiiHandle(IN EFI_HII_HANDLE Handle, OUT EFI_IFR_FORM_SET **Buffer, OUT UINTN *BufferSize)
#define OFFSET_OF(TYPE, Field)
EFI_HII_DATABASE_PROTOCOL * gHiiDatabase