]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/HiiDatabase.h
ArmPkg/DebugAgentSymbolsBaseLib: remove exception handling
[mirror_edk2.git] / MdePkg / Include / Protocol / HiiDatabase.h
CommitLineData
d1f95000 1/** @file\r
2 The file provides Database manager for HII-related data\r
3 structures.\r
9095d37b
LG
4\r
5Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
6This program and the accompanying materials are licensed and made available under\r
7the terms and conditions of the BSD License that accompanies this distribution.\r
af2dc6a7 8The full text of the license may be found at\r
9095d37b
LG
9http://opensource.org/licenses/bsd-license.php.\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
d1f95000 13\r
497a5fb1
SZ
14 @par Revision Reference:\r
15 This Protocol was introduced in UEFI Specification 2.1.\r
16\r
d1f95000 17**/\r
18\r
19#ifndef __HII_DATABASE_H__\r
20#define __HII_DATABASE_H__\r
21\r
22#define EFI_HII_DATABASE_PROTOCOL_GUID \\r
23 { 0xef9fc172, 0xa1b2, 0x4693, { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } }\r
24\r
25\r
26typedef struct _EFI_HII_DATABASE_PROTOCOL EFI_HII_DATABASE_PROTOCOL;\r
27\r
d1f95000 28\r
721b16af 29///\r
af2dc6a7 30/// EFI_HII_DATABASE_NOTIFY_TYPE.\r
9095d37b 31///\r
d1f95000 32typedef UINTN EFI_HII_DATABASE_NOTIFY_TYPE;\r
721b16af 33\r
d1f95000 34#define EFI_HII_DATABASE_NOTIFY_NEW_PACK 0x00000001\r
35#define EFI_HII_DATABASE_NOTIFY_REMOVE_PACK 0x00000002\r
36#define EFI_HII_DATABASE_NOTIFY_EXPORT_PACK 0x00000004\r
37#define EFI_HII_DATABASE_NOTIFY_ADD_PACK 0x00000008\r
38/**\r
9095d37b 39\r
d1f95000 40 Functions which are registered to receive notification of\r
41 database events have this prototype. The actual event is encoded\r
42 in NotifyType. The following table describes how PackageType,\r
43 PackageGuid, Handle, and Package are used for each of the\r
44 notification types.\r
45\r
46 @param PackageType Package type of the notification.\r
47\r
48 @param PackageGuid If PackageType is\r
49 EFI_HII_PACKAGE_TYPE_GUID, then this is\r
50 the pointer to the GUID from the Guid\r
51 field of EFI_HII_PACKAGE_GUID_HEADER.\r
52 Otherwise, it must be NULL.\r
53\r
9095d37b
LG
54 @param Package Points to the package referred to by the notification.\r
55\r
4ca9b6c4
LG
56 @param Handle The handle of the package\r
57 list which contains the specified package.\r
d1f95000 58\r
59 @param NotifyType The type of change concerning the\r
60 database. See\r
61 EFI_HII_DATABASE_NOTIFY_TYPE.\r
62\r
63**/\r
64typedef\r
65EFI_STATUS\r
8b13229b 66(EFIAPI *EFI_HII_DATABASE_NOTIFY)(\r
7d582d6b 67 IN UINT8 PackageType,\r
d1f95000 68 IN CONST EFI_GUID *PackageGuid,\r
69 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
7d582d6b 70 IN EFI_HII_HANDLE Handle,\r
71 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
d1f95000 72);\r
73\r
74/**\r
75\r
76 This function adds the packages in the package list to the\r
77 database and returns a handle. If there is a\r
78 EFI_DEVICE_PATH_PROTOCOL associated with the DriverHandle, then\r
79 this function will create a package of type\r
80 EFI_PACKAGE_TYPE_DEVICE_PATH and add it to the package list. For\r
81 each package in the package list, registered functions with the\r
82 notification type NEW_PACK and having the same package type will\r
83 be called. For each call to NewPackageList(), there should be a\r
84 corresponding call to\r
85 EFI_HII_DATABASE_PROTOCOL.RemovePackageList().\r
9095d37b 86\r
4ca9b6c4 87 @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
d1f95000 88\r
4ca9b6c4 89 @param PackageList A pointer to an EFI_HII_PACKAGE_LIST_HEADER structure.\r
d1f95000 90\r
4ca9b6c4 91 @param DriverHandle Associate the package list with this EFI handle.\r
8c6d73fb 92 If a NULL is specified, this data will not be associate\r
93 with any drivers and cannot have a callback induced.\r
9095d37b 94\r
4ca9b6c4 95 @param Handle A pointer to the EFI_HII_HANDLE instance.\r
d1f95000 96\r
4ca9b6c4
LG
97 @retval EFI_SUCCESS The package list associated with the\r
98 Handle was added to the HII database.\r
d1f95000 99\r
100 @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary\r
101 resources for the new database\r
102 contents.\r
103\r
af2dc6a7 104 @retval EFI_INVALID_PARAMETER PackageList is NULL, or Handle is NULL.\r
d1f95000 105\r
106**/\r
107typedef\r
108EFI_STATUS\r
8b13229b 109(EFIAPI *EFI_HII_DATABASE_NEW_PACK)(\r
d1f95000 110 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
111 IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList,\r
8c6d73fb 112 IN EFI_HANDLE DriverHandle, OPTIONAL\r
7d582d6b 113 OUT EFI_HII_HANDLE *Handle\r
d1f95000 114);\r
115\r
116\r
117/**\r
118\r
119 This function removes the package list that is associated with a\r
120 handle Handle from the HII database. Before removing the\r
121 package, any registered functions with the notification type\r
122 REMOVE_PACK and the same package type will be called. For each\r
123 call to EFI_HII_DATABASE_PROTOCOL.NewPackageList(), there should\r
124 be a corresponding call to RemovePackageList.\r
125\r
4ca9b6c4 126 @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
9095d37b 127\r
4ca9b6c4
LG
128 @param Handle The handle that was registered to the data\r
129 that is requested for removal.\r
9095d37b 130\r
4ca9b6c4
LG
131 @retval EFI_SUCCESS The data associated with the Handle was\r
132 removed from the HII database.\r
54cf8780 133 @retval EFI_NOT_FOUND The specified Handle is not in database.\r
d1f95000 134\r
135**/\r
136typedef\r
137EFI_STATUS\r
8b13229b 138(EFIAPI *EFI_HII_DATABASE_REMOVE_PACK)(\r
d1f95000 139 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
7d582d6b 140 IN EFI_HII_HANDLE Handle\r
d1f95000 141);\r
142\r
143\r
144/**\r
9095d37b 145\r
d1f95000 146 This function updates the existing package list (which has the\r
147 specified Handle) in the HII databases, using the new package\r
148 list specified by PackageList. The update process has the\r
149 following steps: Collect all the package types in the package\r
150 list specified by PackageList. A package type consists of the\r
151 Type field of EFI_HII_PACKAGE_HEADER and, if the Type is\r
152 EFI_HII_PACKAGE_TYPE_GUID, the Guid field, as defined in\r
153 EFI_HII_PACKAGE_GUID_HEADER. Iterate through the packages within\r
154 the existing package list in the HII database specified by\r
f754f721 155 Handle. If a package's type matches one of the collected types collected\r
156 in step 1, then perform the following steps:\r
d1f95000 157 - Call any functions registered with the notification type\r
158 REMOVE_PACK.\r
159 - Remove the package from the package list and the HII\r
160 database.\r
161 Add all of the packages within the new package list specified\r
162 by PackageList, using the following steps:\r
163 - Add the package to the package list and the HII database.\r
164 - Call any functions registered with the notification type\r
165 ADD_PACK.\r
166\r
4ca9b6c4 167 @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
9095d37b 168\r
4ca9b6c4
LG
169 @param Handle The handle that was registered to the data\r
170 that is requested for removal.\r
9095d37b 171\r
d1f95000 172 @param PackageList A pointer to an EFI_HII_PACKAGE_LIST\r
173 package.\r
9095d37b 174\r
4ca9b6c4 175 @retval EFI_SUCCESS The HII database was successfully updated.\r
9095d37b 176\r
4ca9b6c4
LG
177 @retval EFI_OUT_OF_RESOURCES Unable to allocate enough memory\r
178 for the updated database.\r
9095d37b 179\r
54cf8780 180 @retval EFI_INVALID_PARAMETER PackageList was NULL.\r
181 @retval EFI_NOT_FOUND The specified Handle is not in database.\r
d1f95000 182\r
183**/\r
184typedef\r
185EFI_STATUS\r
8b13229b 186(EFIAPI *EFI_HII_DATABASE_UPDATE_PACK)(\r
d1f95000 187 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
7d582d6b 188 IN EFI_HII_HANDLE Handle,\r
d1f95000 189 IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList\r
190);\r
191\r
192\r
193/**\r
9095d37b
LG
194\r
195 This function returns a list of the package handles of the\r
196 specified type that are currently active in the database. The\r
197 pseudo-type EFI_HII_PACKAGE_TYPE_ALL will cause all package\r
d1f95000 198 handles to be listed.\r
9095d37b 199\r
4ca9b6c4 200 @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
9095d37b 201\r
4ca9b6c4
LG
202 @param PackageType Specifies the package type of the packages\r
203 to list or EFI_HII_PACKAGE_TYPE_ALL for\r
204 all packages to be listed.\r
9095d37b 205\r
4ca9b6c4
LG
206 @param PackageGuid If PackageType is\r
207 EFI_HII_PACKAGE_TYPE_GUID, then this is\r
208 the pointer to the GUID which must match\r
209 the Guid field of\r
210 EFI_HII_PACKAGE_GUID_HEADER. Otherwise, it\r
211 must be NULL.\r
9095d37b 212\r
d1f95000 213 @param HandleBufferLength On input, a pointer to the length\r
214 of the handle buffer. On output,\r
215 the length of the handle buffer\r
4ca9b6c4 216 that is required for the handles found.\r
d1f95000 217\r
af2dc6a7 218 @param Handle An array of EFI_HII_HANDLE instances returned.\r
d1f95000 219\r
a750b4ae 220 @retval EFI_SUCCESS The matching handles are outputted successfully.\r
4ca9b6c4
LG
221 HandleBufferLength is updated with the actual length.\r
222 @retval EFI_BUFFER_TOO_SMALL The HandleBufferLength parameter\r
d1f95000 223 indicates that Handle is too\r
224 small to support the number of\r
225 handles. HandleBufferLength is\r
226 updated with a value that will\r
227 enable the data to fit.\r
af2dc6a7 228 @retval EFI_NOT_FOUND No matching handle could be found in database.\r
5795218e
ED
229 @retval EFI_INVALID_PARAMETER HandleBufferLength was NULL.\r
230 @retval EFI_INVALID_PARAMETER The value referenced by HandleBufferLength was not\r
231 zero and Handle was NULL.\r
4ca9b6c4
LG
232 @retval EFI_INVALID_PARAMETER PackageType is not a EFI_HII_PACKAGE_TYPE_GUID but\r
233 PackageGuid is not NULL, PackageType is a EFI_HII_\r
234 PACKAGE_TYPE_GUID but PackageGuid is NULL.\r
d1f95000 235**/\r
236typedef\r
237EFI_STATUS\r
8b13229b 238(EFIAPI *EFI_HII_DATABASE_LIST_PACKS)(\r
d1f95000 239 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
7d582d6b 240 IN UINT8 PackageType,\r
d1f95000 241 IN CONST EFI_GUID *PackageGuid,\r
242 IN OUT UINTN *HandleBufferLength,\r
4ca9b6c4 243 OUT EFI_HII_HANDLE *Handle\r
d1f95000 244);\r
245\r
d1f95000 246/**\r
247\r
248 This function will export one or all package lists in the\r
249 database to a buffer. For each package list exported, this\r
250 function will call functions registered with EXPORT_PACK and\r
251 then copy the package list to the buffer. The registered\r
252 functions may call EFI_HII_DATABASE_PROTOCOL.UpdatePackageList()\r
253 to modify the package list before it is copied to the buffer. If\r
254 the specified BufferSize is too small, then the status\r
255 EFI_OUT_OF_RESOURCES will be returned and the actual package\r
256 size will be returned in BufferSize.\r
257\r
4ca9b6c4
LG
258 @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
259\r
d1f95000 260\r
4ca9b6c4
LG
261 @param Handle An EFI_HII_HANDLE that corresponds to the\r
262 desired package list in the HII database to\r
263 export or NULL to indicate all package lists\r
9095d37b 264 should be exported.\r
d1f95000 265\r
266 @param BufferSize On input, a pointer to the length of the\r
267 buffer. On output, the length of the\r
268 buffer that is required for the exported\r
269 data.\r
270\r
4ca9b6c4
LG
271 @param Buffer A pointer to a buffer that will contain the\r
272 results of the export function.\r
9095d37b
LG
273\r
274\r
4ca9b6c4 275 @retval EFI_SUCCESS Package exported.\r
9095d37b 276\r
4ca9b6c4 277 @retval EFI_OUT_OF_RESOURCES BufferSize is too small to hold the package.\r
d1f95000 278\r
a750b4ae 279 @retval EFI_NOT_FOUND The specified Handle could not be found in the\r
5795218e 280 current database.\r
9095d37b 281\r
5795218e 282 @retval EFI_INVALID_PARAMETER BufferSize was NULL.\r
9095d37b
LG
283\r
284 @retval EFI_INVALID_PARAMETER The value referenced by BufferSize was not zero\r
5795218e 285 and Buffer was NULL.\r
d1f95000 286**/\r
287typedef\r
288EFI_STATUS\r
8b13229b 289(EFIAPI *EFI_HII_DATABASE_EXPORT_PACKS)(\r
7d582d6b 290 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
291 IN EFI_HII_HANDLE Handle,\r
292 IN OUT UINTN *BufferSize,\r
293 OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer\r
d1f95000 294);\r
295\r
296\r
297/**\r
9095d37b
LG
298\r
299\r
d1f95000 300 This function registers a function which will be called when\r
301 specified actions related to packages of the specified type\r
302 occur in the HII database. By registering a function, other\r
303 HII-related drivers are notified when specific package types\r
304 are added, removed or updated in the HII database. Each driver\r
305 or application which registers a notification should use\r
306 EFI_HII_DATABASE_PROTOCOL.UnregisterPackageNotify() before\r
307 exiting.\r
9095d37b
LG
308\r
309\r
4ca9b6c4 310 @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
d1f95000 311\r
4ca9b6c4 312 @param PackageType The package type. See\r
9095d37b 313 EFI_HII_PACKAGE_TYPE_x in EFI_HII_PACKAGE_HEADER.\r
d1f95000 314\r
4ca9b6c4
LG
315 @param PackageGuid If PackageType is\r
316 EFI_HII_PACKAGE_TYPE_GUID, then this is\r
317 the pointer to the GUID which must match\r
318 the Guid field of\r
319 EFI_HII_PACKAGE_GUID_HEADER. Otherwise, it\r
320 must be NULL.\r
d1f95000 321\r
322 @param PackageNotifyFn Points to the function to be called\r
323 when the event specified by\r
324 NotificationType occurs. See\r
325 EFI_HII_DATABASE_NOTIFY.\r
326\r
4ca9b6c4
LG
327 @param NotifyType Describes the types of notification which\r
328 this function will be receiving. See\r
af2dc6a7 329 EFI_HII_DATABASE_NOTIFY_TYPE for a\r
4ca9b6c4 330 list of types.\r
d1f95000 331\r
4ca9b6c4
LG
332 @param NotifyHandle Points to the unique handle assigned to\r
333 the registered notification. Can be used\r
334 in EFI_HII_DATABASE_PROTOCOL.UnregisterPack\r
335 to stop notifications.\r
d1f95000 336\r
337\r
4ca9b6c4 338 @retval EFI_SUCCESS Notification registered successfully.\r
d1f95000 339\r
340 @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary\r
341 data structures.\r
342\r
4ca9b6c4
LG
343 @retval EFI_INVALID_PARAMETER PackageGuid is not NULL when\r
344 PackageType is not\r
345 EFI_HII_PACKAGE_TYPE_GUID.\r
d1f95000 346\r
347**/\r
348typedef\r
349EFI_STATUS\r
8b13229b 350(EFIAPI *EFI_HII_DATABASE_REGISTER_NOTIFY)(\r
d1f95000 351 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
7d582d6b 352 IN UINT8 PackageType,\r
d1f95000 353 IN CONST EFI_GUID *PackageGuid,\r
7d582d6b 354 IN EFI_HII_DATABASE_NOTIFY PackageNotifyFn,\r
355 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,\r
d1f95000 356 OUT EFI_HANDLE *NotifyHandle\r
357);\r
358\r
359\r
360/**\r
9095d37b 361\r
d1f95000 362 Removes the specified HII database package-related notification.\r
9095d37b 363\r
4ca9b6c4
LG
364 @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
365\r
d1f95000 366 @param NotificationHandle The handle of the notification\r
367 function being unregistered.\r
9095d37b
LG
368\r
369 @retval EFI_SUCCESS Successsfully unregistered the notification.\r
370\r
371 @retval EFI_NOT_FOUND The incoming notification handle does not exist\r
630b4187 372 in the current hii database.\r
9095d37b 373\r
d1f95000 374**/\r
375typedef\r
376EFI_STATUS\r
8b13229b 377(EFIAPI *EFI_HII_DATABASE_UNREGISTER_NOTIFY)(\r
d1f95000 378 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
7d582d6b 379 IN EFI_HANDLE NotificationHandle\r
d1f95000 380);\r
381\r
382\r
d1f95000 383/**\r
9095d37b 384\r
d1f95000 385 This routine retrieves an array of GUID values for each keyboard\r
386 layout that was previously registered in the system.\r
387\r
4ca9b6c4 388 @param This A pointer to the EFI_HII_PROTOCOL instance.\r
d1f95000 389\r
390 @param KeyGuidBufferLength On input, a pointer to the length\r
391 of the keyboard GUID buffer. On\r
392 output, the length of the handle\r
393 buffer that is required for the\r
9095d37b
LG
394 handles found.\r
395\r
4ca9b6c4 396 @param KeyGuidBuffer An array of keyboard layout GUID\r
d1f95000 397 instances returned.\r
398\r
4ca9b6c4 399 @retval EFI_SUCCESS KeyGuidBuffer was updated successfully.\r
9095d37b 400\r
d1f95000 401 @retval EFI_BUFFER_TOO_SMALL The KeyGuidBufferLength\r
402 parameter indicates that\r
403 KeyGuidBuffer is too small to\r
404 support the number of GUIDs.\r
405 KeyGuidBufferLength is updated\r
406 with a value that will enable\r
407 the data to fit.\r
5795218e 408 @retval EFI_INVALID_PARAMETER The KeyGuidBufferLength is NULL.\r
9095d37b 409 @retval EFI_INVALID_PARAMETER The value referenced by\r
5795218e
ED
410 KeyGuidBufferLength is not\r
411 zero and KeyGuidBuffer is NULL.\r
412 @retval EFI_NOT_FOUND There was no keyboard layout.\r
d1f95000 413\r
414**/\r
415typedef\r
416EFI_STATUS\r
8b13229b 417(EFIAPI *EFI_HII_FIND_KEYBOARD_LAYOUTS)(\r
d1f95000 418 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
419 IN OUT UINT16 *KeyGuidBufferLength,\r
420 OUT EFI_GUID *KeyGuidBuffer\r
421);\r
422\r
423\r
424/**\r
9095d37b 425\r
d1f95000 426 This routine retrieves the requested keyboard layout. The layout\r
af2dc6a7 427 is a physical description of the keys on a keyboard, and the\r
d1f95000 428 character(s) that are associated with a particular set of key\r
429 strokes.\r
430\r
4ca9b6c4 431 @param This A pointer to the EFI_HII_PROTOCOL instance.\r
9095d37b 432\r
4ca9b6c4
LG
433 @param KeyGuid A pointer to the unique ID associated with a\r
434 given keyboard layout. If KeyGuid is NULL then\r
435 the current layout will be retrieved.\r
436\r
437 @param KeyboardLayoutLength On input, a pointer to the length of the\r
438 KeyboardLayout buffer. On output, the length of\r
439 the data placed into KeyboardLayout.\r
9095d37b 440\r
4ca9b6c4
LG
441 @param KeyboardLayout A pointer to a buffer containing the\r
442 retrieved keyboard layout.\r
9095d37b 443\r
d1f95000 444 @retval EFI_SUCCESS The keyboard layout was retrieved\r
445 successfully.\r
9095d37b 446\r
4ca9b6c4 447 @retval EFI_NOT_FOUND The requested keyboard layout was not found.\r
d1f95000 448\r
449**/\r
450typedef\r
451EFI_STATUS\r
8b13229b 452(EFIAPI *EFI_HII_GET_KEYBOARD_LAYOUT)(\r
d1f95000 453 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
454 IN CONST EFI_GUID *KeyGuid,\r
f620c889 455 IN OUT UINT16 *KeyboardLayoutLength,\r
d1f95000 456 OUT EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout\r
457);\r
458\r
459/**\r
9095d37b 460\r
d1f95000 461 This routine sets the default keyboard layout to the one\r
462 referenced by KeyGuid. When this routine is called, an event\r
463 will be signaled of the EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID\r
464 group type. This is so that agents which are sensitive to the\r
465 current keyboard layout being changed can be notified of this\r
466 change.\r
467\r
4ca9b6c4 468 @param This A pointer to the EFI_HII_PROTOCOL instance.\r
d1f95000 469\r
4ca9b6c4
LG
470 @param KeyGuid A pointer to the unique ID associated with a\r
471 given keyboard layout.\r
d1f95000 472\r
4ca9b6c4 473 @retval EFI_SUCCESS The current keyboard layout was successfully set.\r
d1f95000 474\r
4ca9b6c4
LG
475 @retval EFI_NOT_FOUND The referenced keyboard layout was not\r
476 found, so action was taken.\r
d1f95000 477\r
478**/\r
479typedef\r
480EFI_STATUS\r
8b13229b 481(EFIAPI *EFI_HII_SET_KEYBOARD_LAYOUT)(\r
d1f95000 482 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
483 IN CONST EFI_GUID *KeyGuid\r
484);\r
485\r
486/**\r
9095d37b 487\r
d1f95000 488 Return the EFI handle associated with a package list.\r
9095d37b 489\r
4ca9b6c4 490 @param This A pointer to the EFI_HII_PROTOCOL instance.\r
9095d37b 491\r
7d582d6b 492 @param PackageListHandle An EFI_HII_HANDLE that corresponds\r
d1f95000 493 to the desired package list in the\r
494 HIIdatabase.\r
9095d37b 495\r
4ca9b6c4
LG
496 @param DriverHandle On return, contains the EFI_HANDLE which\r
497 was registered with the package list in\r
498 NewPackageList().\r
9095d37b 499\r
4ca9b6c4 500 @retval EFI_SUCCESS The DriverHandle was returned successfully.\r
9095d37b 501\r
4ca9b6c4 502 @retval EFI_INVALID_PARAMETER The PackageListHandle was not valid.\r
d1f95000 503\r
504**/\r
505typedef\r
506EFI_STATUS\r
8b13229b 507(EFIAPI *EFI_HII_DATABASE_GET_PACK_HANDLE)(\r
d1f95000 508 IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
7d582d6b 509 IN EFI_HII_HANDLE PackageListHandle,\r
d1f95000 510 OUT EFI_HANDLE *DriverHandle\r
511);\r
512\r
44717a39 513///\r
514/// Database manager for HII-related data structures.\r
515///\r
d1f95000 516struct _EFI_HII_DATABASE_PROTOCOL {\r
721b16af 517 EFI_HII_DATABASE_NEW_PACK NewPackageList;\r
518 EFI_HII_DATABASE_REMOVE_PACK RemovePackageList;\r
7d582d6b 519 EFI_HII_DATABASE_UPDATE_PACK UpdatePackageList;\r
520 EFI_HII_DATABASE_LIST_PACKS ListPackageLists;\r
521 EFI_HII_DATABASE_EXPORT_PACKS ExportPackageLists;\r
522 EFI_HII_DATABASE_REGISTER_NOTIFY RegisterPackageNotify;\r
523 EFI_HII_DATABASE_UNREGISTER_NOTIFY UnregisterPackageNotify;\r
524 EFI_HII_FIND_KEYBOARD_LAYOUTS FindKeyboardLayouts;\r
525 EFI_HII_GET_KEYBOARD_LAYOUT GetKeyboardLayout;\r
526 EFI_HII_SET_KEYBOARD_LAYOUT SetKeyboardLayout;\r
527 EFI_HII_DATABASE_GET_PACK_HANDLE GetPackageListHandle;\r
d1f95000 528};\r
529\r
530extern EFI_GUID gEfiHiiDatabaseProtocolGuid;\r
531\r
532#endif\r
533\r
7d582d6b 534\r