]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/MiscSubClassPlatformDxe/MiscSystemLanguageStringFunction.c
Nt32Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Nt32Pkg / MiscSubClassPlatformDxe / MiscSystemLanguageStringFunction.c
CommitLineData
5e973c96 1/** @file\r
1fdd39d3 2\r
7ee85aa2 3Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
9d2eedba 4SPDX-License-Identifier: BSD-2-Clause-Patent\r
1fdd39d3 5\r
5e973c96 6**/\r
1fdd39d3 7\r
8#include "MiscSubclassDriver.h"\r
9/**\r
10 This function makes boot time changes to the contents of the\r
11 MiscOemString (Type 11).\r
12\r
13 @param RecordData Pointer to copy of RecordData from the Data Table. \r
14\r
15 @retval EFI_SUCCESS All parameters were valid.\r
16 @retval EFI_UNSUPPORTED Unexpected RecordType value.\r
17 @retval EFI_INVALID_PARAMETER Invalid parameter was found.\r
18\r
19**/\r
20MISC_SMBIOS_TABLE_FUNCTION(SystemLanguageString)\r
21{\r
22 EFI_STATUS Status;\r
23 EFI_SMBIOS_HANDLE SmbiosHandle;\r
24 SMBIOS_TABLE_TYPE13 *SmbiosRecord;\r
25 UINTN StrLeng;\r
26 CHAR8 *OptionalStrStart;\r
27 EFI_STRING Str;\r
28 STRING_REF TokenToGet;\r
29 \r
30\r
31 //\r
32 // First check for invalid parameters.\r
33 //\r
34 if (RecordData == NULL) {\r
35 return EFI_INVALID_PARAMETER;\r
36 }\r
37\r
38 TokenToGet = STRING_TOKEN (STR_MISC_SYSTEM_LANGUAGE_STRING);\r
39 Str = HiiGetPackageString(&gEfiCallerIdGuid, TokenToGet, NULL);\r
40 StrLeng = StrLen(Str);\r
41 if (StrLeng > SMBIOS_STRING_MAX_LENGTH) {\r
42 return EFI_UNSUPPORTED;\r
43 }\r
44\r
45 //\r
46 // Two zeros following the last string.\r
47 //\r
48 SmbiosRecord = AllocatePool(sizeof (SMBIOS_TABLE_TYPE13) + StrLeng + 1 + 1);\r
49 ZeroMem(SmbiosRecord, sizeof (SMBIOS_TABLE_TYPE13) + StrLeng + 1 + 1);\r
50\r
51 SmbiosRecord->Hdr.Type = EFI_SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION;\r
52 SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE13);\r
53 //\r
54 // Make handle chosen by smbios protocol.add automatically.\r
55 // \r
56 SmbiosRecord->Hdr.Handle = 0;\r
57 SmbiosRecord->InstallableLanguages = 1;\r
58 SmbiosRecord->Flags = 1;\r
59 SmbiosRecord->CurrentLanguages = 1;\r
60 OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);\r
61 UnicodeStrToAsciiStr(Str, OptionalStrStart);\r
62 \r
63\r
64 //\r
65 // Now we have got the full smbios record, call smbios protocol to add this record.\r
66 //\r
7ee85aa2
SZ
67 Status = AddSmbiosRecord (Smbios, &SmbiosHandle, (EFI_SMBIOS_TABLE_HEADER *) SmbiosRecord);\r
68\r
1fdd39d3 69 FreePool(SmbiosRecord);\r
70 return Status;\r
71}\r
72\r