Three GUIDs had been retired, PrimaryConsoleInDeviceGuid, PrimaryConsoleOutDeviceGuid...
[mirror_edk2.git] / EdkShellPkg / ShellHotFix.patch
1 Index: drivers/drivers.c
2 ===================================================================
3 --- drivers/drivers.c (revision 30)
4 +++ drivers/drivers.c (working copy)
5 @@ -130,6 +130,7 @@
6 UINTN StringIndex;
7 UINTN Index;
8 CHAR8 *Language;
9 + CHAR8 *PlatformLanguage;
10 UINTN DriverImageHandleCount;
11 EFI_HANDLE *DriverImageHandleBuffer;
12 UINTN HandleIndex;
13 @@ -152,6 +153,7 @@
14 SHELL_VAR_CHECK_PACKAGE ChkPck;
15
16 Language = NULL;
17 + PlatformLanguage = NULL;
18 DriverImageHandleCount = 0;
19 DriverImageHandleBuffer = NULL;
20 IsHelp = FALSE;
21 @@ -241,7 +243,7 @@
22 goto Done;
23 }
24
25 - Language = LibGetVariableLang ();
26 + Language = LibGetVariable (L"Lang", &gEfiGlobalVariableGuid);
27 if (Language == NULL) {
28 Language = (CHAR8 *)AllocateZeroPool(strlena(LanguageCodeEnglish) + 1);
29 if (Language == NULL) {
30 @@ -250,6 +252,15 @@
31 strcpya(Language, LanguageCodeEnglish);
32 }
33
34 + PlatformLanguage = LibGetVariable (L"PlatformLang", &gEfiGlobalVariableGuid);
35 + if (PlatformLanguage == NULL) {
36 + PlatformLanguage = (CHAR8 *)AllocateZeroPool(strlena(PlatformLanguageCodeEnglish) + 1);
37 + if (PlatformLanguage == NULL) {
38 + return EFI_OUT_OF_RESOURCES;
39 + }
40 + strcpya(PlatformLanguage, PlatformLanguageCodeEnglish);
41 + }
42 +
43 Item = LibCheckVarGetFlag (&ChkPck, L"-l");
44 if (Item) {
45 if (Language != NULL) {
46 @@ -314,14 +325,6 @@
47 EFI_OPEN_PROTOCOL_GET_PROTOCOL
48 );
49
50 - ComponentName = NULL;
51 - ComponentName2 = NULL;
52 - Status = LibGetComponentNameProtocol (
53 - DriverImageHandleBuffer[Index],
54 - &ComponentName,
55 - &ComponentName2
56 - );
57 -
58 DiagnosticsStatus = BS->OpenProtocol (
59 DriverImageHandleBuffer[Index],
60 &gEfiDriverDiagnostics2ProtocolGuid,
61 @@ -418,37 +421,73 @@
62 } else {
63 PrintToken (STRING_TOKEN (STR_SHELLENV_PROTID_ONE_VAR_D), HiiHandle, NumberOfChildren);
64 }
65 -
66 - Status = EFI_SUCCESS;
67 +
68 DriverName = L"<UNKNOWN>";
69 - SupportedLanguage = NULL;
70 - if (ComponentName != NULL) {
71 - if (ComponentName->GetDriverName != NULL) {
72 - SupportedLanguage = LibConvertSupportedLanguage (ComponentName->SupportedLanguages, Language);
73 + Status = BS->OpenProtocol (
74 + DriverImageHandleBuffer[Index],
75 + &gEfiComponentName2ProtocolGuid,
76 + (VOID **) &ComponentName2,
77 + NULL,
78 + NULL,
79 + EFI_OPEN_PROTOCOL_GET_PROTOCOL
80 + );
81 + if (!EFI_ERROR (Status)) {
82 + //
83 + // Driver has Component Name 2 Protocol is available, we get the
84 + // driver name var RFC 3066 language code
85 + //
86 + Status = ComponentName2->GetDriverName (
87 + ComponentName2,
88 + PlatformLanguage,
89 + &DriverName
90 + );
91 + if (EFI_ERROR (Status)) {
92 + //
93 + // Current RFC3066 language code fails, we then extract the supported
94 + // language from Component Name 2 protocol interface.
95 + //
96 + SupportedLanguage = ExtractSupportedLanguage(ComponentName2->SupportedLanguages, Language);
97 + if (SupportedLanguage != NULL) {
98 + Status = ComponentName2->GetDriverName (
99 + ComponentName2,
100 + SupportedLanguage,
101 + &DriverName
102 + );
103 + FreePool(SupportedLanguage);
104 + }
105 + }
106 + }
107 + if (EFI_ERROR (Status)) {
108 + //
109 + // In case Component Name 2 protocol is not available or some error occurs
110 + // when getting driver name from Component Name 2 protocol, we get driver
111 + // name from Component Name protocol.
112 + //
113 + Status = BS->OpenProtocol (
114 + DriverImageHandleBuffer[Index],
115 + &gEfiComponentNameProtocolGuid,
116 + (VOID **) &ComponentName,
117 + NULL,
118 + NULL,
119 + EFI_OPEN_PROTOCOL_GET_PROTOCOL
120 + );
121 + if (!EFI_ERROR (Status)) {
122 Status = ComponentName->GetDriverName (
123 ComponentName,
124 - SupportedLanguage,
125 + Language,
126 &DriverName
127 );
128 }
129 - } else if (ComponentName2 != NULL) {
130 - if (ComponentName2->GetDriverName != NULL) {
131 - SupportedLanguage = LibConvertSupportedLanguage (ComponentName2->SupportedLanguages, Language);
132 - Status = ComponentName2->GetDriverName (
133 - ComponentName2,
134 - SupportedLanguage,
135 - &DriverName
136 - );
137 - }
138 }
139 - if (SupportedLanguage != NULL) {
140 - FreePool (SupportedLanguage);
141 - }
142 -
143 if (EFI_ERROR (Status)) {
144 + //
145 + // Fails to get driver name from either Component Name 2 & Component Name
146 + // Protocol, we show "<UNKNOWN>" string as driver name.
147 + //
148 DriverName = L"<UNKNOWN>";
149 }
150
151 +
152 for (StringIndex = 0; StringIndex < StrLen (DriverName) && StringIndex < 35; StringIndex++) {
153 FormattedDriverName[StringIndex] = DriverName[StringIndex];
154 }
155 @@ -491,6 +530,10 @@
156 FreePool (Language);
157 }
158
159 + if (PlatformLanguage != NULL) {
160 + FreePool (PlatformLanguage);
161 + }
162 +
163 ShellCloseHandleEnumerator ();
164 LibCheckVarFreeVarList (&ChkPck);
165 LibUnInitializeStrings ();
166 Index: edit/libEditor.c
167 ===================================================================
168 --- edit/libEditor.c (revision 30)
169 +++ edit/libEditor.c (working copy)
170 @@ -88,8 +88,6 @@
171 )
172 {
173 EFI_STATUS Status;
174 - EFI_HANDLE *HandleBuffer;
175 - UINTN HandleCount;
176
177 //
178 // basic initialization
179 @@ -117,38 +115,22 @@
180 );
181
182 //
183 - // Find mouse
184 + // Find mouse in System Table ConsoleInHandle
185 //
186 - HandleBuffer = NULL;
187 - Status = LibLocateHandle (
188 - ByProtocol,
189 - &gEfiPrimaryConsoleInDeviceGuid,
190 - NULL,
191 - &HandleCount,
192 - &HandleBuffer
193 - );
194 + Status = BS->HandleProtocol (
195 + In,
196 + &gEfiSimplePointerProtocolGuid,
197 + &MainEditor.MouseInterface
198 + );
199
200 - if (!EFI_ERROR (Status)) {
201 - if (HandleCount > 0) {
202 - Status = BS->HandleProtocol (
203 - HandleBuffer[0],
204 - &gEfiSimplePointerProtocolGuid,
205 - &MainEditor.MouseInterface
206 - );
207 -
208 - if (EFI_ERROR (Status)) {
209 - MainEditor.MouseInterface = NULL;
210 - } else {
211 - MainEditor.MouseAccumulatorX = 0;
212 - MainEditor.MouseAccumulatorY = 0;
213 - MainEditor.MouseSupported = TRUE;
214 - }
215 - }
216 + if (EFI_ERROR (Status)) {
217 + MainEditor.MouseInterface = NULL;
218 + } else {
219 + MainEditor.MouseAccumulatorX = 0;
220 + MainEditor.MouseAccumulatorY = 0;
221 + MainEditor.MouseSupported = TRUE;
222 }
223
224 - if (HandleBuffer) {
225 - FreePool (HandleBuffer);
226 - }
227 //
228 // below will call the five components' init function
229 //
230 Index: edit/libFileBuffer.c
231 ===================================================================
232 --- edit/libFileBuffer.c (revision 30)
233 +++ edit/libFileBuffer.c (working copy)
234 @@ -735,7 +735,7 @@
235 UINTN LineSize;
236 VOID *Buffer;
237 CHAR16 *UnicodeBuffer;
238 - CHAR8 *AsciiBuffer;
239 + UINT8 *AsciiBuffer;
240 UINTN FileSize;
241 EFI_FILE_HANDLE Handle;
242 BOOLEAN CreateFile;
243 @@ -1047,7 +1047,7 @@
244 //
245 // Unicode file
246 //
247 - if (AsciiBuffer[0] == 0xff && AsciiBuffer[1] == 0xfe) {
248 + if ((FileSize >= 2) && (*((UINT16 *) Buffer) == EFI_UNICODE_BYTE_ORDER_MARK)) {
249 //
250 // Unicode file's size should be even
251 //
252 Index: hexedit/libEditor.c
253 ===================================================================
254 --- hexedit/libEditor.c (revision 30)
255 +++ hexedit/libEditor.c (working copy)
256 @@ -100,8 +100,6 @@
257 --*/
258 {
259 EFI_STATUS Status;
260 - EFI_HANDLE *HandleBuffer;
261 - UINTN HandleCount;
262
263 //
264 // basic initialization
265 @@ -129,36 +127,19 @@
266 &(HMainEditor.ScreenSize.Row)
267 );
268
269 - HandleBuffer = NULL;
270 - Status = LibLocateHandle (
271 - ByProtocol,
272 - &gEfiPrimaryConsoleInDeviceGuid,
273 - NULL,
274 - &HandleCount,
275 - &HandleBuffer
276 - );
277 -
278 - if (!EFI_ERROR (Status)) {
279 -
280 - if (HandleCount > 0) {
281 - Status = BS->HandleProtocol (
282 - HandleBuffer[0],
283 - &gEfiSimplePointerProtocolGuid,
284 - &HMainEditor.MouseInterface
285 - );
286 - if (EFI_ERROR (Status)) {
287 - HMainEditor.MouseInterface = NULL;
288 - } else {
289 - HMainEditor.MouseAccumulatorX = 0;
290 - HMainEditor.MouseAccumulatorY = 0;
291 - HMainEditor.MouseSupported = TRUE;
292 - }
293 - }
294 + Status = BS->HandleProtocol (
295 + In,
296 + &gEfiSimplePointerProtocolGuid,
297 + &HMainEditor.MouseInterface
298 + );
299 + if (EFI_ERROR (Status)) {
300 + HMainEditor.MouseInterface = NULL;
301 + } else {
302 + HMainEditor.MouseAccumulatorX = 0;
303 + HMainEditor.MouseAccumulatorY = 0;
304 + HMainEditor.MouseSupported = TRUE;
305 }
306
307 - if (HandleBuffer != NULL) {
308 - FreePool (HandleBuffer);
309 - }
310 //
311 // below will call the five components' init function
312 //
313 Index: Library/EfiShellLib.h
314 ===================================================================
315 --- Library/EfiShellLib.h (revision 30)
316 +++ Library/EfiShellLib.h (working copy)
317 @@ -174,22 +174,23 @@
318 //
319 // Environment variable name constants
320 //
321 -#define VarLanguageCodes L"LangCodes"
322 -#define VarLanguage L"Lang"
323 -#define VarTimeout L"Timeout"
324 -#define VarConsoleIn L"ConIn"
325 -#define VarConsoleOut L"ConOut"
326 -#define VarErrorOut L"ErrOut"
327 -#define VarBootOption L"Boot%04x"
328 -#define VarBootOrder L"BootOrder"
329 -#define VarBootNext L"BootNext"
330 -#define VarBootCurrent L"BootCurrent"
331 -#define VarDriverOption L"Driver%04x"
332 -#define VarDriverOrder L"DriverOrder"
333 -#define VarConsoleInpDev L"ConInDev"
334 -#define VarConsoleOutDev L"ConOutDev"
335 -#define VarErrorOutDev L"ErrOutDev"
336 -#define LanguageCodeEnglish "eng"
337 +#define VarLanguageCodes L"LangCodes"
338 +#define VarLanguage L"Lang"
339 +#define VarTimeout L"Timeout"
340 +#define VarConsoleIn L"ConIn"
341 +#define VarConsoleOut L"ConOut"
342 +#define VarErrorOut L"ErrOut"
343 +#define VarBootOption L"Boot%04x"
344 +#define VarBootOrder L"BootOrder"
345 +#define VarBootNext L"BootNext"
346 +#define VarBootCurrent L"BootCurrent"
347 +#define VarDriverOption L"Driver%04x"
348 +#define VarDriverOrder L"DriverOrder"
349 +#define VarConsoleInpDev L"ConInDev"
350 +#define VarConsoleOutDev L"ConOutDev"
351 +#define VarErrorOutDev L"ErrOutDev"
352 +#define LanguageCodeEnglish "eng"
353 +#define PlatformLanguageCodeEnglish "en-US"
354
355 #define ISO_639_2_ENTRY_SIZE 3
356 #define RFC_3066_ENTRY_SIZE 12
357 @@ -333,4 +334,10 @@
358 IN CHAR8 *LangCode
359 );
360
361 +CHAR8 *
362 +ExtractSupportedLanguage (
363 + IN CONST CHAR8 *SupportedLanguages,
364 + IN CONST CHAR8 *Language
365 + );
366 +
367 #endif
368 Index: Library/Misc.c
369 ===================================================================
370 --- Library/Misc.c (revision 30)
371 +++ Library/Misc.c (working copy)
372 @@ -1905,13 +1905,13 @@
373 IN VOID *UserData
374 )
375 {
376 - CHAR8 *Data;
377 + UINT8 *Data;
378
379 CHAR8 Val[50];
380
381 CHAR8 Str[20];
382
383 - CHAR8 c;
384 + UINT8 c;
385 UINTN Size;
386 UINTN Index;
387
388 @@ -2271,3 +2271,76 @@
389 }
390 return Lang;
391 }
392 +
393 +CHAR8 *
394 +ExtractSupportedLanguage (
395 + IN CONST CHAR8 *SupportedLanguages,
396 + IN CONST CHAR8 *Language
397 + )
398 +/*++
399 +
400 + Routine Description:
401 +
402 + This function matches the major language code (first two characters) in the
403 + SupportedLanguages. The first language code in the SupportedLanguages that
404 + matches first two characters of the input Language is returned. If there is no
405 + such match, then NULL is returned.
406 +
407 + Arguments:
408 +
409 + SupportedLanguages - A Null-terminated ASCII string that contains one
410 + or more supported language codes.
411 +
412 + LangCode - A pointer to a Null-terminated ASCII string
413 + array indicating the RFC 3066 language.
414 +
415 + Returns:
416 +
417 + The RFC3066 language code that matches the major language.
418 +
419 +--*/
420 +{
421 + CONST CHAR8 *CurrentLanguage;
422 + CHAR8 *SupportedLanguage;
423 + UINTN LanguageLen;
424 +
425 + CurrentLanguage = SupportedLanguages;
426 +
427 + while (CurrentLanguage != '\0') {
428 + //
429 + // Search till the end of current language.
430 + //
431 + LanguageLen = 0;
432 + while (CurrentLanguage[LanguageLen] != ';' && CurrentLanguage[LanguageLen] != '\0') {
433 + LanguageLen++;
434 + }
435 +
436 + //
437 + // should use AsciiStrnCmp(CurrentLanguage, Language, 2) == 0
438 + //
439 + if ((CurrentLanguage[0] == Language[0]) && (CurrentLanguage[1] == Language[1])) {
440 + //
441 + // Match the major language code, then return a new copy of
442 + // NULL-terminated SupportedLanguage.
443 + //
444 + SupportedLanguage = AllocatePool (LanguageLen + 1);
445 + CopyMem (SupportedLanguage, (VOID *) CurrentLanguage, LanguageLen);
446 +
447 + SupportedLanguage[LanguageLen] = '\0';
448 +
449 + return SupportedLanguage;
450 + }
451 + //
452 + // Make CurrentLangue point to the next candiate language code.
453 + //
454 + CurrentLanguage += LanguageLen;
455 + if (*CurrentLanguage == ';') {
456 + CurrentLanguage++;
457 + }
458 + }
459 +
460 + return NULL;
461 +}
462 +
463 +
464 +
465 Index: shellenv/batch.c
466 ===================================================================
467 --- shellenv/batch.c (revision 30)
468 +++ shellenv/batch.c (working copy)
469 @@ -2074,17 +2074,17 @@
470 --*/
471 {
472 //
473 - // UNICODE byte-order-mark is two bytes
474 + // UNICODE byte-order-mark is 16 bits
475 //
476 - CHAR8 Buffer8[2];
477 + UINT16 Uint16;
478 UINTN BufSize;
479 EFI_STATUS Status;
480
481 //
482 // Read the first two bytes to check for byte order mark
483 //
484 - BufSize = sizeof (Buffer8);
485 - Status = File->Read (File, &BufSize, Buffer8);
486 + BufSize = sizeof (Uint16);
487 + Status = File->Read (File, &BufSize, &Uint16);
488 if (EFI_ERROR (Status)) {
489 return Status;
490 }
491 @@ -2098,9 +2098,8 @@
492 // otherwise assume it is ASCII. UNICODE byte order mark on
493 // IA little endian is first byte 0xff and second byte 0xfe
494 //
495 - if ((Buffer8[0] | (Buffer8[1] << 8)) == EFI_UNICODE_BYTE_ORDER_MARK) {
496 + if ((BufSize == 2) && (Uint16 == EFI_UNICODE_BYTE_ORDER_MARK)) {
497 *IsAscii = FALSE;
498 -
499 } else {
500 *IsAscii = TRUE;
501 }
502 Index: shellenv/Connect.c
503 ===================================================================
504 --- shellenv/Connect.c (revision 30)
505 +++ shellenv/Connect.c (working copy)
506 @@ -831,6 +831,16 @@
507 return Status;
508 }
509
510 + //
511 + // Close proxy console before disconnect all devices.
512 + //
513 + SEnvCloseConsoleProxy (
514 + ST->ConsoleInHandle,
515 + &ST->ConIn,
516 + ST->ConsoleOutHandle,
517 + &ST->ConOut
518 + );
519 +
520 for (Index = 0; Index < AllHandleCount; Index++) {
521 //
522 // Check whether the handle is still in handle database
523 @@ -1004,7 +1014,6 @@
524 VOID
525 SEnvConnectConsole (
526 CHAR16 *VariableName,
527 - EFI_GUID *PrimaryGuid,
528 EFI_GUID *ConsoleGuid,
529 EFI_HANDLE *ConsoleHandle,
530 VOID **ConsoleInterface
531 @@ -1018,9 +1027,8 @@
532 EFI_HANDLE *AllHandleBuffer;
533 VOID *Interface;
534
535 - *ConsoleHandle = NULL;
536 - *ConsoleInterface = NULL;
537 ConsoleIndex = 0;
538 + AllHandleBuffer = NULL;
539
540 DevicePath = LibGetVariable (VariableName, &gEfiGlobalVariableGuid);
541 if (DevicePath != NULL) {
542 @@ -1028,17 +1036,19 @@
543 FreePool (DevicePath);
544 }
545
546 - AllHandleBuffer = NULL;
547 - Status = BS->LocateHandleBuffer (
548 - ByProtocol,
549 - PrimaryGuid,
550 - NULL,
551 - &AllHandleCount,
552 - &AllHandleBuffer
553 - );
554 - if (!EFI_ERROR (Status) && AllHandleCount > 0) {
555 - *ConsoleHandle = AllHandleBuffer[0];
556 - } else if (*ConsoleHandle == NULL) {
557 + Status = EFI_NOT_FOUND;
558 + //
559 + // Check ConsoleHandle validation whatever it was updated or not.
560 + //
561 + if (*ConsoleHandle != NULL) {
562 + Status = BS->HandleProtocol (
563 + *ConsoleHandle,
564 + ConsoleGuid,
565 + &Interface
566 + );
567 + }
568 +
569 + if (EFI_ERROR (Status)) {
570 AllHandleBuffer = NULL;
571 Status = BS->LocateHandleBuffer (
572 ByProtocol,
573 @@ -1063,16 +1073,16 @@
574 &gEfiDevicePathProtocolGuid,
575 &Interface
576 );
577 - if (EFI_ERROR (Status)) {
578 + if (!EFI_ERROR (Status)) {
579 ConsoleIndex = Index;
580 break;
581 }
582 }
583 +
584 + *ConsoleHandle = AllHandleBuffer[ConsoleIndex];
585 }
586 }
587
588 - *ConsoleHandle = AllHandleBuffer[ConsoleIndex];
589 -
590 if (*ConsoleHandle != NULL) {
591 BS->HandleProtocol (
592 *ConsoleHandle,
593 @@ -1081,7 +1091,7 @@
594 );
595 }
596
597 - if (AllHandleBuffer) {
598 + if (AllHandleBuffer != NULL) {
599 FreePool (AllHandleBuffer);
600 }
601 }
602 @@ -1189,8 +1199,7 @@
603 EFI_STATUS Status;
604
605 //
606 - // Check current ConIn and ConOut to ensure it is the ConsoleProxy
607 - // Otherwise, the Console should not be close
608 + // Check current ConIn and ConOut to judge it is the ConsoleProxy
609 //
610 Status = SEnvCheckConsoleProxy (
611 ST->ConsoleInHandle,
612 @@ -1203,23 +1212,21 @@
613 // Indicate the Console is replaced by redirection operation
614 // It is not safe to connect Console here
615 //
616 - if (EFI_ERROR (Status)) {
617 - return ;
618 + if (!EFI_ERROR (Status)) {
619 + //
620 + // It is proxy console, to prevent the proxy console form being restored to original console,
621 + // close it temporary before connect all console
622 + //
623 + SEnvCloseConsoleProxy (
624 + ST->ConsoleInHandle,
625 + &ST->ConIn,
626 + ST->ConsoleOutHandle,
627 + &ST->ConOut
628 + );
629 }
630 - //
631 - // To prevent the proxy console form being restored to original console,
632 - // close it temporary before connect all console
633 - //
634 - SEnvCloseConsoleProxy (
635 - ST->ConsoleInHandle,
636 - &ST->ConIn,
637 - ST->ConsoleOutHandle,
638 - &ST->ConOut
639 - );
640
641 SEnvConnectConsole (
642 VarErrorOut,
643 - &gEfiPrimaryStandardErrorDeviceGuid,
644 &gEfiSimpleTextOutProtocolGuid,
645 &ST->StandardErrorHandle,
646 (VOID **) &ST->StdErr
647 @@ -1227,7 +1234,6 @@
648
649 SEnvConnectConsole (
650 VarConsoleOut,
651 - &gEfiPrimaryConsoleOutDeviceGuid,
652 &gEfiSimpleTextOutProtocolGuid,
653 &ST->ConsoleOutHandle,
654 (VOID **) &ST->ConOut
655 @@ -1235,7 +1241,6 @@
656
657 SEnvConnectConsole (
658 VarConsoleIn,
659 - &gEfiPrimaryConsoleInDeviceGuid,
660 &gEfiSimpleTextInProtocolGuid,
661 &ST->ConsoleInHandle,
662 (VOID **) &ST->ConIn
663 @@ -1254,6 +1259,8 @@
664 SetCrc (&ST->Hdr);
665 }
666
667 +
668 +
669 EFI_STATUS
670 EFIAPI
671 SEnvCmdReconnect (
672 Index: SmbiosView/PrintInfo.c
673 ===================================================================
674 --- SmbiosView/PrintInfo.c (revision 30)
675 +++ SmbiosView/PrintInfo.c (working copy)
676 @@ -1779,7 +1779,7 @@
677 //
678 // MaxSize is determined by follow formula
679 //
680 - MaxSize = 1 << Size;
681 + MaxSize = (UINTN) 1 << Size;
682 PrintToken (STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), HiiHandle, MaxSize);
683
684 if (Option >= SHOW_DETAIL) {
685 Index: SmbiosView/Smbios.h
686 ===================================================================
687 --- SmbiosView/Smbios.h (revision 30)
688 +++ SmbiosView/Smbios.h (working copy)
689 @@ -34,11 +34,6 @@
690
691 extern EFI_HII_HANDLE HiiHandle;
692
693 -#define EFI_SMBIOS_TABLE_GUID \
694 - { \
695 - 0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d \
696 - }
697
698 -extern EFI_GUID gEfiSmbiosTableGuid;
699
700 #endif