]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Library/FrameworkIfrSupportLib/IfrOpCodeCreation.c
correct some coding style issues.
[mirror_edk2.git] / IntelFrameworkPkg / Library / FrameworkIfrSupportLib / IfrOpCodeCreation.c
CommitLineData
cf7e50f8 1/** @file\r
2ec4d269 2 Library Routines to create IFR independent of string data - assume tokens already exist\r
3 Primarily to be used for exporting op-codes at a label in pre-defined forms.\r
4\r
5d01b0f7 5Copyright (c) 2006, Intel Corporation \r
6All rights reserved. This program and the accompanying materials \r
7are licensed and made available under the terms and conditions of the BSD License \r
8which accompanies this distribution. The full text of the license may be found at \r
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
13\r
cf7e50f8 14**/\r
5d01b0f7 15\r
82096802 16#include "IfrSupportLibInternal.h"\r
5d01b0f7 17\r
2ec4d269 18/**\r
49a049e6 19 Create a SubTitle opcode independent of string creation.\r
5d01b0f7 20 This is used primarily by users who need to create just one particular valid op-code and the string\r
21 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
22 location to pre-defined forms in HII)\r
23 \r
49a049e6 24 @param StringToken StringToken of the subtitle\r
25 @param FormBuffer Output of subtitle as a form\r
5d01b0f7 26 \r
49a049e6 27 @retval EFI_SUCCESS Subtitle created to be a form\r
2ec4d269 28**/\r
29EFI_STATUS\r
30CreateSubTitleOpCode (\r
49a049e6 31 IN STRING_REF StringToken,\r
32 IN OUT VOID *FormBuffer\r
2ec4d269 33 )\r
5d01b0f7 34{\r
49a049e6 35 FRAMEWORK_EFI_IFR_SUBTITLE Subtitle;\r
5d01b0f7 36\r
dc7b4a5c 37 Subtitle.Header.OpCode = FRAMEWORK_EFI_IFR_SUBTITLE_OP;\r
38 Subtitle.Header.Length = sizeof (FRAMEWORK_EFI_IFR_SUBTITLE);\r
5d01b0f7 39 Subtitle.SubTitle = StringToken;\r
40\r
dc7b4a5c 41 CopyMem (FormBuffer, &Subtitle, sizeof (FRAMEWORK_EFI_IFR_SUBTITLE));\r
5d01b0f7 42 return EFI_SUCCESS;\r
43}\r
44\r
2ec4d269 45/**\r
49a049e6 46 Create a Text opcode independent of string creation.\r
47 \r
2ec4d269 48 This is used primarily by users who need to create just one particular valid op-code and the string\r
49 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
50 location to pre-defined forms in HII)\r
51\r
49a049e6 52 @param StringToken First string token of the text\r
53 @param StringTokenTwo Second string token of the text\r
54 @param StringTokenThree Help string token of the text\r
55 @param Flags Flag of the text\r
56 @param Key Key of the text\r
57 @param FormBuffer Output of text as a form\r
5d01b0f7 58\r
49a049e6 59 @retval EFI_SUCCESS Text created to be a form\r
2ec4d269 60**/\r
5d01b0f7 61EFI_STATUS\r
62CreateTextOpCode (\r
49a049e6 63 IN STRING_REF StringToken,\r
64 IN STRING_REF StringTokenTwo,\r
65 IN STRING_REF StringTokenThree,\r
66 IN UINT8 Flags,\r
67 IN UINT16 Key,\r
68 IN OUT VOID *FormBuffer\r
5d01b0f7 69 )\r
5d01b0f7 70{\r
49a049e6 71 FRAMEWORK_EFI_IFR_TEXT Text;\r
5d01b0f7 72\r
dc7b4a5c 73 Text.Header.OpCode = FRAMEWORK_EFI_IFR_TEXT_OP;\r
74 Text.Header.Length = sizeof (FRAMEWORK_EFI_IFR_TEXT);\r
5d01b0f7 75 Text.Text = StringToken;\r
76\r
77 Text.TextTwo = StringTokenTwo;\r
78 Text.Help = StringTokenThree;\r
79 Text.Flags = Flags;\r
80 Text.Key = Key;\r
81\r
dc7b4a5c 82 CopyMem (FormBuffer, &Text, sizeof (FRAMEWORK_EFI_IFR_TEXT));\r
5d01b0f7 83\r
84 return EFI_SUCCESS;\r
85}\r
86\r
2ec4d269 87/**\r
49a049e6 88 Create a hyperlink opcode independent of string creation.\r
89 \r
2ec4d269 90 This is used primarily by users who need to create just one particular valid op-code and the string\r
91 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
92 location to pre-defined forms in HII)\r
93 \r
49a049e6 94 @param FormId Form ID of the hyperlink\r
95 @param StringToken Prompt string token of the hyperlink\r
96 @param StringTokenTwo Help string token of the hyperlink\r
97 @param Flags Flags of the hyperlink\r
98 @param Key Key of the hyperlink\r
99 @param FormBuffer Output of hyperlink as a form\r
100 \r
101 @retval EFI_SUCCESS Hyperlink created to be a form\r
102**/\r
5d01b0f7 103EFI_STATUS\r
104CreateGotoOpCode (\r
49a049e6 105 IN UINT16 FormId,\r
106 IN STRING_REF StringToken,\r
107 IN STRING_REF StringTokenTwo,\r
108 IN UINT8 Flags,\r
109 IN UINT16 Key,\r
110 IN OUT VOID *FormBuffer\r
5d01b0f7 111 )\r
5d01b0f7 112{\r
49a049e6 113 FRAMEWORK_EFI_IFR_REF Hyperlink;\r
5d01b0f7 114\r
dc7b4a5c 115 Hyperlink.Header.OpCode = FRAMEWORK_EFI_IFR_REF_OP;\r
116 Hyperlink.Header.Length = sizeof (FRAMEWORK_EFI_IFR_REF);\r
5d01b0f7 117 Hyperlink.FormId = FormId;\r
118 Hyperlink.Prompt = StringToken;\r
119 Hyperlink.Help = StringTokenTwo;\r
120 Hyperlink.Key = Key;\r
121 Hyperlink.Flags = Flags;\r
122\r
dc7b4a5c 123 CopyMem (FormBuffer, &Hyperlink, sizeof (FRAMEWORK_EFI_IFR_REF));\r
5d01b0f7 124\r
125 return EFI_SUCCESS;\r
126}\r
127\r
2ec4d269 128/**\r
129 Create a one-of opcode with a set of option op-codes to choose from independent of string creation.\r
130 This is used primarily by users who need to create just one particular valid op-code and the string\r
131 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
132 location to pre-defined forms in HII)\r
133\r
134 OptionsList is a pointer to a null-terminated list of option descriptions. Ensure that OptionsList[x].StringToken\r
135 has been filled in since this routine will not generate StringToken values.\r
136 \r
49a049e6 137 @param QuestionId Question ID of the one-of box\r
138 @param DataWidth DataWidth of the one-of box\r
139 @param PromptToken Prompt string token of the one-of box\r
140 @param HelpToken Help string token of the one-of box\r
141 @param OptionsList Each string in it is an option of the one-of box\r
142 @param OptionCount Option string count\r
143 @param FormBuffer Output of One-Of box as a form\r
2ec4d269 144 \r
5d01b0f7 145\r
49a049e6 146 @retval EFI_SUCCESS One-Of box created to be a form\r
147 @retval EFI_DEVICE_ERROR DataWidth > 2\r
2ec4d269 148**/\r
5d01b0f7 149EFI_STATUS\r
150CreateOneOfOpCode (\r
49a049e6 151 IN UINT16 QuestionId,\r
152 IN UINT8 DataWidth,\r
153 IN STRING_REF PromptToken,\r
154 IN STRING_REF HelpToken,\r
155 IN IFR_OPTION *OptionsList,\r
156 IN UINTN OptionCount,\r
157 IN OUT VOID *FormBuffer\r
5d01b0f7 158 )\r
5d01b0f7 159{\r
49a049e6 160 UINTN Index;\r
161 FRAMEWORK_EFI_IFR_ONE_OF OneOf;\r
162 FRAMEWORK_EFI_IFR_ONE_OF_OPTION OneOfOption;\r
163 FRAMEWORK_EFI_IFR_END_ONE_OF EndOneOf;\r
164 UINT8 *LocalBuffer;\r
5d01b0f7 165\r
166 //\r
167 // We do not create op-code storage widths for one-of in excess of 16 bits for now\r
168 //\r
169 if (DataWidth > 2) {\r
170 return EFI_DEVICE_ERROR;\r
171 }\r
172\r
dc7b4a5c 173 OneOf.Header.OpCode = FRAMEWORK_EFI_IFR_ONE_OF_OP;\r
174 OneOf.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ONE_OF);\r
5d01b0f7 175 OneOf.QuestionId = QuestionId;\r
176 OneOf.Width = DataWidth;\r
177 OneOf.Prompt = PromptToken;\r
5d01b0f7 178 OneOf.Help = HelpToken;\r
5d01b0f7 179 LocalBuffer = (UINT8 *) FormBuffer;\r
180\r
dc7b4a5c 181 CopyMem (LocalBuffer, &OneOf, sizeof (FRAMEWORK_EFI_IFR_ONE_OF));\r
5d01b0f7 182\r
dc7b4a5c 183 LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ONE_OF));\r
5d01b0f7 184\r
185 for (Index = 0; Index < OptionCount; Index++) {\r
dc7b4a5c 186 OneOfOption.Header.OpCode = FRAMEWORK_EFI_IFR_ONE_OF_OPTION_OP;\r
187 OneOfOption.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION);\r
5d01b0f7 188\r
189 OneOfOption.Option = OptionsList[Index].StringToken;\r
190 OneOfOption.Value = OptionsList[Index].Value;\r
191 OneOfOption.Flags = OptionsList[Index].Flags;\r
192 OneOfOption.Key = OptionsList[Index].Key;\r
193\r
dc7b4a5c 194 CopyMem (LocalBuffer, &OneOfOption, sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r
5d01b0f7 195\r
dc7b4a5c 196 LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r
5d01b0f7 197 }\r
198\r
dc7b4a5c 199 EndOneOf.Header.Length = sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF);\r
200 EndOneOf.Header.OpCode = FRAMEWORK_EFI_IFR_END_ONE_OF_OP;\r
5d01b0f7 201\r
dc7b4a5c 202 CopyMem (LocalBuffer, &EndOneOf, sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r
5d01b0f7 203\r
dc7b4a5c 204 LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r
5d01b0f7 205\r
206 return EFI_SUCCESS;\r
207}\r
208\r
2ec4d269 209/**\r
210 Create a ordered list opcode with a set of option op-codes to choose from independent of string creation.\r
211 This is used primarily by users who need to create just one particular valid op-code and the string\r
212 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
213 location to pre-defined forms in HII)\r
214\r
215 OptionsList is a pointer to a null-terminated list of option descriptions. Ensure that OptionsList[x].StringToken\r
216 has been filled in since this routine will not generate StringToken values.\r
217 \r
49a049e6 218 @param QuestionId Question ID of the ordered list\r
219 @param MaxEntries MaxEntries of the ordered list\r
220 @param PromptToken Prompt string token of the ordered list\r
221 @param HelpToken Help string token of the ordered list\r
222 @param OptionsList Each string in it is an option of the ordered list\r
223 @param OptionCount Option string count\r
224 @param FormBuffer Output of ordered list as a form\r
2ec4d269 225 \r
49a049e6 226 @retval EFI_SUCCESS Ordered list created to be a form\r
2ec4d269 227**/\r
5d01b0f7 228EFI_STATUS\r
229CreateOrderedListOpCode (\r
49a049e6 230 IN UINT16 QuestionId,\r
231 IN UINT8 MaxEntries,\r
232 IN STRING_REF PromptToken,\r
233 IN STRING_REF HelpToken,\r
234 IN IFR_OPTION *OptionsList,\r
235 IN UINTN OptionCount,\r
236 IN OUT VOID *FormBuffer\r
5d01b0f7 237 )\r
5d01b0f7 238{\r
49a049e6 239 UINTN Index;\r
240 FRAMEWORK_EFI_IFR_ORDERED_LIST OrderedList;\r
241 FRAMEWORK_EFI_IFR_ONE_OF_OPTION OrderedListOption;\r
242 FRAMEWORK_EFI_IFR_END_ONE_OF EndOrderedList;\r
243 UINT8 *LocalBuffer;\r
5d01b0f7 244\r
dc7b4a5c 245 OrderedList.Header.OpCode = FRAMEWORK_EFI_IFR_ORDERED_LIST_OP;\r
246 OrderedList.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ORDERED_LIST);\r
5d01b0f7 247 OrderedList.QuestionId = QuestionId;\r
248 OrderedList.MaxEntries = MaxEntries;\r
249 OrderedList.Prompt = PromptToken;\r
5d01b0f7 250 OrderedList.Help = HelpToken;\r
5d01b0f7 251 LocalBuffer = (UINT8 *) FormBuffer;\r
252\r
dc7b4a5c 253 CopyMem (LocalBuffer, &OrderedList, sizeof (FRAMEWORK_EFI_IFR_ORDERED_LIST));\r
5d01b0f7 254\r
dc7b4a5c 255 LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ORDERED_LIST));\r
5d01b0f7 256\r
257 for (Index = 0; Index < OptionCount; Index++) {\r
dc7b4a5c 258 OrderedListOption.Header.OpCode = FRAMEWORK_EFI_IFR_ONE_OF_OPTION_OP;\r
259 OrderedListOption.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION);\r
5d01b0f7 260\r
261 OrderedListOption.Option = OptionsList[Index].StringToken;\r
262 OrderedListOption.Value = OptionsList[Index].Value;\r
263 OrderedListOption.Flags = OptionsList[Index].Flags;\r
264 OrderedListOption.Key = OptionsList[Index].Key;\r
265\r
dc7b4a5c 266 CopyMem (LocalBuffer, &OrderedListOption, sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r
5d01b0f7 267\r
dc7b4a5c 268 LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r
5d01b0f7 269 }\r
270\r
dc7b4a5c 271 EndOrderedList.Header.Length = sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF);\r
272 EndOrderedList.Header.OpCode = FRAMEWORK_EFI_IFR_END_ONE_OF_OP;\r
5d01b0f7 273\r
dc7b4a5c 274 CopyMem (LocalBuffer, &EndOrderedList, sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r
5d01b0f7 275\r
dc7b4a5c 276 LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r
5d01b0f7 277\r
278 return EFI_SUCCESS;\r
279}\r
280\r
2ec4d269 281/**\r
49a049e6 282 Create a checkbox opcode independent of string creation.\r
2ec4d269 283 This is used primarily by users who need to create just one particular valid op-code and the string\r
284 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
285 location to pre-defined forms in HII)\r
286\r
49a049e6 287 @param QuestionId Question ID of the check box\r
288 @param DataWidth DataWidth of the check box\r
289 @param PromptToken Prompt string token of the check box\r
290 @param HelpToken Help string token of the check box\r
291 @param Flags Flags of the check box\r
292 @param Key Key of the check box\r
293 @param FormBuffer Output of the check box as a form\r
2ec4d269 294\r
49a049e6 295 @retval EFI_SUCCESS Checkbox created to be a form\r
296 @retval EFI_DEVICE_ERROR DataWidth > 1\r
2ec4d269 297**/\r
5d01b0f7 298EFI_STATUS\r
299CreateCheckBoxOpCode (\r
49a049e6 300 IN UINT16 QuestionId,\r
301 IN UINT8 DataWidth,\r
302 IN STRING_REF PromptToken,\r
303 IN STRING_REF HelpToken,\r
304 IN UINT8 Flags,\r
305 IN UINT16 Key,\r
306 IN OUT VOID *FormBuffer\r
5d01b0f7 307 )\r
5d01b0f7 308{\r
49a049e6 309 FRAMEWORK_EFI_IFR_CHECKBOX CheckBox;\r
5d01b0f7 310\r
311 //\r
312 // We do not create op-code storage widths for checkbox in excess of 8 bits for now\r
313 //\r
314 if (DataWidth > 1) {\r
315 return EFI_DEVICE_ERROR;\r
316 }\r
317\r
dc7b4a5c 318 CheckBox.Header.OpCode = FRAMEWORK_EFI_IFR_CHECKBOX_OP;\r
319 CheckBox.Header.Length = sizeof (FRAMEWORK_EFI_IFR_CHECKBOX);\r
5d01b0f7 320 CheckBox.QuestionId = QuestionId;\r
321 CheckBox.Width = DataWidth;\r
322 CheckBox.Prompt = PromptToken;\r
5d01b0f7 323 CheckBox.Help = HelpToken;\r
324 CheckBox.Flags = Flags;\r
325 CheckBox.Key = Key;\r
326\r
dc7b4a5c 327 CopyMem (FormBuffer, &CheckBox, sizeof (FRAMEWORK_EFI_IFR_CHECKBOX));\r
5d01b0f7 328\r
329 return EFI_SUCCESS;\r
330}\r
331\r
2ec4d269 332/**\r
49a049e6 333 Create a numeric opcode independent of string creation.\r
2ec4d269 334 This is used primarily by users who need to create just one particular valid op-code and the string\r
335 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
336 location to pre-defined forms in HII)\r
337 \r
49a049e6 338 @param QuestionId Question ID of the numeric\r
339 @param DataWidth DataWidth of the numeric\r
340 @param PromptToken Prompt string token of the numeric\r
341 @param HelpToken Help string token of the numeric\r
342 @param Minimum Minumun boundary of the numeric\r
343 @param Maximum Maximum boundary of the numeric\r
344 @param Step Step of the numeric\r
345 @param Default Default value of the numeric\r
346 @param Flags Flags of the numeric\r
347 @param Key Key of the numeric\r
348 @param FormBuffer Output of the numeric as a form\r
2ec4d269 349 \r
350\r
49a049e6 351 @retval EFI_SUCCESS The numeric created to be a form.\r
352 @retval EFI_DEVICE_ERROR DataWidth > 2\r
2ec4d269 353**/\r
5d01b0f7 354EFI_STATUS\r
355CreateNumericOpCode (\r
49a049e6 356 IN UINT16 QuestionId,\r
357 IN UINT8 DataWidth,\r
358 IN STRING_REF PromptToken,\r
359 IN STRING_REF HelpToken,\r
360 IN UINT16 Minimum,\r
361 IN UINT16 Maximum,\r
362 IN UINT16 Step,\r
363 IN UINT16 Default,\r
364 IN UINT8 Flags,\r
365 IN UINT16 Key,\r
366 IN OUT VOID *FormBuffer\r
5d01b0f7 367 )\r
5d01b0f7 368{\r
49a049e6 369 FRAMEWORK_EFI_IFR_NUMERIC Numeric;\r
5d01b0f7 370\r
371 //\r
372 // We do not create op-code storage widths for numerics in excess of 16 bits for now\r
373 //\r
374 if (DataWidth > 2) {\r
375 return EFI_DEVICE_ERROR;\r
376 }\r
377\r
dc7b4a5c 378 Numeric.Header.OpCode = FRAMEWORK_EFI_IFR_NUMERIC_OP;\r
379 Numeric.Header.Length = sizeof (FRAMEWORK_EFI_IFR_NUMERIC);\r
5d01b0f7 380 Numeric.QuestionId = QuestionId;\r
381 Numeric.Width = DataWidth;\r
382 Numeric.Prompt = PromptToken;\r
5d01b0f7 383 Numeric.Help = HelpToken;\r
384 Numeric.Minimum = Minimum;\r
385 Numeric.Maximum = Maximum;\r
386 Numeric.Step = Step;\r
387 Numeric.Default = Default;\r
388 Numeric.Flags = Flags;\r
389 Numeric.Key = Key;\r
390\r
dc7b4a5c 391 CopyMem (FormBuffer, &Numeric, sizeof (FRAMEWORK_EFI_IFR_NUMERIC));\r
5d01b0f7 392\r
393 return EFI_SUCCESS;\r
394}\r
395\r
2ec4d269 396/**\r
49a049e6 397 Create a numeric opcode independent of string creation.\r
2ec4d269 398 This is used primarily by users who need to create just one particular valid op-code and the string\r
399 data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r
400 location to pre-defined forms in HII)\r
401 \r
49a049e6 402 @param QuestionId Question ID of the string\r
403 @param DataWidth DataWidth of the string\r
404 @param PromptToken Prompt token of the string\r
405 @param HelpToken Help token of the string\r
406 @param MinSize Min size boundary of the string\r
407 @param MaxSize Max size boundary of the string\r
408 @param Flags Flags of the string\r
409 @param Key Key of the string\r
410 @param FormBuffer Output of the string as a form\r
2ec4d269 411 \r
49a049e6 412 @retval EFI_SUCCESS String created to be a form.\r
2ec4d269 413**/\r
5d01b0f7 414EFI_STATUS\r
415CreateStringOpCode (\r
49a049e6 416 IN UINT16 QuestionId,\r
417 IN UINT8 DataWidth,\r
418 IN STRING_REF PromptToken,\r
419 IN STRING_REF HelpToken,\r
420 IN UINT8 MinSize,\r
421 IN UINT8 MaxSize,\r
422 IN UINT8 Flags,\r
423 IN UINT16 Key,\r
424 IN OUT VOID *FormBuffer\r
5d01b0f7 425 )\r
5d01b0f7 426{\r
49a049e6 427 FRAMEWORK_EFI_IFR_STRING String;\r
5d01b0f7 428\r
dc7b4a5c 429 String.Header.OpCode = FRAMEWORK_EFI_IFR_STRING_OP;\r
430 String.Header.Length = sizeof (FRAMEWORK_EFI_IFR_STRING);\r
5d01b0f7 431 String.QuestionId = QuestionId;\r
432 String.Width = DataWidth;\r
433 String.Prompt = PromptToken;\r
5d01b0f7 434 String.Help = HelpToken;\r
435 String.MinSize = MinSize;\r
436 String.MaxSize = MaxSize;\r
437 String.Flags = Flags;\r
438 String.Key = Key;\r
439\r
dc7b4a5c 440 CopyMem (FormBuffer, &String, sizeof (FRAMEWORK_EFI_IFR_STRING));\r
5d01b0f7 441\r
442 return EFI_SUCCESS;\r
443}\r
444\r
2ec4d269 445/**\r
446 Create a banner opcode. This is primarily used by the FrontPage implementation from BDS.\r
447 \r
49a049e6 448 @param Title Title of the banner\r
449 @param LineNumber LineNumber of the banner\r
450 @param Alignment Alignment of the banner\r
451 @param FormBuffer Output of banner as a form\r
5d01b0f7 452\r
49a049e6 453 @retval EFI_SUCCESS Banner created to be a form.\r
2ec4d269 454**/\r
5d01b0f7 455EFI_STATUS\r
456CreateBannerOpCode (\r
49a049e6 457 IN UINT16 Title,\r
458 IN UINT16 LineNumber,\r
459 IN UINT8 Alignment,\r
460 IN OUT VOID *FormBuffer\r
5d01b0f7 461 )\r
5d01b0f7 462{\r
49a049e6 463 FRAMEWORK_EFI_IFR_BANNER Banner;\r
5d01b0f7 464\r
dc7b4a5c 465 Banner.Header.OpCode = FRAMEWORK_EFI_IFR_BANNER_OP;\r
466 Banner.Header.Length = sizeof (FRAMEWORK_EFI_IFR_BANNER);\r
5d01b0f7 467 CopyMem (&Banner.Title, &Title, sizeof (UINT16));\r
468 CopyMem (&Banner.LineNumber, &LineNumber, sizeof (UINT16));\r
469 Banner.Alignment = Alignment;\r
470\r
dc7b4a5c 471 CopyMem (FormBuffer, &Banner, sizeof (FRAMEWORK_EFI_IFR_BANNER));\r
5d01b0f7 472\r
473 return EFI_SUCCESS;\r
474}\r
2ec4d269 475\r
476\r