]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Library/IfrSupportLib.h
UEFI HII: Merge UEFI HII support changes from branch.
[mirror_edk2.git] / MdePkg / Include / Library / IfrSupportLib.h
CommitLineData
7d582d6b 1/*++\r
2\r
3Copyright (c) 2007, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12Module Name:\r
13\r
14 UefiIfrLibrary.h\r
15\r
16Abstract:\r
17\r
fb3df220 18 The file contain all library function for Ifr Operations.\r
19\r
7d582d6b 20--*/\r
21\r
22#ifndef _IFRLIBRARY_H\r
23#define _IFRLIBRARY_H\r
24\r
25\r
26#include <Protocol/HiiFont.h>\r
27#include <Protocol/HiiImage.h>\r
28#include <Protocol/HiiString.h>\r
29#include <Protocol/HiiDatabase.h>\r
30#include <Protocol/HiiConfigRouting.h>\r
31#include <Protocol/HiiConfigAccess.h>\r
32#include <Protocol/FormBrowser2.h>\r
33#include <Protocol/SimpleTextOut.h>\r
842f5579 34\r
7d582d6b 35#include <Guid/GlobalVariable.h>\r
fb3df220 36\r
7d582d6b 37#define IFR_LIB_DEFAULT_STRING_SIZE 0x200\r
fb3df220 38\r
7d582d6b 39//\r
40// The architectural variable "Lang" and "LangCodes" are deprecated in UEFI\r
41// specification. While, UEFI specification also states that these deprecated\r
42// variables may be provided for backwards compatibility.\r
43// If "LANG_SUPPORT" is defined, "Lang" and "LangCodes" will be produced;\r
44// If "LANG_SUPPORT" is undefined, "Lang" and "LangCodes" will not be produced.\r
45//\r
46#define LANG_SUPPORT\r
1528fae8 47\r
7d582d6b 48#define EFI_LANGUAGE_VARIABLE L"Lang"\r
49#define EFI_LANGUAGE_CODES_VARIABLE L"LangCodes"\r
50\r
51#define UEFI_LANGUAGE_VARIABLE L"PlatformLang"\r
52#define UEFI_LANGUAGE_CODES_VARIABLE L"PlatformLangCodes"\r
53\r
54//\r
55// Limited buffer size recommended by RFC4646 (4.3. Length Considerations)\r
56// (42 characters plus a NULL terminator)\r
57//\r
58#define RFC_3066_ENTRY_SIZE (42 + 1)\r
59#define ISO_639_2_ENTRY_SIZE 3\r
60\r
61#define INVALID_VARSTORE_ID 0\r
62\r
63#define QUESTION_FLAGS (EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY)\r
64#define QUESTION_FLAGS_MASK (~QUESTION_FLAGS)\r
65\r
66extern EFI_HII_DATABASE_PROTOCOL *gIfrLibHiiDatabase;\r
67extern EFI_HII_STRING_PROTOCOL *gIfrLibHiiString;\r
fb3df220 68\r
69#pragma pack(1)\r
70typedef struct {\r
7d582d6b 71 EFI_STRING_ID StringToken;\r
72 EFI_IFR_TYPE_VALUE Value;\r
73 UINT8 Flags;\r
fb3df220 74} IFR_OPTION;\r
75#pragma pack()\r
76\r
7d582d6b 77typedef struct {\r
78 //\r
79 // Buffer size allocated for Data.\r
80 //\r
81 UINT32 BufferSize;\r
82\r
83 //\r
84 // Offset in Data to append the newly created opcode binary.\r
85 // It will be adjusted automatically in Create***OpCode(), and should be\r
86 // initialized to 0 before invocation of a serial of Create***OpCode()\r
87 //\r
88 UINT32 Offset;\r
89\r
90 //\r
91 // The destination buffer for created op-codes\r
92 //\r
93 UINT8 *Data;\r
94} EFI_HII_UPDATE_DATA;\r
95\r
96\r
97//\r
98// Exported Library functions\r
99//\r
fb3df220 100EFI_STATUS\r
7d582d6b 101CreateEndOpCode (\r
102 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 103 )\r
104/*++\r
105\r
106Routine Description:\r
7d582d6b 107 Create EFI_IFR_END_OP opcode.\r
fb3df220 108\r
fb3df220 109Arguments:\r
7d582d6b 110 Data - Destination for the created opcode binary\r
fb3df220 111\r
7d582d6b 112Returns:\r
113 EFI_SUCCESS - Opcode create success\r
fb3df220 114\r
115--*/\r
116;\r
117\r
118EFI_STATUS\r
7d582d6b 119CreateDefaultOpCode (\r
120 IN EFI_IFR_TYPE_VALUE *Value,\r
121 IN UINT8 Type,\r
122 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 123 )\r
124/*++\r
125\r
126Routine Description:\r
7d582d6b 127 Create EFI_IFR_DEFAULT_OP opcode.\r
fb3df220 128\r
fb3df220 129Arguments:\r
7d582d6b 130 Value - Value for the default\r
131 Type - Type for the default\r
132 Data - Destination for the created opcode binary\r
fb3df220 133\r
7d582d6b 134Returns:\r
135 EFI_SUCCESS - Opcode create success\r
fb3df220 136\r
137--*/\r
138;\r
139\r
140EFI_STATUS\r
7d582d6b 141CreateActionOpCode (\r
142 IN EFI_QUESTION_ID QuestionId,\r
143 IN EFI_STRING_ID Prompt,\r
144 IN EFI_STRING_ID Help,\r
145 IN UINT8 QuestionFlags,\r
146 IN EFI_STRING_ID QuestionConfig,\r
147 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 148 )\r
149/*++\r
150\r
151Routine Description:\r
7d582d6b 152 Create EFI_IFR_ACTION_OP opcode.\r
fb3df220 153\r
fb3df220 154Arguments:\r
7d582d6b 155 QuestionId - Question ID\r
156 Prompt - String ID for Prompt\r
157 Help - String ID for Help\r
158 QuestionFlags - Flags in Question Header\r
159 QuestionConfig - String ID for configuration\r
160 Data - Destination for the created opcode binary\r
fb3df220 161\r
7d582d6b 162Returns:\r
163 EFI_SUCCESS - Opcode create success\r
fb3df220 164\r
165--*/\r
166;\r
167\r
168EFI_STATUS\r
7d582d6b 169CreateSubTitleOpCode (\r
170 IN EFI_STRING_ID Prompt,\r
171 IN EFI_STRING_ID Help,\r
172 IN UINT8 Flags,\r
173 IN UINT8 Scope,\r
174 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 175 )\r
176/*++\r
177\r
178Routine Description:\r
7d582d6b 179 Create EFI_IFR_SUBTITLE_OP opcode.\r
fb3df220 180\r
fb3df220 181Arguments:\r
7d582d6b 182 Prompt - String ID for Prompt\r
183 Help - String ID for Help\r
184 Flags - Subtitle opcode flags\r
185 Scope - Subtitle Scope bit\r
186 Data - Destination for the created opcode binary\r
fb3df220 187\r
7d582d6b 188Returns:\r
189 EFI_SUCCESS - Opcode create success\r
fb3df220 190\r
191--*/\r
192;\r
193\r
194EFI_STATUS\r
7d582d6b 195CreateTextOpCode (\r
196 IN EFI_STRING_ID Prompt,\r
197 IN EFI_STRING_ID Help,\r
198 IN EFI_STRING_ID TextTwo,\r
199 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 200 )\r
201/*++\r
202\r
203Routine Description:\r
7d582d6b 204 Create EFI_IFR_TEXT_OP opcode.\r
fb3df220 205\r
fb3df220 206Arguments:\r
7d582d6b 207 Prompt - String ID for Prompt\r
208 Help - String ID for Help\r
209 TextTwo - String ID for text two\r
210 Data - Destination for the created opcode binary\r
fb3df220 211\r
7d582d6b 212Returns:\r
213 EFI_SUCCESS - Opcode create success\r
fb3df220 214\r
215--*/\r
216;\r
217\r
218EFI_STATUS\r
7d582d6b 219CreateGotoOpCode (\r
220 IN EFI_FORM_ID FormId,\r
221 IN EFI_STRING_ID Prompt,\r
222 IN EFI_STRING_ID Help,\r
223 IN UINT8 QuestionFlags,\r
224 IN EFI_QUESTION_ID QuestionId,\r
225 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 226 )\r
227/*++\r
228\r
229Routine Description:\r
7d582d6b 230 Create EFI_IFR_REF_OP opcode.\r
fb3df220 231\r
fb3df220 232Arguments:\r
7d582d6b 233 FormId - Destination Form ID\r
234 Prompt - String ID for Prompt\r
235 Help - String ID for Help\r
236 QuestionFlags - Flags in Question Header\r
237 QuestionId - Question ID\r
238 Data - Destination for the created opcode binary\r
fb3df220 239\r
7d582d6b 240Returns:\r
241 EFI_SUCCESS - Opcode create success\r
fb3df220 242\r
243--*/\r
244;\r
245\r
246EFI_STATUS\r
7d582d6b 247CreateOneOfOptionOpCode (\r
248 IN UINTN OptionCount,\r
249 IN IFR_OPTION *OptionsList,\r
250 IN UINT8 Type,\r
251 IN OUT EFI_HII_UPDATE_DATA *Data\r
252 )\r
253;\r
254\r
255EFI_STATUS\r
256CreateOneOfOpCode (\r
257 IN EFI_QUESTION_ID QuestionId,\r
258 IN EFI_VARSTORE_ID VarStoreId,\r
259 IN UINT16 VarOffset,\r
260 IN EFI_STRING_ID Prompt,\r
261 IN EFI_STRING_ID Help,\r
262 IN UINT8 QuestionFlags,\r
263 IN UINT8 OneOfFlags,\r
264 IN IFR_OPTION *OptionsList,\r
265 IN UINTN OptionCount,\r
266 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 267 )\r
268/*++\r
269\r
270Routine Description:\r
7d582d6b 271 Create EFI_IFR_ONE_OF_OP opcode.\r
fb3df220 272\r
fb3df220 273Arguments:\r
7d582d6b 274 QuestionId - Question ID\r
275 VarStoreId - Storage ID\r
276 VarOffset - Offset in Storage\r
277 Prompt - String ID for Prompt\r
278 Help - String ID for Help\r
279 QuestionFlags - Flags in Question Header\r
280 OneOfFlags - Flags for oneof opcode\r
281 OptionsList - List of options\r
282 OptionCount - Number of options in option list\r
283 Data - Destination for the created opcode binary\r
fb3df220 284\r
7d582d6b 285Returns:\r
286 EFI_SUCCESS - Opcode create success\r
fb3df220 287\r
288--*/\r
289;\r
290\r
291EFI_STATUS\r
7d582d6b 292CreateOrderedListOpCode (\r
293 IN EFI_QUESTION_ID QuestionId,\r
294 IN EFI_VARSTORE_ID VarStoreId,\r
295 IN UINT16 VarOffset,\r
296 IN EFI_STRING_ID Prompt,\r
297 IN EFI_STRING_ID Help,\r
298 IN UINT8 QuestionFlags,\r
299 IN UINT8 Flags,\r
300 IN UINT8 DataType,\r
301 IN UINT8 MaxContainers,\r
302 IN IFR_OPTION *OptionsList,\r
303 IN UINTN OptionCount,\r
304 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 305 )\r
306/*++\r
307\r
308Routine Description:\r
7d582d6b 309 Create EFI_IFR_ORDERED_LIST_OP opcode.\r
fb3df220 310\r
fb3df220 311Arguments:\r
7d582d6b 312 QuestionId - Question ID\r
313 VarStoreId - Storage ID\r
314 VarOffset - Offset in Storage\r
315 Prompt - String ID for Prompt\r
316 Help - String ID for Help\r
317 QuestionFlags - Flags in Question Header\r
318 Flags - Flags for ordered list opcode\r
319 DataType - Type for option value\r
320 MaxContainers - Maximum count for options in this ordered list\r
321 OptionsList - List of options\r
322 OptionCount - Number of options in option list\r
323 Data - Destination for the created opcode binary\r
fb3df220 324\r
7d582d6b 325Returns:\r
326 EFI_SUCCESS - Opcode create success\r
fb3df220 327\r
328--*/\r
329;\r
330\r
331EFI_STATUS\r
7d582d6b 332CreateCheckBoxOpCode (\r
333 IN EFI_QUESTION_ID QuestionId,\r
334 IN EFI_VARSTORE_ID VarStoreId,\r
335 IN UINT16 VarOffset,\r
336 IN EFI_STRING_ID Prompt,\r
337 IN EFI_STRING_ID Help,\r
338 IN UINT8 QuestionFlags,\r
339 IN UINT8 CheckBoxFlags,\r
340 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 341 )\r
342/*++\r
343\r
344Routine Description:\r
7d582d6b 345 Create EFI_IFR_CHECKBOX_OP opcode.\r
fb3df220 346\r
fb3df220 347Arguments:\r
7d582d6b 348 QuestionId - Question ID\r
349 VarStoreId - Storage ID\r
350 VarOffset - Offset in Storage\r
351 Prompt - String ID for Prompt\r
352 Help - String ID for Help\r
353 QuestionFlags - Flags in Question Header\r
354 CheckBoxFlags - Flags for checkbox opcode\r
355 Data - Destination for the created opcode binary\r
fb3df220 356\r
7d582d6b 357Returns:\r
358 EFI_SUCCESS - Opcode create success\r
fb3df220 359\r
360--*/\r
361;\r
362\r
363EFI_STATUS\r
7d582d6b 364CreateNumericOpCode (\r
365 IN EFI_QUESTION_ID QuestionId,\r
366 IN EFI_VARSTORE_ID VarStoreId,\r
367 IN UINT16 VarOffset,\r
368 IN EFI_STRING_ID Prompt,\r
369 IN EFI_STRING_ID Help,\r
370 IN UINT8 QuestionFlags,\r
371 IN UINT8 NumericFlags,\r
372 IN UINT64 Minimum,\r
373 IN UINT64 Maximum,\r
374 IN UINT64 Step,\r
375 IN UINT64 Default,\r
376 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 377 )\r
378/*++\r
379\r
380Routine Description:\r
7d582d6b 381 Create EFI_IFR_NUMERIC_OP opcode.\r
fb3df220 382\r
fb3df220 383Arguments:\r
7d582d6b 384 QuestionId - Question ID\r
385 VarStoreId - Storage ID\r
386 VarOffset - Offset in Storage\r
387 Prompt - String ID for Prompt\r
388 Help - String ID for Help\r
389 QuestionFlags - Flags in Question Header\r
390 NumericFlags - Flags for numeric opcode\r
391 Minimum - Numeric minimum value\r
392 Maximum - Numeric maximum value\r
393 Step - Numeric step for edit\r
394 Default - Numeric default value\r
395 Data - Destination for the created opcode binary\r
fb3df220 396\r
7d582d6b 397Returns:\r
398 EFI_SUCCESS - Opcode create success\r
fb3df220 399\r
400--*/\r
401;\r
402\r
403EFI_STATUS\r
7d582d6b 404CreateStringOpCode (\r
405 IN EFI_QUESTION_ID QuestionId,\r
406 IN EFI_VARSTORE_ID VarStoreId,\r
407 IN UINT16 VarOffset,\r
408 IN EFI_STRING_ID Prompt,\r
409 IN EFI_STRING_ID Help,\r
410 IN UINT8 QuestionFlags,\r
411 IN UINT8 StringFlags,\r
412 IN UINT8 MinSize,\r
413 IN UINT8 MaxSize,\r
414 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 415 )\r
416/*++\r
417\r
418Routine Description:\r
7d582d6b 419 Create EFI_IFR_STRING_OP opcode.\r
fb3df220 420\r
fb3df220 421Arguments:\r
7d582d6b 422 QuestionId - Question ID\r
423 VarStoreId - Storage ID\r
424 VarOffset - Offset in Storage\r
425 Prompt - String ID for Prompt\r
426 Help - String ID for Help\r
427 QuestionFlags - Flags in Question Header\r
428 StringFlags - Flags for string opcode\r
429 MinSize - String minimum length\r
430 MaxSize - String maximum length\r
431 Data - Destination for the created opcode binary\r
fb3df220 432\r
7d582d6b 433Returns:\r
434 EFI_SUCCESS - Opcode create success\r
fb3df220 435\r
436--*/\r
437;\r
438\r
439EFI_STATUS\r
7d582d6b 440CreateBannerOpCode (\r
441 IN EFI_STRING_ID Title,\r
442 IN UINT16 LineNumber,\r
443 IN UINT8 Alignment,\r
444 IN OUT EFI_HII_UPDATE_DATA *Data\r
fb3df220 445 )\r
446/*++\r
447\r
448Routine Description:\r
7d582d6b 449 Create GUIDed opcode for banner.\r
fb3df220 450\r
fb3df220 451Arguments:\r
7d582d6b 452 Title - String ID for title\r
453 LineNumber - Line number for this banner\r
454 Alignment - Alignment for this banner, left, center or right\r
455 Data - Destination for the created opcode binary\r
fb3df220 456\r
7d582d6b 457Returns:\r
458 EFI_SUCCESS - Opcode create success\r
fb3df220 459\r
460--*/\r
461;\r
462\r
7d582d6b 463EFI_HII_PACKAGE_LIST_HEADER *\r
464PreparePackageList (\r
465 IN UINTN NumberOfPackages,\r
466 IN EFI_GUID *GuidId,\r
467 ...\r
fb3df220 468 )\r
469/*++\r
470\r
471Routine Description:\r
7d582d6b 472 Assemble EFI_HII_PACKAGE_LIST according to the passed in packages.\r
fb3df220 473\r
fb3df220 474Arguments:\r
7d582d6b 475 NumberOfPackages - Number of packages.\r
476 GuidId - Package GUID.\r
fb3df220 477\r
7d582d6b 478Returns:\r
479 Pointer of EFI_HII_PACKAGE_LIST_HEADER.\r
fb3df220 480\r
481--*/\r
482;\r
483\r
7d582d6b 484EFI_HII_HANDLE\r
485DevicePathToHiiHandle (\r
486 IN EFI_HII_DATABASE_PROTOCOL *HiiDatabase,\r
487 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
fb3df220 488 )\r
489/*++\r
490\r
491Routine Description:\r
7d582d6b 492 Find HII Handle associated with given Device Path.\r
fb3df220 493\r
fb3df220 494Arguments:\r
7d582d6b 495 HiiDatabase - Point to EFI_HII_DATABASE_PROTOCOL instance.\r
496 DevicePath - Device Path associated with the HII package list handle.\r
497\r
498Returns:\r
499 Handle - HII package list Handle associated with the Device Path.\r
500 NULL - Hii Package list handle is not found.\r
fb3df220 501\r
fb3df220 502--*/\r
503;\r
504\r
7d582d6b 505EFI_STATUS\r
506ExtractDefault(\r
507 IN VOID *Buffer,\r
508 IN UINTN *BufferSize,\r
509 UINTN Number,\r
510 ...\r
fb3df220 511 )\r
512/*++\r
513\r
7d582d6b 514 Routine Description:\r
515 Configure the buffer accrording to ConfigBody strings.\r
fb3df220 516\r
7d582d6b 517 Arguments:\r
518 DefaultId - the ID of default.\r
519 Buffer - the start address of buffer.\r
520 BufferSize - the size of buffer.\r
521 Number - the number of the strings.\r
fb3df220 522\r
7d582d6b 523 Returns:\r
524 EFI_BUFFER_TOO_SMALL - the BufferSize is too small to operate.\r
525 EFI_INVALID_PARAMETER - Buffer is NULL or BufferSize is 0.\r
526 EFI_SUCCESS - Operation successful.\r
fb3df220 527\r
528--*/\r
529;\r
530\r
531EFI_STATUS\r
7d582d6b 532ExtractGuidFromHiiHandle (\r
533 IN EFI_HII_HANDLE Handle,\r
534 OUT EFI_GUID *Guid\r
fb3df220 535 )\r
536/*++\r
537\r
538Routine Description:\r
7d582d6b 539 Extract Hii package list GUID for given HII handle.\r
fb3df220 540\r
fb3df220 541Arguments:\r
7d582d6b 542 HiiHandle - Hii handle\r
543 Guid - Package list GUID\r
fb3df220 544\r
7d582d6b 545Returns:\r
546 EFI_SUCCESS - Successfully extract GUID from Hii database.\r
fb3df220 547\r
548--*/\r
549;\r
550\r
551EFI_STATUS\r
7d582d6b 552BufferToHexString (\r
553 IN OUT CHAR16 *Str,\r
554 IN UINT8 *Buffer,\r
555 IN UINTN BufferSize\r
fb3df220 556 )\r
557/*++\r
558\r
559Routine Description:\r
7d582d6b 560 Converts binary buffer to Unicode string in reversed byte order to BufToHexString().\r
fb3df220 561\r
fb3df220 562Arguments:\r
7d582d6b 563 Str - String for output\r
564 Buffer - Binary buffer.\r
565 BufferSize - Size of the buffer in bytes.\r
fb3df220 566\r
7d582d6b 567Returns:\r
568 EFI_SUCCESS - The function completed successfully.\r
fb3df220 569\r
570--*/\r
571;\r
572\r
573EFI_STATUS\r
7d582d6b 574HexStringToBuffer (\r
575 IN OUT UINT8 *Buffer,\r
576 IN OUT UINTN *BufferSize,\r
577 IN CHAR16 *Str\r
fb3df220 578 )\r
579/*++\r
580\r
581Routine Description:\r
7d582d6b 582 Converts Hex String to binary buffer in reversed byte order to HexStringToBuf().\r
fb3df220 583\r
fb3df220 584Arguments:\r
7d582d6b 585 Buffer - Pointer to buffer that receives the data.\r
586 BufferSize - Length in bytes of the buffer to hold converted data.\r
587 If routine return with EFI_SUCCESS, containing length of converted data.\r
588 If routine return with EFI_BUFFER_TOO_SMALL, containg length of buffer desired.\r
589 Str - String to be converted from.\r
fb3df220 590\r
7d582d6b 591Returns:\r
592 EFI_SUCCESS - The function completed successfully.\r
fb3df220 593\r
594--*/\r
595;\r
596\r
597EFI_STATUS\r
7d582d6b 598ConstructConfigHdr (\r
599 IN OUT CHAR16 *ConfigHdr,\r
600 IN OUT UINTN *StrBufferLen,\r
601 IN EFI_GUID *Guid,\r
602 IN CHAR16 *Name, OPTIONAL\r
603 IN EFI_HANDLE *DriverHandle\r
fb3df220 604 )\r
605/*++\r
606\r
607Routine Description:\r
7d582d6b 608 Construct <ConfigHdr> using routing information GUID/NAME/PATH.\r
fb3df220 609\r
fb3df220 610Arguments:\r
7d582d6b 611 ConfigHdr - Pointer to the ConfigHdr string.\r
612 StrBufferLen - On input: Length in bytes of buffer to hold the ConfigHdr string. Includes tailing '\0' character.\r
613 On output:\r
614 If return EFI_SUCCESS, containing length of ConfigHdr string buffer.\r
615 If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.\r
616 Guid - Routing information: GUID.\r
617 Name - Routing information: NAME.\r
618 DriverHandle - Driver handle which contains the routing information: PATH.\r
fb3df220 619\r
7d582d6b 620Returns:\r
621 EFI_SUCCESS - Routine success.\r
622 EFI_BUFFER_TOO_SMALL - The ConfigHdr string buffer is too small.\r
fb3df220 623\r
624--*/\r
625;\r
626\r
7d582d6b 627BOOLEAN\r
628FindBlockName (\r
629 IN OUT CHAR16 *String,\r
630 UINTN Offset,\r
631 UINTN Width\r
fb3df220 632 )\r
633/*++\r
634\r
635Routine Description:\r
7d582d6b 636 Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string.\r
fb3df220 637\r
fb3df220 638Arguments:\r
7d582d6b 639 String - The string to be searched in.\r
640 Offset - Offset in BlockName.\r
641 Width - Width in BlockName.\r
fb3df220 642\r
7d582d6b 643Returns:\r
644 TRUE - Block name found.\r
645 FALSE - Block name not found.\r
fb3df220 646\r
647--*/\r
648;\r
649\r
650EFI_STATUS\r
7d582d6b 651GetBrowserData (\r
652 EFI_GUID *VariableGuid, OPTIONAL\r
653 CHAR16 *VariableName, OPTIONAL\r
654 UINTN *BufferSize,\r
655 UINT8 *Buffer\r
fb3df220 656 )\r
657/*++\r
658\r
659Routine Description:\r
7d582d6b 660 This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser.\r
fb3df220 661\r
fb3df220 662Arguments:\r
7d582d6b 663 VariableGuid - An optional field to indicate the target variable GUID name to use.\r
664 VariableName - An optional field to indicate the target human-readable variable name.\r
665 BufferSize - On input: Length in bytes of buffer to hold retrived data.\r
666 On output:\r
667 If return EFI_BUFFER_TOO_SMALL, containg length of buffer desired.\r
668 Buffer - Buffer to hold retrived data.\r
fb3df220 669\r
7d582d6b 670Returns:\r
671 EFI_SUCCESS - Routine success.\r
672 EFI_BUFFER_TOO_SMALL - The intput buffer is too small.\r
fb3df220 673\r
674--*/\r
675;\r
676\r
677EFI_STATUS\r
7d582d6b 678GetHiiHandles (\r
679 IN OUT UINTN *HandleBufferLength,\r
680 OUT EFI_HII_HANDLE **HiiHandleBuffer\r
fb3df220 681 )\r
682/*++\r
683\r
684Routine Description:\r
7d582d6b 685 Determines the handles that are currently active in the database.\r
686 It's the caller's responsibility to free handle buffer.\r
fb3df220 687\r
fb3df220 688Arguments:\r
7d582d6b 689 HiiDatabase - A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
690 HandleBufferLength - On input, a pointer to the length of the handle buffer. On output,\r
691 the length of the handle buffer that is required for the handles found.\r
692 HiiHandleBuffer - Pointer to an array of Hii Handles returned.\r
fb3df220 693\r
7d582d6b 694Returns:\r
695 EFI_SUCCESS - Get an array of Hii Handles successfully.\r
696 EFI_INVALID_PARAMETER - Hii is NULL.\r
697 EFI_NOT_FOUND - Database not found.\r
fb3df220 698\r
699--*/\r
700;\r
701\r
702EFI_STATUS\r
7d582d6b 703SetBrowserData (\r
704 EFI_GUID *VariableGuid, OPTIONAL\r
705 CHAR16 *VariableName, OPTIONAL\r
706 UINTN BufferSize,\r
707 UINT8 *Buffer,\r
708 CHAR16 *RequestElement OPTIONAL\r
fb3df220 709 )\r
710/*++\r
711\r
712Routine Description:\r
7d582d6b 713 This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser.\r
fb3df220 714\r
fb3df220 715Arguments:\r
7d582d6b 716 VariableGuid - An optional field to indicate the target variable GUID name to use.\r
717 VariableName - An optional field to indicate the target human-readable variable name.\r
718 BufferSize - Length in bytes of buffer to hold retrived data.\r
719 Buffer - Buffer to hold retrived data.\r
720 RequestElement - An optional field to specify which part of the buffer data\r
721 will be send back to Browser. If NULL, the whole buffer of\r
722 data will be committed to Browser.\r
723 <RequestElement> ::= &OFFSET=<Number>&WIDTH=<Number>*\r
fb3df220 724\r
7d582d6b 725Returns:\r
726 EFI_SUCCESS - Routine success.\r
727 Other - Updating Browser uncommitted data failed.\r
fb3df220 728\r
729--*/\r
730;\r
731\r
732EFI_STATUS\r
7d582d6b 733ConvertRfc3066LanguageToIso639Language (\r
734 CHAR8 *LanguageRfc3066,\r
735 CHAR8 *LanguageIso639\r
fb3df220 736 )\r
737/*++\r
738\r
739Routine Description:\r
7d582d6b 740 Convert language code from RFC3066 to ISO639-2.\r
fb3df220 741\r
fb3df220 742Arguments:\r
7d582d6b 743 LanguageRfc3066 - RFC3066 language code.\r
744 LanguageIso639 - ISO639-2 language code.\r
fb3df220 745\r
7d582d6b 746Returns:\r
747 EFI_SUCCESS - Language code converted.\r
748 EFI_NOT_FOUND - Language code not found.\r
fb3df220 749\r
fb3df220 750--*/\r
751;\r
752\r
7d582d6b 753CHAR8 *\r
754Rfc3066ToIso639 (\r
755 CHAR8 *SupportedLanguages\r
fb3df220 756 )\r
757/*++\r
758\r
759Routine Description:\r
7d582d6b 760 Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will\r
761 be converted to "engfra".\r
fb3df220 762\r
fb3df220 763Arguments:\r
7d582d6b 764 SupportedLanguages - The RFC3066 language list.\r
fb3df220 765\r
7d582d6b 766Returns:\r
767 The ISO639-2 language list.\r
fb3df220 768\r
769--*/\r
770;\r
771\r
7d582d6b 772EFI_STATUS\r
773GetCurrentLanguage (\r
774 OUT CHAR8 *Lang\r
775 )\r
fb3df220 776/*++\r
777\r
778Routine Description:\r
7d582d6b 779 Determine what is the current language setting\r
fb3df220 780\r
781Arguments:\r
7d582d6b 782 Lang - Pointer of system language\r
fb3df220 783\r
7d582d6b 784Returns:\r
785 Status code\r
fb3df220 786\r
787--*/\r
788;\r
789\r
7d582d6b 790VOID\r
791GetNextLanguage (\r
792 IN OUT CHAR8 **LangCode,\r
793 OUT CHAR8 *Lang\r
fb3df220 794 )\r
795/*++\r
796\r
797Routine Description:\r
7d582d6b 798 Get next language from language code list.\r
fb3df220 799\r
800Arguments:\r
7d582d6b 801 LangCode - The language code.\r
802 Lang - Returned language.\r
fb3df220 803\r
7d582d6b 804Returns:\r
805 None.\r
fb3df220 806\r
807--*/\r
808;\r
809\r
7d582d6b 810CHAR8 *\r
811GetSupportedLanguages (\r
812 IN EFI_HII_HANDLE HiiHandle\r
813 )\r
fb3df220 814/*++\r
815\r
816Routine Description:\r
7d582d6b 817 This function returns the list of supported languages, in the format specified\r
818