24#define EFI_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('C', 'l', 'b', 'k')
25#define EFI_CALLBACK_INFO_FROM_THIS(a) CR (a, EFI_CALLBACK_INFO, ConfigAccess, EFI_CALLBACK_INFO_SIGNATURE)
53extern UINT8 PlatDriOverrideDxeStrings[];
58CHAR16 mVariableName[] = L
"Data";
60BOOLEAN mEnvironmentVariableRead =
FALSE;
66INTN mSelectedCtrIndex;
67EFI_STRING_ID *mControllerToken;
68UINTN mDriverImageHandleCount;
69EFI_STRING_ID *mDriverImageToken;
71UINTN mSelectedDriverImageNum;
72UINTN mLastSavedDriverImageNum;
75BOOLEAN *mDriSelection;
92 END_ENTIRE_DEVICE_PATH_SUBTYPE,
94 (UINT8)(END_DEVICE_PATH_LENGTH),
95 (UINT8)((END_DEVICE_PATH_LENGTH) >> 8)
122 ASSERT (Text !=
NULL);
153 Status =
gBS->OpenProtocol (
156 (
VOID *)&ComponentName,
159 EFI_OPEN_PROTOCOL_GET_PROTOCOL
161 if (EFI_ERROR (Status)) {
171 (BOOLEAN)(ProtocolGuid == &gEfiComponentNameProtocolGuid),
177 if (BestLanguage !=
NULL) {
178 ComponentName->GetDriverName (
186 if (Language !=
NULL) {
213 DriverName =
GetComponentNameWorker (DriverBindingHandle, &gEfiComponentName2ProtocolGuid, L
"PlatformLang");
214 if (DriverName ==
NULL) {
245 UINT32 AuthenticationStatus;
253 if (Image->FilePath ==
NULL) {
257 DevPathNode = Image->FilePath;
269 if (NameGuid !=
NULL) {
271 Status =
gBS->HandleProtocol (
273 &gEfiFirmwareVolume2ProtocolGuid,
279 if (!EFI_ERROR (Status)) {
280 Status = Fv2->ReadSection (
282 &FvFilePath->FvFileName,
283 EFI_SECTION_USER_INTERFACE,
287 &AuthenticationStatus
289 if (!EFI_ERROR (Status)) {
331 UINTN DevicePathHandleCount;
334 EFI_STRING_ID NewStringToken;
335 CHAR16 *ControllerName;
340 VOID *StartOpCodeHandle;
341 VOID *EndOpCodeHandle;
348 mCurrentPage = FORM_ID_DEVICE;
360 ASSERT (StartOpCodeHandle !=
NULL);
363 ASSERT (EndOpCodeHandle !=
NULL);
370 StartLabel->
Number = FORM_ID_DEVICE;
377 EndLabel->
Number = LABEL_END;
383 Private->RegisteredHandle,
384 &gPlatformOverridesManagerGuid,
415 DevicePathHandleCount = 0;
416 Status =
gBS->LocateHandleBuffer (
418 &gEfiDevicePathProtocolGuid,
420 &DevicePathHandleCount,
421 &mDevicePathHandleBuffer
423 if (EFI_ERROR (Status) || (DevicePathHandleCount == 0)) {
429 mMaxDeviceCount = DevicePathHandleCount;
431 ASSERT (mControllerDevicePathProtocol !=
NULL);
432 mControllerToken =
AllocateZeroPool (DevicePathHandleCount *
sizeof (EFI_STRING_ID));
433 ASSERT (mControllerToken !=
NULL);
435 for (Index = 0; Index < DevicePathHandleCount; Index++) {
436 if (FakeNvData->PciDeviceFilter == 0x01) {
444 ControllerDevicePath =
NULL;
445 Status =
gBS->OpenProtocol (
446 mDevicePathHandleBuffer[Index],
447 &gEfiPciIoProtocolGuid,
451 EFI_OPEN_PROTOCOL_GET_PROTOCOL
453 if (EFI_ERROR (Status)) {
460 Status =
gBS->HandleProtocol (
461 mDevicePathHandleBuffer[Index],
462 &gEfiBusSpecificDriverOverrideProtocolGuid,
463 (
VOID **)&BusSpecificDriverOverride
465 if (EFI_ERROR (Status) || (BusSpecificDriverOverride ==
NULL)) {
470 ControllerDevicePath =
NULL;
471 Status =
gBS->OpenProtocol (
472 mDevicePathHandleBuffer[Index],
473 &gEfiDevicePathProtocolGuid,
474 (
VOID **)&ControllerDevicePath,
477 EFI_OPEN_PROTOCOL_GET_PROTOCOL
483 mControllerDevicePathProtocol[Index] = ControllerDevicePath;
493 Len =
StrSize (ControllerName);
494 NewStrSize = Len +
StrSize (L
"--");
506 ASSERT (NewStringToken != 0);
511 mControllerToken[Index] = NewStringToken;
518 EFI_IFR_FLAG_CALLBACK,
519 (UINT16)(Index + KEY_VALUE_DEVICE_OFFSET)
527 Private->RegisteredHandle,
528 &gPlatformOverridesManagerGuid,
556 UINTN DriverBindingHandleCount;
561 DriverBindingHandle =
NULL;
563 if (ImageHandle ==
NULL) {
570 DriverBindingHandleCount = 0;
571 Status =
gBS->LocateHandleBuffer (
573 &gEfiDriverBindingProtocolGuid,
575 &DriverBindingHandleCount,
576 &DriverBindingHandleBuffer
578 if (EFI_ERROR (Status) || (DriverBindingHandleCount == 0)) {
585 for (Index = 0; Index < DriverBindingHandleCount; Index++) {
586 DriverBindingInterface =
NULL;
587 Status =
gBS->OpenProtocol (
588 DriverBindingHandleBuffer[Index],
589 &gEfiDriverBindingProtocolGuid,
590 (
VOID **)&DriverBindingInterface,
593 EFI_OPEN_PROTOCOL_GET_PROTOCOL
595 if (EFI_ERROR (Status)) {
599 if (DriverBindingInterface->ImageHandle == ImageHandle) {
600 DriverBindingHandle = DriverBindingHandleBuffer[Index];
605 FreePool (DriverBindingHandleBuffer);
606 return DriverBindingHandle;
633 EFI_STRING_ID NewStringToken;
634 EFI_STRING_ID NewStringHelpToken;
635 UINTN DriverImageHandleCount;
638 BOOLEAN FreeDriverName;
642 VOID *StartOpCodeHandle;
643 VOID *EndOpCodeHandle;
647 EFI_STRING_ID *DriverImageFilePathToken;
659 mCurrentPage = FORM_ID_DRIVER;
663 mSelectedCtrIndex = KeyValue - KEY_VALUE_DEVICE_OFFSET;
664 ASSERT (mSelectedCtrIndex >= 0 && mSelectedCtrIndex < MAX_CHOICE_NUM);
666 mLastSavedDriverImageNum = 0;
672 ASSERT (StartOpCodeHandle !=
NULL);
675 ASSERT (EndOpCodeHandle !=
NULL);
682 StartLabel->
Number = FORM_ID_DRIVER;
689 EndLabel->
Number = LABEL_END;
695 Private->RegisteredHandle,
696 &gPlatformOverridesManagerGuid,
705 DriverImageHandleCount = 0;
706 Status =
gBS->LocateHandleBuffer (
708 &gEfiLoadedImageProtocolGuid,
710 &DriverImageHandleCount,
711 &mDriverImageHandleBuffer
713 if (EFI_ERROR (Status) || (DriverImageHandleCount == 0)) {
716 return EFI_NOT_FOUND;
719 mDriverImageToken =
AllocateZeroPool (DriverImageHandleCount *
sizeof (EFI_STRING_ID));
720 ASSERT (mDriverImageToken !=
NULL);
721 mDriSelection =
AllocateZeroPool (DriverImageHandleCount *
sizeof (BOOLEAN));
722 ASSERT (mDriSelection !=
NULL);
725 ASSERT (DriverImageProtocol !=
NULL);
726 DriverImageFilePathToken =
AllocateZeroPool (DriverImageHandleCount *
sizeof (EFI_STRING_ID));
727 ASSERT (DriverImageFilePathToken !=
NULL);
729 mDriverImageHandleCount = DriverImageHandleCount;
730 for (Index = 0; Index < DriverImageHandleCount; Index++) {
740 Status =
gBS->OpenProtocol (
741 mDriverImageHandleBuffer[Index],
742 &gEfiLoadedImageProtocolGuid,
743 (
VOID **)&LoadedImage,
746 EFI_OPEN_PROTOCOL_GET_PROTOCOL
748 if (EFI_ERROR (Status)) {
749 mDriSelection[Index] =
FALSE;
753 DriverImageProtocol[Index] = LoadedImage;
758 if (DriverBindingHandle ==
NULL) {
759 mDriSelection[Index] =
FALSE;
766 LoadedImageDevicePath =
NULL;
767 Status =
gBS->HandleProtocol (
768 mDriverImageHandleBuffer[Index],
769 &gEfiLoadedImageDevicePathProtocolGuid,
770 (
VOID **)&LoadedImageDevicePath
772 if (LoadedImageDevicePath ==
NULL) {
773 mDriSelection[Index] =
FALSE;
777 if (FakeNvData->PciDeviceFilter == 0x01) {
782 if (!EFI_ERROR (Status)) {
783 Status =
gBS->HandleProtocol (
784 LoadedImage->DeviceHandle,
785 &gEfiBusSpecificDriverOverrideProtocolGuid,
786 (
VOID **)&BusSpecificDriverOverride
788 if (EFI_ERROR (Status) || (BusSpecificDriverOverride ==
NULL)) {
789 mDriSelection[Index] =
FALSE;
793 mDriSelection[Index] =
FALSE;
802 FreeDriverName =
FALSE;
804 if (DriverName ==
NULL) {
811 if (DriverName ==
NULL) {
816 ASSERT (DriverName !=
NULL);
817 FreeDriverName =
TRUE;
827 NewStrSize =
StrSize (DriverName);
830 if (EFI_ERROR (
CheckMapping (mControllerDevicePathProtocol[mSelectedCtrIndex], LoadedImageDevicePath, &mMappingDataBase,
NULL,
NULL))) {
831 mDriSelection[Index] =
FALSE;
833 mDriSelection[Index] =
TRUE;
834 mLastSavedDriverImageNum++;
839 ASSERT (NewStringToken != 0);
840 mDriverImageToken[Index] = NewStringToken;
842 if (FreeDriverName) {
851 NewStrSize =
StrSize (DriverName);
856 ASSERT (NewStringHelpToken != 0);
857 DriverImageFilePathToken[Index] = NewStringHelpToken;
862 if (mDriSelection[Index]) {
863 CheckFlags |= EFI_IFR_CHECKBOX_DEFAULT;
868 (UINT16)(KEY_VALUE_DRIVER_OFFSET + Index),
873 EFI_IFR_FLAG_CALLBACK,
883 Private->RegisteredHandle,
884 &gPlatformOverridesManagerGuid,
893 if (DriverImageProtocol !=
NULL) {
897 if (DriverImageFilePathToken !=
NULL) {
898 FreePool (DriverImageFilePathToken);
924 UINTN SelectedDriverImageNum;
925 UINT32 DriverImageNO;
930 VOID *StartOpCodeHandle;
931 VOID *EndOpCodeHandle;
932 VOID *OptionsOpCodeHandle;
940 mCurrentPage = FORM_ID_ORDER;
946 ASSERT (StartOpCodeHandle !=
NULL);
949 ASSERT (EndOpCodeHandle !=
NULL);
956 StartLabel->
Number = FORM_ID_ORDER;
963 EndLabel->
Number = LABEL_END;
969 Private->RegisteredHandle,
970 &gPlatformOverridesManagerGuid,
979 SelectedDriverImageNum = 0;
980 for (Index = 0; Index < mDriverImageHandleCount; Index++) {
981 if (mDriSelection[Index]) {
982 SelectedDriverImageNum++;
986 mSelectedDriverImageNum = SelectedDriverImageNum;
987 if (SelectedDriverImageNum == 0) {
992 ASSERT (OptionsOpCodeHandle !=
NULL);
997 SelectedDriverImageNum = 0;
998 for (Index = 0; Index < mDriverImageHandleCount; Index++) {
999 if (mDriSelection[Index]) {
1004 OptionsOpCodeHandle,
1005 mDriverImageToken[Index],
1007 EFI_IFR_NUMERIC_SIZE_1,
1014 LoadedImageDevicePath =
NULL;
1015 gBS->HandleProtocol (
1016 mDriverImageHandleBuffer[Index],
1017 &gEfiLoadedImageDevicePathProtocolGuid,
1018 (
VOID **)&LoadedImageDevicePath
1020 ASSERT (LoadedImageDevicePath !=
NULL);
1027 mControllerDevicePathProtocol[mSelectedCtrIndex],
1028 LoadedImageDevicePath,
1033 if (DriverImageNO == 0) {
1034 DriverImageNO = (UINT32)mLastSavedDriverImageNum + 1;
1035 mLastSavedDriverImageNum++;
1038 TempNO[SelectedDriverImageNum] = DriverImageNO;
1039 OrderNO[SelectedDriverImageNum] = Index + 1;
1040 SelectedDriverImageNum++;
1044 ASSERT (SelectedDriverImageNum == mSelectedDriverImageNum);
1048 ZeroMem (FakeNvData->DriOrder, sizeof (FakeNvData->DriOrder));
1054 for (Index = 0; Index < SelectedDriverImageNum; Index++) {
1059 for (Index1 = 0; Index1 < SelectedDriverImageNum; Index1++) {
1060 if (TempNO[Index1] < TempNO[MinNO]) {
1068 FakeNvData->DriOrder[Index] = (UINT8)OrderNO[MinNO];
1069 TempNO[MinNO] = MAX_CHOICE_NUM + 1;
1077 (UINT16)DRIVER_ORDER_QUESTION_ID,
1078 VARSTORE_ID_PLAT_OVER_MNGR,
1079 (UINT16)DRIVER_ORDER_VAR_OFFSET,
1080 mControllerToken[mSelectedCtrIndex],
1081 mControllerToken[mSelectedCtrIndex],
1082 EFI_IFR_FLAG_RESET_REQUIRED,
1084 EFI_IFR_NUMERIC_SIZE_1,
1085 (UINT8)MAX_CHOICE_NUM,
1086 OptionsOpCodeHandle,
1094 Private->RegisteredHandle,
1095 &gPlatformOverridesManagerGuid,
1127 UINTN SelectedDriverImageNum;
1135 for (SelectedDriverImageNum = 0; SelectedDriverImageNum < mSelectedDriverImageNum; SelectedDriverImageNum++) {
1139 Index = FakeNvData->DriOrder[SelectedDriverImageNum] - 1;
1144 LoadedImageDevicePath =
NULL;
1145 Status =
gBS->HandleProtocol (
1146 mDriverImageHandleBuffer[Index],
1147 &gEfiLoadedImageDevicePathProtocolGuid,
1148 (
VOID **)&LoadedImageDevicePath
1150 ASSERT (LoadedImageDevicePath !=
NULL);
1153 mControllerDevicePathProtocol[mSelectedCtrIndex],
1154 LoadedImageDevicePath,
1156 (UINT32)SelectedDriverImageNum + 1
1191 OUT EFI_STRING *Progress,
1192 OUT EFI_STRING *Results
1198 EFI_STRING ConfigRequestHdr;
1199 EFI_STRING ConfigRequest;
1200 BOOLEAN AllocatedRequest;
1204 if ((Progress ==
NULL) || (Results ==
NULL)) {
1205 return EFI_INVALID_PARAMETER;
1208 *Progress = Request;
1210 return EFI_NOT_FOUND;
1213 ConfigRequestHdr =
NULL;
1214 ConfigRequest =
NULL;
1216 AllocatedRequest =
FALSE;
1218 Private = EFI_CALLBACK_INFO_FROM_THIS (This);
1219 HiiConfigRouting = Private->HiiConfigRouting;
1220 ConfigRequest = Request;
1221 if ((Request ==
NULL) || (
StrStr (Request, L
"OFFSET") ==
NULL)) {
1227 ConfigRequestHdr =
HiiConstructConfigHdr (&gPlatformOverridesManagerGuid, mVariableName, Private->DriverHandle);
1228 if (ConfigRequestHdr ==
NULL) {
1229 return EFI_OUT_OF_RESOURCES;
1232 Size = (
StrLen (ConfigRequestHdr) + 32 + 1) *
sizeof (CHAR16);
1234 if (ConfigRequest ==
NULL) {
1236 return EFI_OUT_OF_RESOURCES;
1239 AllocatedRequest =
TRUE;
1241 UnicodeSPrint (ConfigRequest, Size, L
"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize);
1248 Status = HiiConfigRouting->BlockToConfig (
1251 (UINT8 *)&Private->FakeNvData,
1260 if (AllocatedRequest) {
1262 ConfigRequest =
NULL;
1268 if (Request ==
NULL) {
1270 }
else if (
StrStr (Request, L
"OFFSET") ==
NULL) {
1271 *Progress = Request +
StrLen (Request);
1296 IN CONST EFI_STRING Configuration,
1297 OUT EFI_STRING *Progress
1305 if ((Configuration ==
NULL) || (Progress ==
NULL)) {
1306 return EFI_INVALID_PARAMETER;
1309 *Progress = Configuration;
1311 if (!
HiiIsConfigHdrMatch (Configuration, &gPlatformOverridesManagerGuid, mVariableName)) {
1312 return EFI_NOT_FOUND;
1315 *Progress = Configuration +
StrLen (Configuration);
1316 Private = EFI_CALLBACK_INFO_FROM_THIS (This);
1317 FakeNvData = &Private->FakeNvData;
1327 if (mCurrentPage == FORM_ID_ORDER) {
1328 KeyValue = KEY_VALUE_ORDER_SAVE_AND_EXIT;
1364 IN EFI_BROWSER_ACTION Action,
1365 IN EFI_QUESTION_ID KeyValue,
1368 OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
1373 EFI_STRING_ID NewStringToken;
1377 if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) {
1381 return EFI_UNSUPPORTED;
1384 if (Value ==
NULL) {
1385 return EFI_INVALID_PARAMETER;
1388 Private = EFI_CALLBACK_INFO_FROM_THIS (This);
1389 FakeNvData = &Private->FakeNvData;
1391 return EFI_NOT_FOUND;
1394 if (Action == EFI_BROWSER_ACTION_CHANGING) {
1395 if (KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS) {
1401 if (
HiiSetString (Private->RegisteredHandle, NewStringToken, L
"First, Select the controller by device path",
NULL) == 0) {
1406 if (((KeyValue >= KEY_VALUE_DEVICE_OFFSET) && (KeyValue < KEY_VALUE_DEVICE_OFFSET + mMaxDeviceCount)) || (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS)) {
1407 if (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS) {
1408 KeyValue = (EFI_QUESTION_ID)(mSelectedCtrIndex + KEY_VALUE_DEVICE_OFFSET);
1416 if (
HiiSetString (Private->RegisteredHandle, NewStringToken, L
"Second, Select drivers for the previous selected controller",
NULL) == 0) {
1421 if (KeyValue == KEY_VALUE_DRIVER_GOTO_ORDER) {
1427 if (
HiiSetString (Private->RegisteredHandle, NewStringToken, L
"Finally, Set the priority order for the drivers and save them",
NULL) == 0) {
1432 if (KeyValue == KEY_VALUE_DEVICE_CLEAR) {
1440 }
else if (Action == EFI_BROWSER_ACTION_CHANGED) {
1441 if ((KeyValue >= KEY_VALUE_DRIVER_OFFSET) && (KeyValue < KEY_VALUE_DRIVER_OFFSET + mDriverImageHandleCount)) {
1442 mDriSelection[KeyValue - KEY_VALUE_DRIVER_OFFSET] = Value->b;
1445 case KEY_VALUE_DEVICE_REFRESH:
1446 case KEY_VALUE_DEVICE_FILTER:
1452 if (
HiiSetString (Private->RegisteredHandle, NewStringToken, L
"First, Select the controller by device path",
NULL) == 0) {
1458 case KEY_VALUE_ORDER_SAVE_AND_EXIT:
1460 *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;
1461 if (EFI_ERROR (Status)) {
1462 CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L
"Single Override Info too large, Saving Error!",
NULL);
1463 return EFI_DEVICE_ERROR;
1517 if (ControllerHandle ==
NULL) {
1518 return EFI_INVALID_PARAMETER;
1527 if (!mEnvironmentVariableRead) {
1528 mEnvironmentVariableRead =
TRUE;
1531 if (EFI_ERROR (Status)) {
1532 DEBUG ((DEBUG_INFO,
"The status to Get Platform Driver Override Variable is %r\n", Status));
1534 return EFI_NOT_FOUND;
1542 return EFI_NOT_FOUND;
1576 return EFI_UNSUPPORTED;
1604 return EFI_UNSUPPORTED;
1632 Status =
gBS->LocateProtocol (
1633 &gEfiFormBrowser2ProtocolGuid,
1635 (
VOID **)&FormBrowser2
1637 if (EFI_ERROR (Status)) {
1646 Status =
gBS->LocateProtocol (
1647 &gEfiPlatformDriverOverrideProtocolGuid,
1654 if (!EFI_ERROR (Status)) {
1655 return EFI_ALREADY_STARTED;
1658 mCallerImageHandle = ImageHandle;
1660 if (mCallbackInfo ==
NULL) {
1661 return EFI_BAD_BUFFER_SIZE;
1664 mCallbackInfo->Signature = EFI_CALLBACK_INFO_SIGNATURE;
1668 mCallbackInfo->PlatformDriverOverride.GetDriver =
GetDriver;
1669 mCallbackInfo->PlatformDriverOverride.GetDriverPath =
GetDriverPath;
1670 mCallbackInfo->PlatformDriverOverride.DriverLoaded =
DriverLoaded;
1675 Status =
gBS->LocateProtocol (
1676 &gEfiHiiConfigRoutingProtocolGuid,
1678 (
VOID **)&mCallbackInfo->HiiConfigRouting
1680 if (EFI_ERROR (Status)) {
1688 Status =
gBS->InstallMultipleProtocolInterfaces (
1689 &mCallbackInfo->DriverHandle,
1690 &gEfiDevicePathProtocolGuid,
1691 &mHiiVendorDevicePath,
1692 &gEfiHiiConfigAccessProtocolGuid,
1693 &mCallbackInfo->ConfigAccess,
1694 &gEfiPlatformDriverOverrideProtocolGuid,
1695 &mCallbackInfo->PlatformDriverOverride,
1698 if (EFI_ERROR (Status)) {
1706 &gPlatformOverridesManagerGuid,
1707 mCallbackInfo->DriverHandle,
1709 PlatDriOverrideDxeStrings,
1712 if (mCallbackInfo->RegisteredHandle ==
NULL) {
1713 Status = EFI_OUT_OF_RESOURCES;
1720 mDriverImageHandleCount = 0;
1744 ASSERT (mCallbackInfo !=
NULL);
1746 if (mCallbackInfo->DriverHandle !=
NULL) {
1747 gBS->UninstallMultipleProtocolInterfaces (
1748 mCallbackInfo->DriverHandle,
1749 &gEfiDevicePathProtocolGuid,
1750 &mHiiVendorDevicePath,
1751 &gEfiHiiConfigAccessProtocolGuid,
1752 &mCallbackInfo->ConfigAccess,
1753 &gEfiPlatformDriverOverrideProtocolGuid,
1754 &mCallbackInfo->PlatformDriverOverride,
1759 if (mCallbackInfo->RegisteredHandle !=
NULL) {
1765 if (mControllerToken !=
NULL) {
1769 if (mControllerDevicePathProtocol !=
NULL) {
1770 FreePool (mControllerDevicePathProtocol);
1773 if (mDriverImageToken !=
NULL) {
UINTN EFIAPI StrSize(IN CONST CHAR16 *String)
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
RETURN_STATUS EFIAPI StrCatS(IN OUT CHAR16 *Destination, IN UINTN DestMax, IN CONST CHAR16 *Source)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
#define INITIALIZE_LIST_HEAD_VARIABLE(ListHead)
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
CHAR16 *EFIAPI StrStr(IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
#define HARDWARE_DEVICE_PATH
UINTN EFIAPI DevicePathNodeLength(IN CONST VOID *Node)
BOOLEAN EFIAPI IsDevicePathEnd(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI NextDevicePathNode(IN CONST VOID *Node)
CHAR16 *EFIAPI ConvertDevicePathToText(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocateCopyPool(IN UINTN AllocationSize, IN CONST VOID *Buffer)
EFI_STRING EFIAPI HiiConstructConfigHdr(IN CONST EFI_GUID *Guid OPTIONAL, IN CONST CHAR16 *Name OPTIONAL, IN EFI_HANDLE DriverHandle)
BOOLEAN EFIAPI HiiGetBrowserData(IN CONST EFI_GUID *VariableGuid OPTIONAL, IN CONST CHAR16 *VariableName OPTIONAL, IN UINTN BufferSize, OUT UINT8 *Buffer)
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 HiiAddPackages(IN CONST EFI_GUID *PackageListGuid, IN EFI_HANDLE DeviceHandle OPTIONAL,...)
UINT8 *EFIAPI HiiCreateGuidOpCode(IN VOID *OpCodeHandle, IN CONST EFI_GUID *Guid, IN CONST VOID *GuidOpCode OPTIONAL, IN UINTN OpCodeSize)
UINT8 *EFIAPI HiiCreateCheckBoxOpCode(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 CheckBoxFlags, IN VOID *DefaultsOpCodeHandle OPTIONAL)
BOOLEAN EFIAPI HiiSetBrowserData(IN CONST EFI_GUID *VariableGuid OPTIONAL, IN CONST CHAR16 *VariableName OPTIONAL, IN UINTN BufferSize, IN CONST UINT8 *Buffer, IN CONST CHAR16 *RequestElement 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)
EFI_STATUS EFIAPI HiiUpdateForm(IN EFI_HII_HANDLE HiiHandle, IN EFI_GUID *FormSetGuid OPTIONAL, IN EFI_FORM_ID FormId, IN VOID *StartOpCodeHandle, IN VOID *EndOpCodeHandle OPTIONAL)
BOOLEAN EFIAPI HiiIsConfigHdrMatch(IN CONST EFI_STRING ConfigHdr, IN CONST EFI_GUID *Guid OPTIONAL, IN CONST CHAR16 *Name 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 HiiCreateOrderedListOpCode(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 OrderedListFlags, IN UINT8 DataType, IN UINT8 MaxContainers, IN VOID *OptionsOpCodeHandle, IN VOID *DefaultsOpCodeHandle OPTIONAL)
VOID EFIAPI HiiRemovePackages(IN EFI_HII_HANDLE HiiHandle)
EFI_STATUS EFIAPI DeleteDriverImage(IN EFI_DEVICE_PATH_PROTOCOL *ControllerDevicePath, IN EFI_DEVICE_PATH_PROTOCOL *DriverImageDevicePath, IN LIST_ENTRY *MappingDataBase)
EFI_STATUS EFIAPI FreeMappingDatabase(IN OUT LIST_ENTRY *MappingDataBase)
EFI_STATUS EFIAPI SaveOverridesMapping(IN LIST_ENTRY *MappingDataBase)
EFI_STATUS EFIAPI CheckMapping(IN EFI_DEVICE_PATH_PROTOCOL *ControllerDevicePath, IN EFI_DEVICE_PATH_PROTOCOL *DriverImageDevicePath OPTIONAL, IN LIST_ENTRY *MappingDataBase, OUT UINT32 *DriverInfoNum OPTIONAL, OUT UINT32 *DriverImageNO OPTIONAL)
EFI_STATUS EFIAPI InsertDriverImage(IN EFI_DEVICE_PATH_PROTOCOL *ControllerDevicePath, IN EFI_DEVICE_PATH_PROTOCOL *DriverImageDevicePath, IN LIST_ENTRY *MappingDataBase, IN UINT32 DriverImageNO)
EFI_STATUS EFIAPI InitOverridesMapping(OUT LIST_ENTRY *MappingDataBase)
EFI_STATUS EFIAPI GetDriverFromMapping(IN EFI_HANDLE ControllerHandle, IN OUT EFI_HANDLE *DriverImageHandle, IN LIST_ENTRY *MappingDataBase, IN EFI_HANDLE CallerImageHandle)
#define EFI_IFR_EXTEND_OP_LABEL
UINTN EFIAPI UnicodeSPrint(OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString,...)
#define ASSERT_EFI_ERROR(StatusParameter)
#define DEBUG(Expression)
EFI_STATUS EFIAPI PlatDriOverrideDxeUnload(IN EFI_HANDLE ImageHandle)
EFI_STATUS UpdateDeviceSelectPage(IN EFI_CALLBACK_INFO *Private, IN UINT16 KeyValue, IN PLAT_OVER_MNGR_DATA *FakeNvData)
CHAR16 * GetComponentNameWorker(IN EFI_HANDLE DriverBindingHandle, IN EFI_GUID *ProtocolGuid, IN CONST CHAR16 *VariableName)
EFI_STATUS UpdateBindingDriverSelectPage(IN EFI_CALLBACK_INFO *Private, IN UINT16 KeyValue, IN PLAT_OVER_MNGR_DATA *FakeNvData)
CHAR16 * DevicePathToStr(IN EFI_DEVICE_PATH_PROTOCOL *DevPath)
EFI_HANDLE GetDriverBindingHandleFromImageHandle(IN EFI_HANDLE ImageHandle)
EFI_STATUS EFIAPI DriverLoaded(IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *DriverImagePath, IN EFI_HANDLE DriverImageHandle)
EFI_STATUS EFIAPI GetDriverPath(IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN OUT EFI_DEVICE_PATH_PROTOCOL **DriverImagePath)
EFI_STATUS EFIAPI PlatDriOverrideDxeInit(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI PlatOverMngrRouteConfig(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Configuration, OUT EFI_STRING *Progress)
CHAR16 * GetComponentName(IN EFI_HANDLE DriverBindingHandle)
EFI_STATUS CommitChanges(IN EFI_CALLBACK_INFO *Private, IN UINT16 KeyValue, IN PLAT_OVER_MNGR_DATA *FakeNvData)
EFI_STATUS EFIAPI GetDriver(IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN OUT EFI_HANDLE *DriverImageHandle)
EFI_STATUS EFIAPI PlatOverMngrCallback(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN EFI_BROWSER_ACTION Action, IN EFI_QUESTION_ID KeyValue, IN UINT8 Type, IN EFI_IFR_TYPE_VALUE *Value, OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest)
CHAR16 * GetImageName(IN EFI_LOADED_IMAGE_PROTOCOL *Image)
EFI_STATUS EFIAPI PlatOverMngrExtractConfig(IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, IN CONST EFI_STRING Request, OUT EFI_STRING *Progress, OUT EFI_STRING *Results)
EFI_STATUS UpdatePrioritySelectPage(IN EFI_CALLBACK_INFO *Private, IN UINT16 KeyValue, IN PLAT_OVER_MNGR_DATA *FakeNvData)
EFI_STRING_ID NewString(IN CHAR16 *String, IN EFI_HII_HANDLE HiiHandle)
EFI_STATUS EFIAPI GetEfiGlobalVariable2(IN CONST CHAR16 *Name, OUT VOID **Value, OUT UINTN *Size OPTIONAL)
VOID EFIAPI CreatePopUp(IN UINTN Attribute, OUT EFI_INPUT_KEY *Key OPTIONAL,...)
CHAR8 *EFIAPI GetBestLanguage(IN CONST CHAR8 *SupportedLanguages, IN UINTN Iso639Language,...)
EFI_GUID *EFIAPI EfiGetNameGuidFromFwVolDevicePathNode(IN CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode)
CHAR8 * SupportedLanguages