]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosView.c
rename a file.
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / SmbiosView.c
CommitLineData
5d73d92f 1/** @file\r
2 Tools of clarify the content of the smbios table.\r
3\r
3737ac2b 4 Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.<BR>\r
5d73d92f 5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include "../UefiShellDebug1CommandsLib.h"\r
16#include "LibSmbiosView.h"\r
17#include "smbiosview.h"\r
18#include "PrintInfo.h"\r
19#include "QueryTable.h"\r
20\r
21UINT8 gShowType = SHOW_DETAIL;\r
22STATIC STRUCTURE_STATISTICS *mStatisticsTable = NULL;\r
23\r
24UINT8 SmbiosMajorVersion;\r
25UINT8 SmbiosMinorVersion;\r
26\r
27STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
28 {L"-t", TypeValue},\r
29 {L"-h", TypeValue},\r
30 {L"-s", TypeFlag},\r
31 {L"-a", TypeFlag},\r
32 {NULL, TypeMax}\r
33 };\r
34\r
35SHELL_STATUS\r
36EFIAPI\r
37ShellCommandRunSmbiosView (\r
38 IN EFI_HANDLE ImageHandle,\r
39 IN EFI_SYSTEM_TABLE *SystemTable\r
40 )\r
41{\r
42 UINT8 StructType;\r
43 UINT16 StructHandle;\r
44 EFI_STATUS Status;\r
45 BOOLEAN RandomView;\r
46 LIST_ENTRY *Package;\r
47 CHAR16 *ProblemParam;\r
48 SHELL_STATUS ShellStatus;\r
49 CONST CHAR16 *Temp;\r
50\r
51 mStatisticsTable = NULL;\r
52 Package = NULL;\r
53 ShellStatus = SHELL_SUCCESS;\r
54\r
3737ac2b 55 Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
5d73d92f 56 if (EFI_ERROR(Status)) {\r
57 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
58 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, ProblemParam);\r
59 FreePool(ProblemParam);\r
60 ShellStatus = SHELL_INVALID_PARAMETER;\r
61 } else {\r
62 ASSERT(FALSE);\r
63 }\r
64 } else {\r
65 if (ShellCommandLineGetCount(Package) > 1) {\r
66 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
67 ShellStatus = SHELL_INVALID_PARAMETER;\r
980d554e 68 } else if (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetValue(Package, L"-t") == NULL) {\r
69 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"-t");\r
70 ShellStatus = SHELL_INVALID_PARAMETER;\r
71 } else if (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetValue(Package, L"-h") == NULL) {\r
72 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"-h");\r
73 ShellStatus = SHELL_INVALID_PARAMETER;\r
3737ac2b 74 } else if (\r
75 (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-h")) ||\r
76 (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-s")) ||\r
77 (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-a")) ||\r
78 (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetFlag(Package, L"-s")) ||\r
79 (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetFlag(Package, L"-a")) ||\r
80 (ShellCommandLineGetFlag(Package, L"-s") && ShellCommandLineGetFlag(Package, L"-a"))\r
81 ) {\r
82 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
83 ShellStatus = SHELL_INVALID_PARAMETER;\r
5d73d92f 84 } else {\r
85\r
86 //\r
87 // Init Lib\r
3737ac2b 88 \r
5d73d92f 89 Status = LibSmbiosInit ();\r
90 if (EFI_ERROR (Status)) {\r
91 ShellStatus = SHELL_NOT_FOUND;\r
92 goto Done;\r
93 }\r
94 //\r
95 // build statistics table\r
96 //\r
97 Status = InitSmbiosTableStatistics ();\r
98 if (EFI_ERROR (Status)) {\r
99 ShellStatus = SHELL_NOT_FOUND;\r
100 goto Done;\r
101 }\r
102\r
103 StructType = STRUCTURE_TYPE_RANDOM;\r
104 RandomView = TRUE;\r
105 //\r
106 // Initialize the StructHandle to be the first handle\r
107 //\r
108 StructHandle = STRUCTURE_HANDLE_INVALID;\r
109 LibGetSmbiosStructure (&StructHandle, NULL, NULL);\r
110\r
111 Temp = ShellCommandLineGetValue(Package, L"-t");\r
112 if (Temp != NULL) {\r
113 StructType = (UINT8) ShellStrToUintn (Temp);\r
114 }\r
115\r
116 Temp = ShellCommandLineGetValue(Package, L"-h");\r
117 if (Temp != NULL) {\r
118 RandomView = FALSE;\r
119 StructHandle = (UINT16) ShellStrToUintn(Temp);\r
120 }\r
121\r
122 if (ShellCommandLineGetFlag(Package, L"-s")) {\r
123 Status = DisplayStatisticsTable (SHOW_DETAIL);\r
124 if (EFI_ERROR(Status)) {\r
125 ShellStatus = SHELL_NOT_FOUND;\r
126 }\r
127 goto Done;\r
128 }\r
129\r
130 if (ShellCommandLineGetFlag(Package, L"-a")) {\r
131 gShowType = SHOW_ALL;\r
132 }\r
133 //\r
134 // Show SMBIOS structure information\r
135 //\r
136 Status = SMBiosView (StructType, StructHandle, gShowType, RandomView);\r
137 if (EFI_ERROR(Status)) {\r
138 ShellStatus = SHELL_NOT_FOUND;\r
139 }\r
140 }\r
141 }\r
142Done:\r
143 //\r
144 // Release resources\r
145 //\r
146 if (mStatisticsTable != NULL) {\r
147 //\r
148 // Release statistics table\r
149 //\r
150 FreePool (mStatisticsTable);\r
151 mStatisticsTable = NULL;\r
152 }\r
153\r
154 if (Package != NULL) {\r
155 ShellCommandLineFreeVarList (Package);\r
156 }\r
157\r
158 LibSmbiosCleanup ();\r
159\r
160 return ShellStatus;\r
161}\r
162\r
163/**\r
164 Query all structures Data from SMBIOS table and Display\r
165 the information to users as required display option.\r
166\r
167 @param[in] QueryType Structure type to view.\r
168 @param[in] QueryHandle Structure handle to view.\r
169 @param[in] Option Display option: none,outline,normal,detail.\r
170 @param[in] RandomView Support for -h parameter.\r
171\r
172 @retval EFI_SUCCESS print is successful.\r
173 @retval EFI_BAD_BUFFER_SIZE structure is out of the range of SMBIOS table.\r
174**/\r
175EFI_STATUS\r
176EFIAPI\r
177SMBiosView (\r
178 IN UINT8 QueryType,\r
179 IN UINT16 QueryHandle,\r
180 IN UINT8 Option,\r
181 IN BOOLEAN RandomView\r
182 )\r
183{\r
184 UINT16 Handle;\r
185 UINT8 Buffer[1024];\r
186 //\r
187 // bigger than SMBIOS_STRUCTURE_TABLE.MaxStructureSize\r
188 //\r
189 UINT16 Length;\r
190 UINTN Index;\r
191 UINT16 Offset;\r
192 //\r
193 // address offset from structure table head.\r
194 //\r
195 UINT32 TableHead;\r
196 //\r
197 // structure table head.\r
198 //\r
199\r
200 SMBIOS_STRUCTURE_POINTER pStruct;\r
201 SMBIOS_STRUCTURE_TABLE *SMBiosTable;\r
202\r
203 SMBiosTable = NULL;\r
204 LibSmbiosGetEPS (&SMBiosTable);\r
205 if (SMBiosTable == NULL) {\r
206 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_TABLE), gShellDebug1HiiHandle);\r
207 return EFI_BAD_BUFFER_SIZE;\r
208 }\r
209\r
210 if (CompareMem (SMBiosTable->AnchorString, "_SM_", 4) == 0) {\r
211 //\r
212 // Have get SMBIOS table\r
213 //\r
214 SmbiosPrintEPSInfo (SMBiosTable, Option);\r
215\r
216 SmbiosMajorVersion = SMBiosTable->MajorVersion;\r
217 SmbiosMinorVersion = SMBiosTable->MinorVersion;\r
218\r
219 ShellPrintEx(-1,-1,L"=========================================================\n");\r
220 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERY_STRUCT_COND), gShellDebug1HiiHandle);\r
221\r
222 if (QueryType == STRUCTURE_TYPE_RANDOM) {\r
223 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYTYPE_RANDOM), gShellDebug1HiiHandle);\r
224 } else {\r
225 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYTYPE), gShellDebug1HiiHandle, QueryType);\r
226 }\r
227\r
228 if (RandomView) {\r
229 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYHANDLE_RANDOM), gShellDebug1HiiHandle);\r
230 } else {\r
231 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYHANDLE), gShellDebug1HiiHandle, QueryHandle);\r
232 }\r
233\r
234 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_SHOWTYPE), gShellDebug1HiiHandle);\r
235 ShellPrintEx(-1,-1,GetShowTypeString (gShowType));\r
236 ShellPrintEx(-1,-1,L"\n\n");\r
237\r
238/*\r
239 //\r
240 // Get internal commands, such as change options.\r
241 //\r
242 Status = WaitEnter ();\r
243 if (EFI_ERROR (Status)) {\r
244 if (Status == EFI_ABORTED) {\r
245 return EFI_SUCCESS;\r
246 }\r
247\r
248 return Status;\r
249 }\r
250*/\r
251\r
252 //\r
253 // Searching and display structure info\r
254 //\r
255 Handle = QueryHandle;\r
256 TableHead = SMBiosTable->TableAddress;\r
257 Offset = 0;\r
258 for (Index = 0; Index < SMBiosTable->NumberOfSmbiosStructures; Index++) {\r
259 //\r
260 // if reach the end of table, break..\r
261 //\r
262 if (Handle == STRUCTURE_HANDLE_INVALID) {\r
263 break;\r
264 }\r
265 //\r
266 // handle then point to the next!\r
267 //\r
268 if (LibGetSmbiosStructure (&Handle, Buffer, &Length) != DMI_SUCCESS) {\r
269 break;\r
270 }\r
271 Offset = (UINT16) (Offset + Length);\r
272 pStruct.Raw = Buffer;\r
273\r
274 //\r
275 // if QueryType==Random, print this structure.\r
276 // if QueryType!=Random, but Hdr->Type==QueryType, also print it.\r
277 // only if QueryType != Random and Hdr->Type != QueryType, skiped it.\r
278 //\r
279 if (QueryType != STRUCTURE_TYPE_RANDOM && pStruct.Hdr->Type != QueryType) {\r
280 continue;\r
281 }\r
282\r
283 ShellPrintEx(-1,-1,L"\n=========================================================\n");\r
284 ShellPrintHiiEx(-1,-1,NULL,\r
285 STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_TYPE_HANDLE_DUMP_STRUCT),\r
286 gShellDebug1HiiHandle,\r
287 pStruct.Hdr->Type,\r
288 pStruct.Hdr->Handle\r
289 );\r
290 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_INDEX_LENGTH), gShellDebug1HiiHandle, Index, Length);\r
291 //\r
292 // Addr of structure in structure in table\r
293 //\r
294 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_ADDR), gShellDebug1HiiHandle, TableHead + Offset);\r
295 DumpHex (0, 0, Length, Buffer);\r
296\r
297/*\r
298 //\r
299 // Get internal commands, such as change options.\r
300 //\r
301 Status = WaitEnter ();\r
302 if (EFI_ERROR (Status)) {\r
303 if (Status == EFI_ABORTED) {\r
304 return EFI_SUCCESS;\r
305 }\r
306\r
307 return Status;\r
308 }\r
309*/\r
310\r
311 if (gShowType != SHOW_NONE) {\r
312 //\r
313 // check structure legality\r
314 //\r
315 SmbiosCheckStructure (&pStruct);\r
316\r
317 //\r
318 // Print structure information\r
319 //\r
320 SmbiosPrintStructure (&pStruct, gShowType);\r
321 ShellPrintEx(-1,-1,L"\n");\r
322\r
323/*\r
324 //\r
325 // Get internal commands, such as change options.\r
326 //\r
327 Status = WaitEnter ();\r
328 if (EFI_ERROR (Status)) {\r
329 if (Status == EFI_ABORTED) {\r
330 return EFI_SUCCESS;\r
331 }\r
332\r
333 return Status;\r
334 }\r
335*/\r
336 }\r
337 if (!RandomView) {\r
338 break;\r
339 }\r
340 }\r
341\r
342 ShellPrintEx(-1,-1,L"\n=========================================================\n");\r
343 return EFI_SUCCESS;\r
344 }\r
345\r
346 return EFI_BAD_BUFFER_SIZE;\r
347}\r
348\r
349/**\r
350 Function to initialize the global mStatisticsTable object.\r
351\r
352 @retval EFI_SUCCESS print is successful.\r
353**/\r
354EFI_STATUS\r
355EFIAPI\r
356InitSmbiosTableStatistics (\r
357 VOID\r
358 )\r
359{\r
360 UINT16 Handle;\r
361 UINT8 Buffer[1024];\r
362 UINT16 Length;\r
363 UINT16 Offset;\r
364 UINT16 Index;\r
365\r
366 SMBIOS_STRUCTURE_POINTER pStruct;\r
367 SMBIOS_STRUCTURE_TABLE *SMBiosTable;\r
368 STRUCTURE_STATISTICS *pStatistics;\r
369\r
370 SMBiosTable = NULL;\r
371 LibSmbiosGetEPS (&SMBiosTable);\r
372 if (SMBiosTable == NULL) {\r
373 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_TABLE), gShellDebug1HiiHandle);\r
374 return EFI_NOT_FOUND;\r
375 }\r
376\r
377 if (CompareMem (SMBiosTable->AnchorString, "_SM_", 4) != 0) {\r
378 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_SMBIOS_TABLE), gShellDebug1HiiHandle);\r
379 return EFI_INVALID_PARAMETER;\r
380 }\r
381 //\r
382 // Allocate memory to mStatisticsTable\r
383 //\r
384 if (mStatisticsTable != NULL) {\r
385 FreePool (mStatisticsTable);\r
386 mStatisticsTable = NULL;\r
387 }\r
388\r
3737ac2b 389 mStatisticsTable = (STRUCTURE_STATISTICS *) AllocateZeroPool (SMBiosTable->NumberOfSmbiosStructures * sizeof (STRUCTURE_STATISTICS));\r
5d73d92f 390\r
391 if (mStatisticsTable == NULL) {\r
392 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_OUT_OF_MEM), gShellDebug1HiiHandle);\r
393 return EFI_OUT_OF_RESOURCES;\r
394 }\r
395\r
396 Offset = 0;\r
397 pStatistics = mStatisticsTable;\r
398\r
399 //\r
400 // search from the first one\r
401 //\r
402 Handle = STRUCTURE_HANDLE_INVALID;\r
403 LibGetSmbiosStructure (&Handle, NULL, NULL);\r
404 for (Index = 1; Index <= SMBiosTable->NumberOfSmbiosStructures; Index++) {\r
405 //\r
406 // If reach the end of table, break..\r
407 //\r
408 if (Handle == STRUCTURE_HANDLE_INVALID) {\r
409 break;\r
410 }\r
411 //\r
412 // After LibGetSmbiosStructure(), handle then point to the next!\r
413 //\r
414 if (LibGetSmbiosStructure (&Handle, Buffer, &Length) != DMI_SUCCESS) {\r
415 break;\r
416 }\r
417\r
418 pStruct.Raw = Buffer;\r
419 Offset = (UINT16) (Offset + Length);\r
420\r
421 //\r
422 // general statistics\r
423 //\r
424 pStatistics->Index = Index;\r
425 pStatistics->Type = pStruct.Hdr->Type;\r
426 pStatistics->Handle = pStruct.Hdr->Handle;\r
427 pStatistics->Length = Length;\r
428 pStatistics->Addr = Offset;\r
429\r
430 pStatistics = &mStatisticsTable[Index];\r
431 }\r
432\r
433 return EFI_SUCCESS;\r
434}\r
435\r
436/**\r
437 Function to display the global mStatisticsTable object.\r
438\r
439 @param[in] Option ECHO, NORMAL, or DETAIL control the amount of detail displayed.\r
440\r
441 @retval EFI_SUCCESS print is successful.\r
442**/\r
443EFI_STATUS\r
444EFIAPI\r
445DisplayStatisticsTable (\r
446 IN UINT8 Option\r
447 )\r
448{\r
449 UINTN Index;\r
450 UINTN Num;\r
451 STRUCTURE_STATISTICS *pStatistics;\r
452 SMBIOS_STRUCTURE_TABLE *SMBiosTable;\r
453\r
454 SMBiosTable = NULL;\r
455 if (Option < SHOW_OUTLINE) {\r
456 return EFI_SUCCESS;\r
457 }\r
458 //\r
459 // display EPS information firstly\r
460 //\r
461 LibSmbiosGetEPS (&SMBiosTable);\r
462 if (SMBiosTable == NULL) {\r
463 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_TABLE), gShellDebug1HiiHandle);\r
464 return EFI_UNSUPPORTED;\r
465 }\r
466\r
467 ShellPrintEx(-1,-1,L"\n============================================================\n");\r
468 SmbiosPrintEPSInfo (SMBiosTable, Option);\r
469\r
470 if (Option < SHOW_NORMAL) {\r
471 return EFI_SUCCESS;\r
472 }\r
473\r
474 if (mStatisticsTable == NULL) {\r
475 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_STATS), gShellDebug1HiiHandle);\r
476 return EFI_NOT_FOUND;\r
477 }\r
478\r
479 ShellPrintEx(-1,-1,L"============================================================\n");\r
480 pStatistics = &mStatisticsTable[0];\r
481 Num = SMBiosTable->NumberOfSmbiosStructures;\r
482 //\r
483 // display statistics table content\r
484 //\r
485 for (Index = 1; Index <= Num; Index++) {\r
486 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_INDEX), gShellDebug1HiiHandle, pStatistics->Index);\r
487 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_TYPE), gShellDebug1HiiHandle, pStatistics->Type);\r
488 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_HANDLE), gShellDebug1HiiHandle, pStatistics->Handle);\r
489 if (Option >= SHOW_DETAIL) {\r
490 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_OFFSET), gShellDebug1HiiHandle, pStatistics->Addr);\r
491 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_LENGTH), gShellDebug1HiiHandle, pStatistics->Length);\r
492 }\r
493\r
494 ShellPrintEx(-1,-1,L"\n");\r
495 pStatistics = &mStatisticsTable[Index];\r
496/*\r
497 //\r
498 // Display 20 lines and wait for a page break\r
499 //\r
500 if (Index % 20 == 0) {\r
501 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_ENTER_CONTINUE), gShellDebug1HiiHandle);\r
502 Status = WaitEnter ();\r
503 if (EFI_ERROR (Status)) {\r
504 if (Status == EFI_ABORTED) {\r
505 return EFI_SUCCESS;\r
506 }\r
507\r
508 return Status;\r
509 }\r
510 }\r
511*/\r
512 }\r
513\r
514 return EFI_SUCCESS;\r
515}\r
516\r
517/**\r
518 function to return a string of the detail level.\r
519\r
520 @param[in] ShowType The detail level whose name is desired in clear text.\r
521\r
522 @return A pointer to a string representing the ShowType (or 'undefined type' if not known).\r
523**/\r
524CHAR16 *\r
525EFIAPI\r
526GetShowTypeString (\r
527 UINT8 ShowType\r
528 )\r
529{\r
530 //\r
531 // show type\r
532 //\r
533 switch (ShowType) {\r
534\r
535 case SHOW_NONE:\r
536 return L"SHOW_NONE";\r
537\r
538 case SHOW_OUTLINE:\r
539 return L"SHOW_OUTLINE";\r
540\r
541 case SHOW_NORMAL:\r
542 return L"SHOW_NORMAL";\r
543\r
544 case SHOW_DETAIL:\r
545 return L"SHOW_DETAIL";\r
546\r
547 case SHOW_ALL:\r
548 return L"SHOW_ALL";\r
549\r
550 default:\r
551 return L"Undefined type";\r
552 }\r
553}\r
554\r
555/*\r
556EFI_STATUS\r
557InitializeSmbiosViewApplicationGetLineHelp (\r
558 OUT CHAR16 **Str\r
559 )\r
560{\r
561 return LibCmdGetStringByToken (STRING_ARRAY_NAME, &EfiSmbiosViewGuid, STRING_TOKEN (STR_SMBIOSVIEW_LINE_HELP), Str);\r
562}\r
563*/\r