]>
Commit | Line | Data |
---|---|---|
7d582d6b | 1 | /*++\r |
2 | \r | |
3 | Copyright (c) 2007, Intel Corporation\r | |
4 | All rights reserved. This program and the accompanying materials\r | |
5 | are licensed and made available under the terms and conditions of the BSD License\r | |
6 | which accompanies this distribution. The full text of the license may be found at\r | |
7 | http://opensource.org/licenses/bsd-license.php\r | |
8 | \r | |
9 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
10 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
11 | \r | |
12 | Module Name:\r | |
13 | \r | |
14 | UefiIfrLibrary.h\r | |
15 | \r | |
16 | Abstract:\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 | |
66 | extern EFI_HII_DATABASE_PROTOCOL *gIfrLibHiiDatabase;\r | |
67 | extern EFI_HII_STRING_PROTOCOL *gIfrLibHiiString;\r | |
fb3df220 | 68 | \r |
69 | #pragma pack(1)\r | |
70 | typedef 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 | 77 | typedef 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 | 100 | EFI_STATUS\r |
7d582d6b | 101 | CreateEndOpCode (\r |
102 | IN OUT EFI_HII_UPDATE_DATA *Data\r | |
fb3df220 | 103 | )\r |
104 | /*++\r | |
105 | \r | |
106 | Routine Description:\r | |
7d582d6b | 107 | Create EFI_IFR_END_OP opcode.\r |
fb3df220 | 108 | \r |
fb3df220 | 109 | Arguments:\r |
7d582d6b | 110 | Data - Destination for the created opcode binary\r |
fb3df220 | 111 | \r |
7d582d6b | 112 | Returns:\r |
113 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 114 | \r |
115 | --*/\r | |
116 | ;\r | |
117 | \r | |
118 | EFI_STATUS\r | |
7d582d6b | 119 | CreateDefaultOpCode (\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 | |
126 | Routine Description:\r | |
7d582d6b | 127 | Create EFI_IFR_DEFAULT_OP opcode.\r |
fb3df220 | 128 | \r |
fb3df220 | 129 | Arguments:\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 | 134 | Returns:\r |
135 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 136 | \r |
137 | --*/\r | |
138 | ;\r | |
139 | \r | |
140 | EFI_STATUS\r | |
7d582d6b | 141 | CreateActionOpCode (\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 | |
151 | Routine Description:\r | |
7d582d6b | 152 | Create EFI_IFR_ACTION_OP opcode.\r |
fb3df220 | 153 | \r |
fb3df220 | 154 | Arguments:\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 | 162 | Returns:\r |
163 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 164 | \r |
165 | --*/\r | |
166 | ;\r | |
167 | \r | |
168 | EFI_STATUS\r | |
7d582d6b | 169 | CreateSubTitleOpCode (\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 | |
178 | Routine Description:\r | |
7d582d6b | 179 | Create EFI_IFR_SUBTITLE_OP opcode.\r |
fb3df220 | 180 | \r |
fb3df220 | 181 | Arguments:\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 | 188 | Returns:\r |
189 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 190 | \r |
191 | --*/\r | |
192 | ;\r | |
193 | \r | |
194 | EFI_STATUS\r | |
7d582d6b | 195 | CreateTextOpCode (\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 | |
203 | Routine Description:\r | |
7d582d6b | 204 | Create EFI_IFR_TEXT_OP opcode.\r |
fb3df220 | 205 | \r |
fb3df220 | 206 | Arguments:\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 | 212 | Returns:\r |
213 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 214 | \r |
215 | --*/\r | |
216 | ;\r | |
217 | \r | |
218 | EFI_STATUS\r | |
7d582d6b | 219 | CreateGotoOpCode (\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 | |
229 | Routine Description:\r | |
7d582d6b | 230 | Create EFI_IFR_REF_OP opcode.\r |
fb3df220 | 231 | \r |
fb3df220 | 232 | Arguments:\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 | 240 | Returns:\r |
241 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 242 | \r |
243 | --*/\r | |
244 | ;\r | |
245 | \r | |
246 | EFI_STATUS\r | |
7d582d6b | 247 | CreateOneOfOptionOpCode (\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 | |
255 | EFI_STATUS\r | |
256 | CreateOneOfOpCode (\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 | |
270 | Routine Description:\r | |
7d582d6b | 271 | Create EFI_IFR_ONE_OF_OP opcode.\r |
fb3df220 | 272 | \r |
fb3df220 | 273 | Arguments:\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 | 285 | Returns:\r |
286 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 287 | \r |
288 | --*/\r | |
289 | ;\r | |
290 | \r | |
291 | EFI_STATUS\r | |
7d582d6b | 292 | CreateOrderedListOpCode (\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 | |
308 | Routine Description:\r | |
7d582d6b | 309 | Create EFI_IFR_ORDERED_LIST_OP opcode.\r |
fb3df220 | 310 | \r |
fb3df220 | 311 | Arguments:\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 | 325 | Returns:\r |
326 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 327 | \r |
328 | --*/\r | |
329 | ;\r | |
330 | \r | |
331 | EFI_STATUS\r | |
7d582d6b | 332 | CreateCheckBoxOpCode (\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 | |
344 | Routine Description:\r | |
7d582d6b | 345 | Create EFI_IFR_CHECKBOX_OP opcode.\r |
fb3df220 | 346 | \r |
fb3df220 | 347 | Arguments:\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 | 357 | Returns:\r |
358 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 359 | \r |
360 | --*/\r | |
361 | ;\r | |
362 | \r | |
363 | EFI_STATUS\r | |
7d582d6b | 364 | CreateNumericOpCode (\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 | |
380 | Routine Description:\r | |
7d582d6b | 381 | Create EFI_IFR_NUMERIC_OP opcode.\r |
fb3df220 | 382 | \r |
fb3df220 | 383 | Arguments:\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 | 397 | Returns:\r |
398 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 399 | \r |
400 | --*/\r | |
401 | ;\r | |
402 | \r | |
403 | EFI_STATUS\r | |
7d582d6b | 404 | CreateStringOpCode (\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 | |
418 | Routine Description:\r | |
7d582d6b | 419 | Create EFI_IFR_STRING_OP opcode.\r |
fb3df220 | 420 | \r |
fb3df220 | 421 | Arguments:\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 | 433 | Returns:\r |
434 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 435 | \r |
436 | --*/\r | |
437 | ;\r | |
438 | \r | |
439 | EFI_STATUS\r | |
7d582d6b | 440 | CreateBannerOpCode (\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 | |
448 | Routine Description:\r | |
7d582d6b | 449 | Create GUIDed opcode for banner.\r |
fb3df220 | 450 | \r |
fb3df220 | 451 | Arguments:\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 | 457 | Returns:\r |
458 | EFI_SUCCESS - Opcode create success\r | |
fb3df220 | 459 | \r |
460 | --*/\r | |
461 | ;\r | |
462 | \r | |
7d582d6b | 463 | EFI_HII_PACKAGE_LIST_HEADER *\r |
464 | PreparePackageList (\r | |
465 | IN UINTN NumberOfPackages,\r | |
466 | IN EFI_GUID *GuidId,\r | |
467 | ...\r | |
fb3df220 | 468 | )\r |
469 | /*++\r | |
470 | \r | |
471 | Routine Description:\r | |
7d582d6b | 472 | Assemble EFI_HII_PACKAGE_LIST according to the passed in packages.\r |
fb3df220 | 473 | \r |
fb3df220 | 474 | Arguments:\r |
7d582d6b | 475 | NumberOfPackages - Number of packages.\r |
476 | GuidId - Package GUID.\r | |
fb3df220 | 477 | \r |
7d582d6b | 478 | Returns:\r |
479 | Pointer of EFI_HII_PACKAGE_LIST_HEADER.\r | |
fb3df220 | 480 | \r |
481 | --*/\r | |
482 | ;\r | |
483 | \r | |
7d582d6b | 484 | EFI_HII_HANDLE\r |
485 | DevicePathToHiiHandle (\r | |
486 | IN EFI_HII_DATABASE_PROTOCOL *HiiDatabase,\r | |
487 | IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r | |
fb3df220 | 488 | )\r |
489 | /*++\r | |
490 | \r | |
491 | Routine Description:\r | |
7d582d6b | 492 | Find HII Handle associated with given Device Path.\r |
fb3df220 | 493 | \r |
fb3df220 | 494 | Arguments:\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 | |
498 | Returns:\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 | 505 | EFI_STATUS\r |
506 | ExtractDefault(\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 | |
531 | EFI_STATUS\r | |
7d582d6b | 532 | ExtractGuidFromHiiHandle (\r |
533 | IN EFI_HII_HANDLE Handle,\r | |
534 | OUT EFI_GUID *Guid\r | |
fb3df220 | 535 | )\r |
536 | /*++\r | |
537 | \r | |
538 | Routine Description:\r | |
7d582d6b | 539 | Extract Hii package list GUID for given HII handle.\r |
fb3df220 | 540 | \r |
fb3df220 | 541 | Arguments:\r |
7d582d6b | 542 | HiiHandle - Hii handle\r |
543 | Guid - Package list GUID\r | |
fb3df220 | 544 | \r |
7d582d6b | 545 | Returns:\r |
546 | EFI_SUCCESS - Successfully extract GUID from Hii database.\r | |
fb3df220 | 547 | \r |
548 | --*/\r | |
549 | ;\r | |
550 | \r | |
551 | EFI_STATUS\r | |
7d582d6b | 552 | BufferToHexString (\r |
553 | IN OUT CHAR16 *Str,\r | |
554 | IN UINT8 *Buffer,\r | |
555 | IN UINTN BufferSize\r | |
fb3df220 | 556 | )\r |
557 | /*++\r | |
558 | \r | |
559 | Routine Description:\r | |
7d582d6b | 560 | Converts binary buffer to Unicode string in reversed byte order to BufToHexString().\r |
fb3df220 | 561 | \r |
fb3df220 | 562 | Arguments:\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 | 567 | Returns:\r |
568 | EFI_SUCCESS - The function completed successfully.\r | |
fb3df220 | 569 | \r |
570 | --*/\r | |
571 | ;\r | |
572 | \r | |
573 | EFI_STATUS\r | |
7d582d6b | 574 | HexStringToBuffer (\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 | |
581 | Routine Description:\r | |
7d582d6b | 582 | Converts Hex String to binary buffer in reversed byte order to HexStringToBuf().\r |
fb3df220 | 583 | \r |
fb3df220 | 584 | Arguments:\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 | 591 | Returns:\r |
592 | EFI_SUCCESS - The function completed successfully.\r | |
fb3df220 | 593 | \r |
594 | --*/\r | |
595 | ;\r | |
596 | \r | |
597 | EFI_STATUS\r | |
7d582d6b | 598 | ConstructConfigHdr (\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 | |
607 | Routine Description:\r | |
7d582d6b | 608 | Construct <ConfigHdr> using routing information GUID/NAME/PATH.\r |
fb3df220 | 609 | \r |
fb3df220 | 610 | Arguments:\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 | 620 | Returns:\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 | 627 | BOOLEAN\r |
628 | FindBlockName (\r | |
629 | IN OUT CHAR16 *String,\r | |
630 | UINTN Offset,\r | |
631 | UINTN Width\r | |
fb3df220 | 632 | )\r |
633 | /*++\r | |
634 | \r | |
635 | Routine Description:\r | |
7d582d6b | 636 | Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string.\r |
fb3df220 | 637 | \r |
fb3df220 | 638 | Arguments:\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 | 643 | Returns:\r |
644 | TRUE - Block name found.\r | |
645 | FALSE - Block name not found.\r | |
fb3df220 | 646 | \r |
647 | --*/\r | |
648 | ;\r | |
649 | \r | |
650 | EFI_STATUS\r | |
7d582d6b | 651 | GetBrowserData (\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 | |
659 | Routine Description:\r | |
7d582d6b | 660 | This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser.\r |
fb3df220 | 661 | \r |
fb3df220 | 662 | Arguments:\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 | 670 | Returns:\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 | |
677 | EFI_STATUS\r | |
7d582d6b | 678 | GetHiiHandles (\r |
679 | IN OUT UINTN *HandleBufferLength,\r | |
680 | OUT EFI_HII_HANDLE **HiiHandleBuffer\r | |
fb3df220 | 681 | )\r |
682 | /*++\r | |
683 | \r | |
684 | Routine 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 | 688 | Arguments:\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 | 694 | Returns:\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 | |
702 | EFI_STATUS\r | |
7d582d6b | 703 | SetBrowserData (\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 | |
712 | Routine Description:\r | |
7d582d6b | 713 | This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser.\r |
fb3df220 | 714 | \r |
fb3df220 | 715 | Arguments:\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 | 725 | Returns:\r |
726 | EFI_SUCCESS - Routine success.\r | |
727 | Other - Updating Browser uncommitted data failed.\r | |
fb3df220 | 728 | \r |
729 | --*/\r | |
730 | ;\r | |
731 | \r | |
732 | EFI_STATUS\r | |
7d582d6b | 733 | ConvertRfc3066LanguageToIso639Language (\r |
734 | CHAR8 *LanguageRfc3066,\r | |
735 | CHAR8 *LanguageIso639\r | |
fb3df220 | 736 | )\r |
737 | /*++\r | |
738 | \r | |
739 | Routine Description:\r | |
7d582d6b | 740 | Convert language code from RFC3066 to ISO639-2.\r |
fb3df220 | 741 | \r |
fb3df220 | 742 | Arguments:\r |
7d582d6b | 743 | LanguageRfc3066 - RFC3066 language code.\r |
744 | LanguageIso639 - ISO639-2 language code.\r | |
fb3df220 | 745 | \r |
7d582d6b | 746 | Returns:\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 | 753 | CHAR8 *\r |
754 | Rfc3066ToIso639 (\r | |
755 | CHAR8 *SupportedLanguages\r | |
fb3df220 | 756 | )\r |
757 | /*++\r | |
758 | \r | |
759 | Routine 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 | 763 | Arguments:\r |
7d582d6b | 764 | SupportedLanguages - The RFC3066 language list.\r |
fb3df220 | 765 | \r |
7d582d6b | 766 | Returns:\r |
767 | The ISO639-2 language list.\r | |
fb3df220 | 768 | \r |
769 | --*/\r | |
770 | ;\r | |
771 | \r | |
7d582d6b | 772 | EFI_STATUS\r |
773 | GetCurrentLanguage (\r | |
774 | OUT CHAR8 *Lang\r | |
775 | )\r | |
fb3df220 | 776 | /*++\r |
777 | \r | |
778 | Routine Description:\r | |
7d582d6b | 779 | Determine what is the current language setting\r |
fb3df220 | 780 | \r |
781 | Arguments:\r | |
7d582d6b | 782 | Lang - Pointer of system language\r |
fb3df220 | 783 | \r |
7d582d6b | 784 | Returns:\r |
785 | Status code\r | |
fb3df220 | 786 | \r |
787 | --*/\r | |
788 | ;\r | |
789 | \r | |
7d582d6b | 790 | VOID\r |
791 | GetNextLanguage (\r | |
792 | IN OUT CHAR8 **LangCode,\r | |
793 | OUT CHAR8 *Lang\r | |
fb3df220 | 794 | )\r |
795 | /*++\r | |
796 | \r | |
797 | Routine Description:\r | |
7d582d6b | 798 | Get next language from language code list.\r |
fb3df220 | 799 | \r |
800 | Arguments:\r | |
7d582d6b | 801 | LangCode - The language code.\r |
802 | Lang - Returned language.\r | |
fb3df220 | 803 | \r |
7d582d6b | 804 | Returns:\r |
805 | None.\r | |
fb3df220 | 806 | \r |
807 | --*/\r | |
808 | ;\r | |
809 | \r | |
7d582d6b | 810 | CHAR8 *\r |
811 | GetSupportedLanguages (\r | |
812 | IN EFI_HII_HANDLE HiiHandle\r | |
813 | )\r | |
fb3df220 | 814 | /*++\r |
815 | \r | |
816 | Routine Description:\r | |
7d582d6b | 817 | This function returns the list of supported languages, in the format specified\r |
818 |