OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
HiiDatabaseEntry.c
Go to the documentation of this file.
1
10#include "HiiDatabase.h"
11
13
14//
15// Global variables
16//
19
22 {
23 (LIST_ENTRY *)NULL,
24 (LIST_ENTRY *)NULL
25 },
26 {
27 (LIST_ENTRY *)NULL,
28 (LIST_ENTRY *)NULL
29 },
30 {
35 },
36 {
42 },
43 {
50 },
51 {
57 },
58 {
70 },
71 {
78 },
79 {
82 },
83 {
84 (LIST_ENTRY *)NULL,
85 (LIST_ENTRY *)NULL
86 },
87 0,
88 {
89 (LIST_ENTRY *)NULL,
90 (LIST_ENTRY *)NULL
91 },
92 EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK),
93 {
94 0x00000000,
95 0x0000,
96 0x0000,
97 { 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00 }
98 },
99 NULL
100};
101
112VOID
113EFIAPI
115 IN EFI_EVENT Event,
116 IN VOID *Context
117 )
118{
119 return;
120}
121
131VOID
132EFIAPI
134 IN EFI_EVENT Event,
135 IN VOID *Context
136 )
137{
138 //
139 // When ready to boot, we begin to export the HiiDatabase date.
140 // And hook all the possible HiiDatabase change actions to export data.
141 //
145
146 gBS->CloseEvent (Event);
147}
148
165EFI_STATUS
166EFIAPI
168 IN EFI_HANDLE ImageHandle,
169 IN EFI_SYSTEM_TABLE *SystemTable
170 )
171{
172 EFI_STATUS Status;
173 VOID *HiiDatabase;
174
175 //
176 // There will be only one HII Database in the system
177 // If there is another out there, someone is trying to install us
178 // again. Fail that scenario.
179 //
180
181 Status = gBS->LocateProtocol (
182 &gEfiHiiDatabaseProtocolGuid,
183 NULL,
184 &HiiDatabase
185 );
186 if (!EFI_ERROR (Status)) {
187 return Status;
188 }
189
190 InitializeListHead (&mPrivate.DatabaseList);
191 InitializeListHead (&mPrivate.DatabaseNotifyList);
192 InitializeListHead (&mPrivate.HiiHandleList);
193 InitializeListHead (&mPrivate.FontInfoList);
194
195 #if 0
196 //
197 // Create a event with EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID group type.
198 // FIXME: Check UEFI version and install on supported configurations.
199 //
200 Status = gBS->CreateEventEx (
201 EVT_NOTIFY_SIGNAL,
202 TPL_NOTIFY,
204 NULL,
205 &gEfiHiiKeyBoardLayoutGuid,
207 );
208 if (EFI_ERROR (Status)) {
209 return Status;
210 }
211
212 #endif
213
215 ASSERT_EFI_ERROR (Status);
216 Status = OcRegisterBootServicesProtocol (&gEfiHiiStringProtocolGuid, &mPrivate.HiiString, FALSE);
217 ASSERT_EFI_ERROR (Status);
218 Status = OcRegisterBootServicesProtocol (&gEfiHiiDatabaseProtocolGuid, &mPrivate.HiiDatabase, FALSE);
219 ASSERT_EFI_ERROR (Status);
220 Status = OcRegisterBootServicesProtocol (&gEfiHiiConfigRoutingProtocolGuid, &mPrivate.ConfigRouting, FALSE);
221 ASSERT_EFI_ERROR (Status);
222 Status = OcRegisterBootServicesProtocol (&gEfiConfigKeywordHandlerProtocolGuid, &mPrivate.ConfigKeywordHandler, FALSE);
223 ASSERT_EFI_ERROR (Status);
224
225 if (FeaturePcdGet (PcdSupportHiiImageProtocol)) {
226 Status = OcRegisterBootServicesProtocol (&gEfiHiiImageProtocolGuid, &mPrivate.HiiImage, FALSE);
227 ASSERT_EFI_ERROR (Status);
228 Status = OcRegisterBootServicesProtocol (&gEfiHiiImageExProtocolGuid, &mPrivate.HiiImageEx, FALSE);
229 ASSERT_EFI_ERROR (Status);
230 }
231
232 return EFI_SUCCESS;
233}
EFI_STATUS EFIAPI EfiConfigKeywordHandlerGetData(IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This, IN CONST EFI_STRING NameSpaceId, OPTIONAL IN CONST EFI_STRING KeywordString, OPTIONAL OUT EFI_STRING *Progress, OUT UINT32 *ProgressErr, OUT EFI_STRING *Results)
EFI_STATUS EFIAPI EfiConfigKeywordHandlerSetData(IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This, IN CONST EFI_STRING KeywordString, OUT EFI_STRING *Progress, OUT UINT32 *ProgressErr)
EFI_STATUS EFIAPI HiiConfigRoutingExportConfig(IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, OUT EFI_STRING *Results)
EFI_STATUS EFIAPI HiiGetAltCfg(IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, IN CONST EFI_STRING Configuration, IN CONST EFI_GUID *Guid, IN CONST EFI_STRING Name, IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, IN CONST UINT16 *AltCfgId, OUT EFI_STRING *AltCfgResp)
EFI_STATUS EFIAPI HiiConfigRoutingRouteConfig(IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, IN CONST EFI_STRING Configuration, OUT EFI_STRING *Progress)
EFI_STATUS EFIAPI HiiConfigRoutingExtractConfig(IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, IN CONST EFI_STRING Request, OUT EFI_STRING *Progress, OUT EFI_STRING *Results)
EFI_STATUS EFIAPI HiiBlockToConfig(IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, IN CONST EFI_STRING ConfigRequest, IN CONST UINT8 *Block, IN CONST UINTN BlockSize, OUT EFI_STRING *Config, OUT EFI_STRING *Progress)
EFI_STATUS EFIAPI HiiConfigToBlock(IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This, IN CONST EFI_STRING ConfigResp, IN OUT UINT8 *Block, IN OUT UINTN *BlockSize, OUT EFI_STRING *Progress)
EFI_HII_PACKAGE_LIST_HEADER * HiiExportPackageLists(IN EFI_HII_HANDLE Handle)
EFI_STATUS HiiGetConfigRespInfo(IN CONST EFI_HII_DATABASE_PROTOCOL *This)
Definition Database.c:3403
EFI_STATUS EFIAPI HiiRegisterPackageNotify(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN UINT8 PackageType, IN CONST EFI_GUID *PackageGuid, IN CONST EFI_HII_DATABASE_NOTIFY PackageNotifyFn, IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType, OUT EFI_HANDLE *NotifyHandle)
Definition Database.c:4249
EFI_STATUS EFIAPI HiiGetPackageListHandle(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN EFI_HII_HANDLE PackageListHandle, OUT EFI_HANDLE *DriverHandle)
Definition Database.c:4695
EFI_STATUS HiiGetDatabaseInfo(IN CONST EFI_HII_DATABASE_PROTOCOL *This)
Definition Database.c:3467
EFI_STATUS EFIAPI HiiGetKeyboardLayout(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN CONST EFI_GUID *KeyGuid, IN OUT UINT16 *KeyboardLayoutLength, OUT EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout)
Definition Database.c:4512
EFI_STATUS EFIAPI HiiFindKeyboardLayouts(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN OUT UINT16 *KeyGuidBufferLength, OUT EFI_GUID *KeyGuidBuffer)
Definition Database.c:4405
EFI_STATUS EFIAPI HiiSetKeyboardLayout(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN CONST EFI_GUID *KeyGuid)
Definition Database.c:4614
EFI_STATUS EFIAPI HiiUpdatePackageList(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN EFI_HII_HANDLE Handle, IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList)
Definition Database.c:3816
EFI_STATUS EFIAPI HiiNewPackageList(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList, IN CONST EFI_HANDLE DriverHandle, OPTIONAL OUT EFI_HII_HANDLE *Handle)
Definition Database.c:3540
EFI_STATUS EFIAPI HiiListPackageLists(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN UINT8 PackageType, IN CONST EFI_GUID *PackageGuid, IN OUT UINTN *HandleBufferLength, OUT EFI_HII_HANDLE *Handle)
Definition Database.c:3970
EFI_STATUS EFIAPI HiiRemovePackageList(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN EFI_HII_HANDLE Handle)
Definition Database.c:3661
EFI_STATUS EFIAPI HiiUnregisterPackageNotify(IN CONST EFI_HII_DATABASE_PROTOCOL *This, IN EFI_HANDLE NotificationHandle)
Definition Database.c:4324
EFI_STATUS EFIAPI HiiGetGlyph(IN CONST EFI_HII_FONT_PROTOCOL *This, IN CHAR16 Char, IN CONST EFI_FONT_DISPLAY_INFO *StringInfo, OUT EFI_IMAGE_OUTPUT **Blt, OUT UINTN *Baseline OPTIONAL)
Definition Font.c:2638
EFI_STATUS EFIAPI HiiStringToImage(IN CONST EFI_HII_FONT_PROTOCOL *This, IN EFI_HII_OUT_FLAGS Flags, IN CONST EFI_STRING String, IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL, IN OUT EFI_IMAGE_OUTPUT **Blt, IN UINTN BltX, IN UINTN BltY, OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL, OUT UINTN *RowInfoArraySize OPTIONAL, OUT UINTN *ColumnInfoArray OPTIONAL)
Definition Font.c:1624
EFI_STATUS EFIAPI HiiStringIdToImage(IN CONST EFI_HII_FONT_PROTOCOL *This, IN EFI_HII_OUT_FLAGS Flags, IN EFI_HII_HANDLE PackageList, IN EFI_STRING_ID StringId, IN CONST CHAR8 *Language, IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL, IN OUT EFI_IMAGE_OUTPUT **Blt, IN UINTN BltX, IN UINTN BltY, OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL, OUT UINTN *RowInfoArraySize OPTIONAL, OUT UINTN *ColumnInfoArray OPTIONAL)
Definition Font.c:2399
EFI_STATUS EFIAPI HiiGetFontInfo(IN CONST EFI_HII_FONT_PROTOCOL *This, IN OUT EFI_FONT_HANDLE *FontHandle, IN CONST EFI_FONT_DISPLAY_INFO *StringInfoIn, OPTIONAL OUT EFI_FONT_DISPLAY_INFO **StringInfoOut, IN CONST EFI_STRING String OPTIONAL)
Definition Font.c:2832
EFI_STATUS EFIAPI HiiGetImageEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, OUT EFI_IMAGE_INPUT *Image)
Definition ImageEx.c:70
EFI_STATUS EFIAPI HiiDrawImageIdEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_DRAW_FLAGS Flags, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, IN OUT EFI_IMAGE_OUTPUT **Blt, IN UINTN BltX, IN UINTN BltY)
Definition ImageEx.c:200
EFI_STATUS EFIAPI InternalHiiGetString(IN CONST EFI_HII_STRING_PROTOCOL *This, IN CONST CHAR8 *Language, IN EFI_HII_HANDLE PackageList, IN EFI_STRING_ID StringId, OUT EFI_STRING String, IN OUT UINTN *StringSize, OUT EFI_FONT_INFO **StringFontInfo OPTIONAL)
Definition String.c:1644
EFI_STATUS EFIAPI HiiGetSecondaryLanguages(IN CONST EFI_HII_STRING_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN CONST CHAR8 *PrimaryLanguage, IN OUT CHAR8 *SecondaryLanguages, IN OUT UINTN *SecondaryLanguagesSize)
Definition String.c:1954
EFI_STATUS EFIAPI HiiDrawImage(IN CONST EFI_HII_IMAGE_PROTOCOL *This, IN EFI_HII_DRAW_FLAGS Flags, IN CONST EFI_IMAGE_INPUT *Image, IN OUT EFI_IMAGE_OUTPUT **Blt, IN UINTN BltX, IN UINTN BltY)
Definition Image.c:1274
EFI_STATUS EFIAPI HiiGetLanguages(IN CONST EFI_HII_STRING_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN OUT CHAR8 *Languages, IN OUT UINTN *LanguagesSize)
Definition String.c:1847
EFI_STATUS EFIAPI HiiSetImageEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, IN CONST EFI_IMAGE_INPUT *Image)
Definition ImageEx.c:104
EFI_STATUS EFIAPI InternalHiiSetString(IN CONST EFI_HII_STRING_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_STRING_ID StringId, IN CONST CHAR8 *Language, IN CONST EFI_STRING String, IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL)
Definition String.c:1746
#define HII_DATABASE_PRIVATE_DATA_SIGNATURE
EFI_STATUS EFIAPI HiiDrawImageId(IN CONST EFI_HII_IMAGE_PROTOCOL *This, IN EFI_HII_DRAW_FLAGS Flags, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, IN OUT EFI_IMAGE_OUTPUT **Blt, IN UINTN BltX, IN UINTN BltY)
Definition Image.c:1546
EFI_STATUS EFIAPI HiiNewString(IN CONST EFI_HII_STRING_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, OUT EFI_STRING_ID *StringId, IN CONST CHAR8 *Language, IN CONST CHAR16 *LanguageName, OPTIONAL IN CONST EFI_STRING String, IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL)
Definition String.c:1156
EFI_STATUS EFIAPI HiiNewImage(IN CONST EFI_HII_IMAGE_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, OUT EFI_IMAGE_ID *ImageId, IN CONST EFI_IMAGE_INPUT *Image)
Definition Image.c:620
EFI_STATUS EFIAPI HiiGetImageInfo(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, OUT EFI_IMAGE_OUTPUT *Image)
Definition ImageEx.c:326
EFI_STATUS EFIAPI HiiNewImageEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, OUT EFI_IMAGE_ID *ImageId, IN CONST EFI_IMAGE_INPUT *Image)
Definition ImageEx.c:30
EFI_STATUS EFIAPI HiiGetImage(IN CONST EFI_HII_IMAGE_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, OUT EFI_IMAGE_INPUT *Image)
Definition Image.c:1048
EFI_STATUS EFIAPI HiiDrawImageEx(IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This, IN EFI_HII_DRAW_FLAGS Flags, IN CONST EFI_IMAGE_INPUT *Image, IN OUT EFI_IMAGE_OUTPUT **Blt, IN UINTN BltX, IN UINTN BltY)
Definition ImageEx.c:147
EFI_STATUS EFIAPI HiiSetImage(IN CONST EFI_HII_IMAGE_PROTOCOL *This, IN EFI_HII_HANDLE PackageList, IN EFI_IMAGE_ID ImageId, IN CONST EFI_IMAGE_INPUT *Image)
Definition Image.c:1079
BOOLEAN gExportAfterReadyToBoot
VOID EFIAPI OnReadyToBoot(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI OcHiiDatabaseLocalLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
VOID EFIAPI KeyboardLayoutChangeNullEvent(IN EFI_EVENT Event, IN VOID *Context)
EFI_EVENT gHiiKeyboardLayoutChanged
HII_DATABASE_PRIVATE_DATA mPrivate
EFI_BOOT_SERVICES * gBS
EFI_STATUS OcRegisterBootServicesProtocol(IN EFI_GUID *ProtocolGuid, IN VOID *ProtocolInstance, IN BOOLEAN Override)
EFI_GUID gEfiHiiFontProtocolGuid
EFI_HII_CONFIG_ROUTING_PROTOCOL ConfigRouting
EFI_HII_FONT_PROTOCOL HiiFont
EFI_HII_DATABASE_PROTOCOL HiiDatabase
EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL ConfigKeywordHandler
EFI_HII_IMAGE_PROTOCOL HiiImage
EFI_HII_IMAGE_EX_PROTOCOL HiiImageEx
EFI_HII_STRING_PROTOCOL HiiString