Add more comments for IntelFramework's header files.
[mirror_edk2.git] / IntelFrameworkPkg / Include / Library / FrameworkIfrSupportLib.h
CommitLineData
cf7e50f8 1/** @file\r
4a71b21a 2 Library class name: FrameworkIfrSupportLib\r
df298090 3\r
4a71b21a 4 FrameworkIfrSupportLib is designed for produce IFR operation interface .\r
5 The IFR format follows framework specification.\r
6 \r
df298090 7Copyright (c) 2006, Intel Corporation \r
8All rights reserved. This program and the accompanying materials \r
9are licensed and made available under the terms and conditions of the BSD License \r
10which accompanies this distribution. The full text of the license may be found at \r
11http://opensource.org/licenses/bsd-license.php \r
12 \r
13THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
14WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
15\r
cf7e50f8 16**/\r
df298090 17\r
18#ifndef _IFRSUPPORTLIBRARY_H\r
19#define _IFRSUPPORTLIBRARY_H\r
20\r
21#define DEFAULT_FORM_BUFFER_SIZE 0xFFFF\r
22#define DEFAULT_STRING_BUFFER_SIZE 0xFFFF\r
23\r
24#pragma pack(1)\r
25typedef struct {\r
26 CHAR16 *OptionString; // Passed in string to generate a token for in a truly dynamic form creation\r
27 STRING_REF StringToken; // This is used when creating a single op-code without generating a StringToken (have one already)\r
28 UINT16 Value;\r
29 UINT8 Flags;\r
30 UINT16 Key;\r
31} IFR_OPTION;\r
32#pragma pack()\r
33\r
34EFI_STATUS\r
35GetCurrentLanguage (\r
36 OUT CHAR16 *Lang\r
37 )\r
38/*++\r
39\r
40Routine Description:\r
41\r
42 Determine what is the current language setting\r
43 \r
44Arguments:\r
45\r
46 Lang - Pointer of system language\r
47 \r
48Returns: \r
49 \r
50 Status code\r
51\r
52--*/\r
53;\r
54\r
55EFI_STATUS\r
56AddString (\r
57 IN VOID *StringBuffer,\r
58 IN CHAR16 *Language,\r
59 IN CHAR16 *String,\r
60 IN OUT STRING_REF *StringToken\r
61 )\r
62/*++\r
63\r
64Routine Description:\r
65\r
66 Add a string to the incoming buffer and return the token and offset data\r
67 \r
68Arguments:\r
69\r
70 StringBuffer - The incoming buffer\r
71 \r
72 Language - Currrent language\r
73 \r
74 String - The string to be added\r
75 \r
76 StringToken - The index where the string placed\r
77 \r
78Returns: \r
79\r
80 EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
81 \r
82 EFI_SUCCESS - String successfully added to the incoming buffer\r
83\r
84--*/\r
85;\r
86\r
87EFI_STATUS\r
88AddOpCode (\r
89 IN VOID *FormBuffer,\r
90 IN OUT VOID *OpCodeData\r
91 )\r
92/*++\r
93\r
94Routine Description:\r
95\r
96 Add op-code data to the FormBuffer\r
97 \r
98Arguments:\r
99\r
100 FormBuffer - Form buffer to be inserted to\r
101 \r
102 OpCodeData - Op-code data to be inserted\r
103 \r
104Returns: \r
105\r
106 EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
107 \r
108 EFI_SUCCESS - Op-code data successfully inserted\r
109\r
110--*/\r
111;\r
112\r
113EFI_STATUS\r
114CreateFormSet (\r
115 IN CHAR16 *FormSetTitle,\r
116 IN EFI_GUID *Guid,\r
117 IN UINT8 Class,\r
118 IN UINT8 SubClass,\r
119 IN OUT VOID **FormBuffer,\r
120 IN OUT VOID **StringBuffer\r
121 )\r
122/*++\r
123\r
124Routine Description:\r
125\r
126 Create a formset\r
127 \r
128Arguments:\r
129\r
130 FormSetTitle - Title of formset\r
131 \r
132 Guid - Guid of formset\r
133 \r
134 Class - Class of formset\r
135 \r
136 SubClass - Sub class of formset\r
137 \r
138 FormBuffer - Pointer of the formset created\r
139 \r
140 StringBuffer - Pointer of FormSetTitile string created\r
141 \r
142Returns: \r
143\r
144 EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
145 \r
146 EFI_SUCCESS - Formset successfully created\r
147\r
148--*/\r
149;\r
150\r
151EFI_STATUS\r
152CreateForm (\r
153 IN CHAR16 *FormTitle,\r
154 IN UINT16 FormId,\r
155 IN OUT VOID *FormBuffer,\r
156 IN OUT VOID *StringBuffer\r
157 )\r
158/*++\r
159\r
160Routine Description:\r
161\r
162 Create a form\r
163 \r
164Arguments:\r
165\r
166 FormTitle - Title of the form\r
167 \r
168 FormId - Id of the form\r
169 \r
170 FormBuffer - Pointer of the form created\r
171 \r
172 StringBuffer - Pointer of FormTitil string created\r
173 \r
174Returns: \r
175\r
176 EFI_SUCCESS - Form successfully created\r
177\r
178--*/\r
179;\r
180\r
181EFI_STATUS\r
182CreateSubTitle (\r
183 IN CHAR16 *SubTitle,\r
184 IN OUT VOID *FormBuffer,\r
185 IN OUT VOID *StringBuffer\r
186 )\r
187/*++\r
188\r
189Routine Description:\r
190\r
191 Create a SubTitle\r
192 \r
193Arguments:\r
194\r
195 SubTitle - Sub title to be created\r
196 \r
197 FormBuffer - Where this subtitle to add to\r
198 \r
199 StringBuffer - String buffer created for subtitle\r
200 \r
201Returns: \r
202\r
203 EFI_SUCCESS - Subtitle successfully created\r
204\r
205--*/\r
206;\r
207\r
208EFI_STATUS\r
209CreateText (\r
210 IN CHAR16 *String,\r
211 IN CHAR16 *String2,\r
212 IN CHAR16 *String3,\r
213 IN UINT8 Flags,\r
214 IN UINT16 Key,\r
215 IN OUT VOID *FormBuffer,\r
216 IN OUT VOID *StringBuffer\r
217 )\r
218/*++\r
219\r
220Routine Description:\r
221\r
222 Create a line of text\r
223 \r
224Arguments:\r
225\r
226 String - First string of the text\r
227 \r
228 String2 - Second string of the text\r
229 \r
230 String3 - Help string of the text\r
231 \r
232 Flags - Flag of the text\r
233 \r
234 Key - Key of the text\r
235 \r
236 FormBuffer - The form where this text adds to\r
237 \r
238 StringBuffer - String buffer created for String, String2 and String3\r
239 \r
240Returns: \r
241\r
242 EFI_SUCCESS - Text successfully created\r
243\r
244--*/\r
245;\r
246\r
247EFI_STATUS\r
248CreateGoto (\r
249 IN UINT16 FormId,\r
250 IN CHAR16 *Prompt,\r
251 IN OUT VOID *FormBuffer,\r
252 IN OUT VOID *StringBuffer\r
253 )\r
254/*++\r
255\r
256Routine Description:\r
257\r
258 Create a hyperlink\r
259 \r
260Arguments:\r
261\r
262 FormId - Form ID of the hyperlink\r
263 \r
264 Prompt - Prompt of the hyperlink\r
265 \r
266 FormBuffer - The form where this hyperlink adds to\r
267 \r
268 StringBuffer - String buffer created for Prompt\r
269 \r
270Returns: \r
271\r
272 EFI_SUCCESS - Hyperlink successfully created\r
273\r
274--*/\r
275;\r
276\r
277EFI_STATUS\r
278CreateOneOf (\r
279 IN UINT16 QuestionId,\r
280 IN UINT8 DataWidth,\r
281 IN CHAR16 *Prompt,\r
282 IN CHAR16 *Help,\r
283 IN IFR_OPTION *OptionsList,\r
284 IN UINTN OptionCount,\r
285 IN OUT VOID *FormBuffer,\r
286 IN OUT VOID *StringBuffer\r
287 )\r
288/*++\r
289\r
290Routine Description:\r
291\r
292 Create a one-of question with a set of options to choose from. The\r
293 OptionsList is a pointer to a null-terminated list of option descriptions.\r
294 \r
295Arguments:\r
296\r
297 QuestionId - Question ID of the one-of box\r
298 \r
299 DataWidth - DataWidth of the one-of box\r
300 \r
301 Prompt - Prompt of the one-of box\r
302 \r
303 Help - Help of the one-of box\r
304 \r
305 OptionsList - Each string in it is an option of the one-of box\r
306 \r
307 OptionCount - Option string count\r
308 \r
309 FormBuffer - The form where this one-of box adds to\r
310 \r
311 StringBuffer - String buffer created for Prompt, Help and Option strings\r
312 \r
313Returns: \r
314\r
315 EFI_DEVICE_ERROR - DataWidth > 2\r
316\r
317 EFI_SUCCESS - One-Of box successfully created.\r
318\r
319--*/\r
320;\r
321\r
322EFI_STATUS\r
323CreateOrderedList (\r
324 IN UINT16 QuestionId,\r
325 IN UINT8 MaxEntries,\r
326 IN CHAR16 *Prompt,\r
327 IN CHAR16 *Help,\r
328 IN IFR_OPTION *OptionsList,\r
329 IN UINTN OptionCount,\r
330 IN OUT VOID *FormBuffer,\r
331 IN OUT VOID *StringBuffer\r
332 )\r
333/*++\r
334\r
335Routine Description:\r
336\r
337 Create a one-of question with a set of options to choose from. The\r
338 OptionsList is a pointer to a null-terminated list of option descriptions.\r
339 \r
340Arguments:\r
341\r
342 QuestionId - Question ID of the ordered list\r
343 \r
344 MaxEntries - MaxEntries of the ordered list\r
345 \r
346 Prompt - Prompt of the ordered list\r
347 \r
348 Help - Help of the ordered list\r
349 \r
350 OptionsList - Each string in it is an option of the ordered list\r
351 \r
352 OptionCount - Option string count\r
353 \r
354 FormBuffer - The form where this ordered list adds to\r
355 \r
356 StringBuffer - String buffer created for Prompt, Help and Option strings\r
357 \r
358Returns: \r
359\r
360 EFI_SUCCESS - Ordered list successfully created.\r
361\r
362--*/\r
363;\r
364\r
365EFI_STATUS\r
366CreateCheckBox (\r
367 IN UINT16 QuestionId,\r
368 IN UINT8 DataWidth,\r
369 IN CHAR16 *Prompt,\r
370 IN CHAR16 *Help,\r
371 IN UINT8 Flags,\r
372 IN OUT VOID *FormBuffer,\r
373 IN OUT VOID *StringBuffer\r
374 )\r
375/*++\r
376\r
377Routine Description:\r
378\r
379 Create a checkbox\r
380 \r
381Arguments:\r
382\r
383 QuestionId - Question ID of the check box\r
384 \r
385 DataWidth - DataWidth of the check box\r
386 \r
387 Prompt - Prompt of the check box\r
388 \r
389 Help - Help of the check box\r
390 \r
391 Flags - Flags of the check box\r
392 \r
393 FormBuffer - The form where this check box adds to\r
394 \r
395 StringBuffer - String buffer created for Prompt and Help.\r
396 \r
397Returns: \r
398\r
399 EFI_DEVICE_ERROR - DataWidth > 1\r
400\r
401 EFI_SUCCESS - Check box successfully created\r
402\r
403--*/\r
404;\r
405\r
406EFI_STATUS\r
407CreateNumeric (\r
408 IN UINT16 QuestionId,\r
409 IN UINT8 DataWidth,\r
410 IN CHAR16 *Prompt,\r
411 IN CHAR16 *Help,\r
412 IN UINT16 Minimum,\r
413 IN UINT16 Maximum,\r
414 IN UINT16 Step,\r
415 IN UINT16 Default,\r
416 IN UINT8 Flags,\r
417 IN UINT16 Key,\r
418 IN OUT VOID *FormBuffer,\r
419 IN OUT VOID *StringBuffer\r
420 )\r
421/*++\r
422\r
423Routine Description:\r
424\r
425 Create a numeric\r
426 \r
427Arguments:\r
428\r
429 QuestionId - Question ID of the numeric\r
430 \r
431 DataWidth - DataWidth of the numeric\r
432 \r
433 Prompt - Prompt of the numeric\r
434 \r
435 Help - Help of the numeric\r
436 \r
437 Minimum - Minumun boundary of the numeric\r
438 \r
439 Maximum - Maximum boundary of the numeric\r
440 \r
441 Step - Step of the numeric\r
442 \r
443 Default - Default value\r
444 \r
445 Flags - Flags of the numeric\r
446 \r
447 Key - Key of the numeric\r
448 \r
449 FormBuffer - The form where this numeric adds to\r
450 \r
451 StringBuffer - String buffer created for Prompt and Help.\r
452 \r
453Returns: \r
454\r
455 EFI_DEVICE_ERROR - DataWidth > 2\r
456 \r
457 EFI_SUCCESS - Numeric is successfully created\r
458\r
459--*/\r
460;\r
461\r
462EFI_STATUS\r
463CreateString (\r
464 IN UINT16 QuestionId,\r
465 IN UINT8 DataWidth,\r
466 IN CHAR16 *Prompt,\r
467 IN CHAR16 *Help,\r
468 IN UINT8 MinSize,\r
469 IN UINT8 MaxSize,\r
470 IN UINT8 Flags,\r
471 IN UINT16 Key,\r
472 IN OUT VOID *FormBuffer,\r
473 IN OUT VOID *StringBuffer\r
474 )\r
475/*++\r
476\r
477Routine Description:\r
478\r
479 Create a string\r
480 \r
481Arguments:\r
482\r
483 QuestionId - Question ID of the string\r
484 \r
485 DataWidth - DataWidth of the string\r
486 \r
487 Prompt - Prompt of the string\r
488 \r
489 Help - Help of the string\r
490 \r
491 MinSize - Min size boundary of the string\r
492 \r
493 MaxSize - Max size boundary of the string\r
494 \r
495 Flags - Flags of the string\r
496 \r
497 Key - Key of the string\r
498 \r
499 FormBuffer - The form where this string adds to\r
500 \r
501 StringBuffer - String buffer created for Prompt and Help.\r
502 \r
503Returns: \r
504\r
505 EFI_SUCCESS - String successfully created.\r
506\r
507--*/\r
508;\r
509\r
510EFI_STATUS\r
511ExtractDataFromHiiHandle (\r
dc7b4a5c 512 IN FRAMEWORK_EFI_HII_HANDLE HiiHandle,\r
df298090 513 IN OUT UINT16 *ImageLength,\r
514 OUT UINT8 *DefaultImage,\r
515 OUT EFI_GUID *Guid\r
516 )\r
517/*++\r
518\r
519Routine Description:\r
520\r
521 Extract information pertaining to the HiiHandle\r
522 \r
523Arguments:\r
524\r
525 HiiHandle - Hii handle\r
526 \r
527 ImageLength - For input, length of DefaultImage;\r
528 For output, length of actually required\r
529 \r
530 DefaultImage - Image buffer prepared by caller\r
531 \r
532 Guid - Guid information about the form\r
533 \r
534Returns: \r
535\r
536 EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
537 \r
538 EFI_BUFFER_TOO_SMALL - DefualtImage has no enough ImageLength\r
539 \r
540 EFI_SUCCESS - Successfully extract data from Hii database.\r
541 \r
542 \r
543--*/\r
544;\r
545\r
dc7b4a5c 546FRAMEWORK_EFI_HII_HANDLE \r
df298090 547FindHiiHandle (\r
548 IN OUT EFI_HII_PROTOCOL **HiiProtocol, OPTIONAL\r
549 IN EFI_GUID *Guid\r
550 )\r
551/*++\r
552\r
553Routine Description:\r
554 Finds HII handle for given pack GUID previously registered with the HII.\r
555\r
556Arguments:\r
557 HiiProtocol - pointer to pointer to HII protocol interface. \r
558 If NULL, the interface will be found but not returned.\r
559 If it points to NULL, the interface will be found and \r
560 written back to the pointer that is pointed to.\r
561 Guid - The GUID of the pack that registered with the HII.\r
562\r
563Returns:\r
564 Handle to the HII pack previously registered by the memory driver.\r
565\r
566--*/\r
567;\r
568\r
569EFI_STATUS\r
570CreateSubTitleOpCode (\r
571 IN STRING_REF StringToken,\r
572 IN OUT VOID *FormBuffer\r
573 )\r
574/*++\r
575\r
576Routine Description:\r
577\r
578 Create a SubTitle opcode independent of string creation\r
579 This is used primarily by users who need to create just one particular valid op-code and the string\r
580 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
581 location to pre-defined forms in HII)\r
582 \r
583Arguments:\r
584\r
585 StringToken - StringToken of the subtitle\r
586 \r
587 FormBuffer - Output of subtitle as a form\r
588 \r
589Returns: \r
590\r
591 EFI_SUCCESS - Subtitle created to be a form\r
592\r
593--*/\r
594;\r
595\r
596EFI_STATUS\r
597CreateTextOpCode (\r
598 IN STRING_REF StringToken,\r
599 IN STRING_REF StringTokenTwo,\r
600 IN STRING_REF StringTokenThree,\r
601 IN UINT8 Flags,\r
602 IN UINT16 Key,\r
603 IN OUT VOID *FormBuffer\r
604 )\r
605/*++\r
606\r
607Routine Description:\r
608\r
609 Create a Text opcode independent of string creation\r
610 This is used primarily by users who need to create just one particular valid op-code and the string\r
611 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
612 location to pre-defined forms in HII)\r
613 \r
614Arguments:\r
615\r
616 StringToken - First string token of the text\r
617 \r
618 StringTokenTwo - Second string token of the text\r
619 \r
620 StringTokenThree - Help string token of the text\r
621 \r
622 Flags - Flag of the text\r
623 \r
624 Key - Key of the text\r
625 \r
626 FormBuffer - Output of text as a form\r
627 \r
628Returns: \r
629\r
630 EFI_SUCCESS - Text created to be a form\r
631\r
632--*/\r
633;\r
634\r
635EFI_STATUS\r
636CreateGotoOpCode (\r
637 IN UINT16 FormId,\r
638 IN STRING_REF StringToken,\r
639 IN STRING_REF StringTokenTwo,\r
640 IN UINT8 Flags,\r
641 IN UINT16 Key,\r
642 IN OUT VOID *FormBuffer\r
643 )\r
644/*++\r
645\r
646Routine Description:\r
647\r
648 Create a hyperlink opcode independent of string creation\r
649 This is used primarily by users who need to create just one particular valid op-code and the string\r
650 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
651 location to pre-defined forms in HII)\r
652 \r
653Arguments:\r
654\r
655 FormId - Form ID of the hyperlink\r
656 \r
657 StringToken - Prompt string token of the hyperlink\r
658 \r
659 StringTokenTwo - Help string token of the hyperlink\r
660 \r
661 Flags - Flags of the hyperlink\r
662 \r
663 Key - Key of the hyperlink\r
664 \r
665 FormBuffer - Output of hyperlink as a form\r
666 \r
667Returns: \r
668\r
669 EFI_SUCCESS - Hyperlink created to be a form\r
670\r
671--*/\r
672;\r
673\r
674EFI_STATUS\r
675CreateOneOfOpCode (\r
676 IN UINT16 QuestionId,\r
677 IN UINT8 DataWidth,\r
678 IN STRING_REF PromptToken,\r
679 IN STRING_REF HelpToken,\r
680 IN IFR_OPTION *OptionsList,\r
681 IN UINTN OptionCount,\r
682 IN OUT VOID *FormBuffer\r
683 )\r
684/*++\r
685\r
686Routine Description:\r
687\r
688 Create a one-of opcode with a set of option op-codes to choose from independent of string creation.\r
689 This is used primarily by users who need to create just one particular valid op-code and the string\r
690 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
691 location to pre-defined forms in HII)\r
692\r
693 OptionsList is a pointer to a null-terminated list of option descriptions. Ensure that OptionsList[x].StringToken\r
694 has been filled in since this routine will not generate StringToken values.\r
695 \r
696Arguments:\r
697\r
698 QuestionId - Question ID of the one-of box\r
699 \r
700 DataWidth - DataWidth of the one-of box\r
701 \r
702 PromptToken - Prompt string token of the one-of box\r
703 \r
704 HelpToken - Help string token of the one-of box\r
705 \r
706 OptionsList - Each string in it is an option of the one-of box\r
707 \r
708 OptionCount - Option string count\r
709 \r
710 FormBuffer - Output of One-Of box as a form\r
711 \r
712Returns: \r
713\r
714 EFI_SUCCESS - One-Of box created to be a form\r
715 \r
716 EFI_DEVICE_ERROR - DataWidth > 2\r
717\r
718--*/\r
719;\r
720\r
721EFI_STATUS\r
722CreateOrderedListOpCode (\r
723 IN UINT16 QuestionId,\r
724 IN UINT8 MaxEntries,\r
725 IN STRING_REF PromptToken,\r
726 IN STRING_REF HelpToken,\r
727 IN IFR_OPTION *OptionsList,\r
728 IN UINTN OptionCount,\r
729 IN OUT VOID *FormBuffer\r
730 )\r
731/*++\r
732\r
733Routine Description:\r
734\r
735 Create a ordered list opcode with a set of option op-codes to choose from independent of string creation.\r
736 This is used primarily by users who need to create just one particular valid op-code and the string\r
737 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
738 location to pre-defined forms in HII)\r
739\r
740 OptionsList is a pointer to a null-terminated list of option descriptions. Ensure that OptionsList[x].StringToken\r
741 has been filled in since this routine will not generate StringToken values.\r
742 \r
743Arguments:\r
744\r
745 QuestionId - Question ID of the ordered list\r
746 \r
747 MaxEntries - MaxEntries of the ordered list\r
748 \r
749 PromptToken - Prompt string token of the ordered list\r
750 \r
751 HelpToken - Help string token of the ordered list\r
752 \r
753 OptionsList - Each string in it is an option of the ordered list\r
754 \r
755 OptionCount - Option string count\r
756 \r
757 FormBuffer - Output of ordered list as a form\r
758 \r
759Returns: \r
760\r
761 EFI_SUCCESS - Ordered list created to be a form\r
762\r
763--*/\r
764;\r
765\r
766EFI_STATUS\r
767CreateCheckBoxOpCode (\r
768 IN UINT16 QuestionId,\r
769 IN UINT8 DataWidth,\r
770 IN STRING_REF PromptToken,\r
771 IN STRING_REF HelpToken,\r
772 IN UINT8 Flags,\r
773 IN UINT16 Key,\r
774 IN OUT VOID *FormBuffer\r
775 )\r
776/*++\r
777\r
778Routine Description:\r
779\r
780 Create a checkbox opcode independent of string creation\r
781 This is used primarily by users who need to create just one particular valid op-code and the string\r
782 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
783 location to pre-defined forms in HII)\r
784 \r
785Arguments:\r
786\r
787 QuestionId - Question ID of the check box\r
788 \r
789 DataWidth - DataWidth of the check box\r
790 \r
791 PromptToken - Prompt string token of the check box\r
792 \r
793 HelpToken - Help string token of the check box\r
794 \r
795 Flags - Flags of the check box\r
796 \r
797 Key - Key of the check box\r
798 \r
799 FormBuffer - Output of the check box as a form\r
800 \r
801Returns: \r
802\r
803 EFI_SUCCESS - Checkbox created to be a form\r
804 \r
805 EFI_DEVICE_ERROR - DataWidth > 1\r
806\r
807--*/\r
808;\r
809\r
810EFI_STATUS\r
811CreateNumericOpCode (\r
812 IN UINT16 QuestionId,\r
813 IN UINT8 DataWidth,\r
814 IN STRING_REF PromptToken,\r
815 IN STRING_REF HelpToken,\r
816 IN UINT16 Minimum,\r
817 IN UINT16 Maximum,\r
818 IN UINT16 Step,\r
819 IN UINT16 Default,\r
820 IN UINT8 Flags,\r
821 IN UINT16 Key,\r
822 IN OUT VOID *FormBuffer\r
823 )\r
824/*++\r
825\r
826Routine Description:\r
827\r
828 Create a numeric opcode independent of string creation\r
829 This is used primarily by users who need to create just one particular valid op-code and the string\r
830 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
831 location to pre-defined forms in HII)\r
832 \r
833Arguments:\r
834\r
835 QuestionId - Question ID of the numeric\r
836 \r
837 DataWidth - DataWidth of the numeric\r
838 \r
839 PromptToken - Prompt string token of the numeric\r
840 \r
841 HelpToken - Help string token of the numeric\r
842 \r
843 Minimum - Minumun boundary of the numeric\r
844 \r
845 Maximum - Maximum boundary of the numeric\r
846 \r
847 Step - Step of the numeric\r
848 \r
849 Default - Default value of the numeric\r
850 \r
851 Flags - Flags of the numeric\r
852 \r
853 Key - Key of the numeric\r
854 \r
855 FormBuffer - Output of the numeric as a form\r
856 \r
857Returns: \r
858\r
859 EFI_SUCCESS - The numeric created to be a form.\r
860 \r
861 EFI_DEVICE_ERROR - DataWidth > 2\r
862\r
863--*/\r
864;\r
865\r
866EFI_STATUS\r
867CreateStringOpCode (\r
868 IN UINT16 QuestionId,\r
869 IN UINT8 DataWidth,\r
870 IN STRING_REF PromptToken,\r
871 IN STRING_REF HelpToken,\r
872 IN UINT8 MinSize,\r
873 IN UINT8 MaxSize,\r
874 IN UINT8 Flags,\r
875 IN UINT16 Key,\r
876 IN OUT VOID *FormBuffer\r
877 )\r
878/*++\r
879\r
880Routine Description:\r
881\r
882 Create a numeric opcode independent of string creation\r
883 This is used primarily by users who need to create just one particular valid op-code and the string\r
884 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
885 location to pre-defined forms in HII)\r
886 \r
887Arguments:\r
888\r
889 QuestionId - Question ID of the string\r
890 \r
891 DataWidth - DataWidth of the string\r
892 \r
893 PromptToken - Prompt token of the string\r
894 \r
895 HelpToken - Help token of the string\r
896 \r
897 MinSize - Min size boundary of the string\r
898 \r
899 MaxSize - Max size boundary of the string\r
900 \r
901 Flags - Flags of the string\r
902 \r
903 Key - Key of the string\r
904 \r
905 FormBuffer - Output of the string as a form\r
906 \r
907Returns: \r
908\r
909 EFI_SUCCESS - String created to be a form.\r
910\r
911--*/\r
912;\r
913\r
914EFI_STATUS\r
915ValidateDataFromHiiHandle (\r
dc7b4a5c 916 IN FRAMEWORK_EFI_HII_HANDLE HiiHandle,\r
df298090 917 OUT BOOLEAN *Results\r
918 )\r
919/*++\r
920\r
921Routine Description:\r
922\r
923 Validate that the data associated with the HiiHandle in NVRAM is within\r
924 the reasonable parameters for that FormSet. Values for strings and passwords\r
925 are not verified due to their not having the equivalent of valid range settings.\r
926 \r
927Arguments:\r
928\r
929 HiiHandle - Handle of the HII database entry to query\r
930\r
931 Results - If return Status is EFI_SUCCESS, Results provides valid data\r
932 TRUE = NVRAM Data is within parameters\r
933 FALSE = NVRAM Data is NOT within parameters\r
934 \r
935Returns: \r
936\r
937 EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
938 \r
939 EFI_SUCCESS - Data successfully validated\r
940--*/\r
941;\r
942\r
943EFI_STATUS\r
944CreateBannerOpCode (\r
945 IN UINT16 Title,\r
946 IN UINT16 LineNumber,\r
947 IN UINT8 Alignment,\r
948 IN OUT VOID *FormBuffer\r
949 )\r
950/*++\r
951\r
952Routine Description:\r
953\r
954 Create a banner opcode. This is primarily used by the FrontPage implementation from BDS.\r
955 \r
956Arguments:\r
957\r
958 Title - Title of the banner\r
959 \r
960 LineNumber - LineNumber of the banner\r
961 \r
962 Alignment - Alignment of the banner\r
963 \r
964 FormBuffer - Output of banner as a form\r
965 \r
966Returns: \r
967\r
968 EFI_SUCCESS - Banner created to be a form.\r
969\r
970--*/\r
971;\r
972\r
973VOID\r
974EfiLibHiiVariablePackGetMap (\r
975 IN EFI_HII_VARIABLE_PACK *Pack, \r
976 OUT CHAR16 **Name, OPTIONAL\r
977 OUT EFI_GUID **Guid, OPTIONAL\r
978 OUT UINT16 *Id, OPTIONAL\r
979 OUT VOID **Var, OPTIONAL\r
980 OUT UINTN *Size OPTIONAL\r
981 ) \r
982/*++\r
983\r
984Routine Description:\r
985\r
986 Extracts a variable form a Pack.\r
987\r
988Arguments:\r
989\r
990 Pack - List of variables\r
991 Name - Name of the variable/map\r
992 Guid - GUID of the variable/map\r
993 Var - Pointer to the variable/map\r
994 Size - Size of the variable/map in bytes\r
995\r
996Returns: \r
997\r
998 VOID.\r
999\r
1000--*/\r
1001;\r
1002\r
1003UINTN\r
1004EfiLibHiiVariablePackListGetMapCnt (\r
1005 IN EFI_HII_VARIABLE_PACK_LIST *List\r
1006 )\r
1007/*++\r
1008\r
1009Routine Description:\r
1010\r
1011 Finds a count of the variables/maps in the List.\r
1012\r
1013Arguments:\r
1014\r
1015 List - List of variables\r
1016\r
1017Returns: \r
1018\r
1019 Number of Map in the variable pack list.\r
1020\r
1021--*/\r
1022;\r
1023\r
1024typedef VOID (EFI_LIB_HII_VARIABLE_PACK_LIST_CALLBACK) (\r
1025 IN CHAR16 *Name,\r
1026 IN EFI_GUID *Guid,\r
1027 IN UINT16 Id,\r
1028 IN VOID *Var,\r
1029 IN UINTN Size\r
1030 ) \r
1031/*++\r
1032\r
1033Routine Description:\r
1034\r
1035 type definition for the callback to be \r
1036 used with EfiLibHiiVariablePackListForEachVar().\r
1037\r
1038Arguments:\r
1039\r
1040 Id - Variable/Map ID\r
1041 Name - Name of the variable/map\r
1042 Guid - GUID of the variable/map\r
1043 Var - Pointer to the variable/map\r
1044 Size - Size of the variable/map in bytes\r
1045\r
1046Returns: \r
1047\r
1048 VOID\r
1049\r
1050--*/\r
1051;\r
1052\r
1053VOID\r
1054EfiLibHiiVariablePackListForEachVar (\r
1055 IN EFI_HII_VARIABLE_PACK_LIST *List,\r
1056 IN EFI_LIB_HII_VARIABLE_PACK_LIST_CALLBACK *Callback\r
1057 )\r
1058/*++\r
1059\r
1060Routine Description:\r
1061\r
1062 Will iterate all variable/maps as appearing \r
1063 in List and for each, it will call the Callback.\r
1064\r
1065Arguments:\r
1066\r
1067 List - List of variables\r
1068 Callback - Routine to be called for each iterated variable.\r
1069\r
1070Returns: \r
1071\r
1072 VOID\r
1073\r
1074--*/\r
1075;\r
1076\r
1077EFI_STATUS\r
1078EfiLibHiiVariablePackListGetMapByIdx (\r
1079 IN UINTN Idx, \r
1080 IN EFI_HII_VARIABLE_PACK_LIST *List, \r
1081 OUT CHAR16 **Name, OPTIONAL\r
1082 OUT EFI_GUID **Guid, OPTIONAL\r
1083 OUT UINT16 *Id, OPTIONAL\r
1084 OUT VOID **Var,\r
1085 OUT UINTN *Size\r
1086 ) \r
1087/*++\r
1088\r
1089Routine Description:\r
1090\r
1091 Finds a variable form List given \r
1092 the order number as appears in the List.\r
1093\r
1094Arguments:\r
1095\r
1096 Idx - The index of the variable/map to retrieve\r
1097 List - List of variables\r
1098 Name - Name of the variable/map\r
1099 Guid - GUID of the variable/map\r
1100 Var - Pointer to the variable/map\r
1101 Size - Size of the variable/map in bytes\r
1102\r
1103Returns:\r
1104\r
1105 EFI_SUCCESS - Variable is found, OUT parameters are valid\r
1106 EFI_NOT_FOUND - Variable is not found, OUT parameters are not valid\r
1107\r
1108--*/\r
1109;\r
1110\r
1111EFI_STATUS\r
1112EfiLibHiiVariablePackListGetMapById (\r
1113 IN UINT16 Id, \r
1114 IN EFI_HII_VARIABLE_PACK_LIST *List,\r
1115 OUT CHAR16 **Name, OPTIONAL\r
1116 OUT EFI_GUID **Guid, OPTIONAL\r
1117 OUT VOID **Var,\r
1118 OUT UINTN *Size\r
1119 ) \r
1120/*++\r
1121\r
1122Routine Description:\r
1123\r
1124 Finds a variable form List given the \r
1125 order number as appears in the List.\r
1126\r
1127Arguments:\r
1128\r
1129 Id - The ID of the variable/map to retrieve\r
1130 List - List of variables\r
1131 Name - Name of the variable/map\r
1132 Guid - GUID of the variable/map\r
1133 Var - Pointer to the variable/map\r
1134 Size - Size of the variable/map in bytes\r
1135\r
1136Returns:\r
1137\r
1138 EFI_SUCCESS - Variable is found, OUT parameters are valid\r
1139 EFI_NOT_FOUND - Variable is not found, OUT parameters are not valid\r
1140\r
1141--*/\r
1142;\r
1143\r
1144EFI_STATUS\r
1145EfiLibHiiVariablePackListGetMap (\r
1146 IN EFI_HII_VARIABLE_PACK_LIST *List,\r
1147 IN CHAR16 *Name,\r
1148 IN EFI_GUID *Guid,\r
1149 OUT UINT16 *Id,\r
1150 OUT VOID **Var, \r
1151 OUT UINTN *Size\r
1152 ) \r
1153/*++\r
1154\r
1155Routine Description:\r
1156\r
1157 Finds a variable form EFI_HII_VARIABLE_PACK_LIST given name and GUID.\r
1158\r
1159Arguments:\r
1160\r
1161 List - List of variables\r
1162 Name - Name of the variable/map to be found\r
1163 Guid - GUID of the variable/map to be found\r
1164 Var - Pointer to the variable/map found\r
1165 Size - Size of the variable/map in bytes found\r
1166\r
1167Returns:\r
1168\r
1169 EFI_SUCCESS - variable is found, OUT parameters are valid\r
1170 EFI_NOT_FOUND - variable is not found, OUT parameters are not valid\r
1171\r
1172--*/\r
1173;\r
1174\r
1175EFI_STATUS\r
1176EfiLibHiiVariableRetrieveFromNv (\r
1177 IN CHAR16 *Name,\r
1178 IN EFI_GUID *Guid,\r
1179 IN UINTN Size,\r
1180 OUT VOID **Var\r
1181 )\r
1182/*++\r
1183\r
1184Routine Description:\r
1185 Finds out if a variable of specific Name/Guid/Size exists in NV. \r
1186 If it does, it will retrieve it into the Var. \r
1187\r
1188Arguments:\r
1189 Name, Guid, Size - Parameters of the variable to retrieve. Must match exactly.\r
1190 Var - Variable will be retrieved into buffer pointed by this pointer.\r
1191 If pointing to NULL, the buffer will be allocated. Caller is responsible for releasing the buffer.\r
1192Returns:\r
1193 EFI_SUCCESS - The variable of exact Name/Guid/Size parameters was retrieved and written to Var.\r
1194 EFI_NOT_FOUND - The variable of this Name/Guid was not found in the NV.\r
1195 EFI_LOAD_ERROR - The variable in the NV was of different size, or NV API returned error.\r
1196\r
1197--*/\r
1198;\r
1199\r
1200////\r
1201//// Variable override support.\r
1202////\r
1203\r
1204EFI_STATUS\r
1205EfiLibHiiVariableOverrideIfSuffix (\r
1206 IN CHAR16 *Suffix,\r
1207 IN CHAR16 *Name,\r
1208 IN EFI_GUID *Guid,\r
1209 IN UINTN Size,\r
1210 OUT VOID *Var\r
1211 ) \r
1212/*++\r
1213\r
1214Routine Description:\r
1215 Overrrides the variable with NV data if found.\r
1216 But it only does it if the Name ends with specified Suffix.\r
1217 For example, if Suffix="MyOverride" and the Name="XyzSetupMyOverride",\r
1218 the Suffix matches the end of Name, so the variable will be loaded from NV\r
1219 provided the variable exists and the GUID and Size matches.\r
1220\r
1221Arguments:\r
1222 Suffix - Suffix the Name should end with.\r
1223 Name, Guid, Size - Parameters of the variable to retrieve. Must match exactly.\r
1224 Var - Variable will be retrieved into this buffer.\r
1225 Caller is responsible for providing storage of exactly Size size in bytes.\r
1226Returns:\r
1227 EFI_SUCCESS - The variable was overriden with NV variable of same Name/Guid/Size.\r
1228 EFI_INVALID_PARAMETER - The name of the variable does not end with <Suffix>.\r
1229 EFI_NOT_FOUND - The variable of this Name/Guid was not found in the NV.\r
1230 EFI_LOAD_ERROR - The variable in the NV was of different size, or NV API returned error.\r
1231\r
1232--*/\r
1233;\r
1234\r
1235EFI_STATUS\r
1236EfiLibHiiVariableOverrideBySuffix (\r
1237 IN CHAR16 *Suffix,\r
1238 IN CHAR16 *Name,\r
1239 IN EFI_GUID *Guid,\r
1240 IN UINTN Size,\r
1241 OUT VOID *Var\r
1242 ) \r
1243/*++\r
1244\r
1245Routine Description:\r
1246 Overrrides the variable with NV data if found.\r
1247 But it only does it if the NV contains the same variable with Name is appended with Suffix. \r
1248 For example, if Suffix="MyOverride" and the Name="XyzSetup",\r
1249 the Suffix will be appended to the end of Name, and the variable with Name="XyzSetupMyOverride"\r
1250 will be loaded from NV provided the variable exists and the GUID and Size matches.\r
1251\r
1252Arguments:\r
1253 Suffix - Suffix the variable will be appended with.\r
1254 Name, Guid, Size - Parameters of the variable to retrieve. Must match exactly.\r
1255 Var - Variable will be retrieved into this buffer.\r
1256 Caller is responsible for providing storage of exactly Size size in bytes.\r
1257\r
1258Returns:\r
1259 EFI_SUCCESS - The variable was overriden with NV variable of same Name/Guid/Size.\r
1260 EFI_NOT_FOUND - The variable of this Name/Guid was not found in the NV.\r
1261 EFI_LOAD_ERROR - The variable in the NV was of different size, or NV API returned error.\r
1262\r
1263--*/\r
1264;\r
1265\r
1266#endif\r