'\0'\r
};\r
\r
-EFI_HANDLE mHandle = NULL;\r
+STATIC EFI_HANDLE mHandle = NULL;\r
\r
-EFI_UNICODE_COLLATION_PROTOCOL UnicodeEng = {\r
+//\r
+// EFI Unicode Collation Protocol supporting ISO 639-2 language code\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_COLLATION_PROTOCOL UnicodeEng = {\r
EngStriColl,\r
EngMetaiMatch,\r
EngStrLwr,\r
};\r
\r
//\r
+// EFI Unicode Collation2 Protocol supporting RFC 3066 language code\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_COLLATION_PROTOCOL Unicode2Eng = {\r
+ EngStriColl,\r
+ EngMetaiMatch,\r
+ EngStrLwr,\r
+ EngStrUpr,\r
+ EngFatToStr,\r
+ EngStrToFat,\r
+ "en"\r
+};\r
+\r
//\r
+// Driver entry point.\r
//\r
EFI_STATUS\r
+EFIAPI\r
InitializeUnicodeCollationEng (\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_SYSTEM_TABLE *SystemTable\r
\r
--*/\r
{\r
+ EFI_STATUS Status;\r
UINTN Index;\r
UINTN Index2;\r
\r
Index2 = mOtherChars[Index];\r
mEngInfoMap[Index2] |= CHAR_FAT_VALID;\r
}\r
- //\r
- // Create a handle for the device\r
- //\r
- return gBS->InstallProtocolInterface (\r
- &mHandle,\r
- &gEfiUnicodeCollationProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- &UnicodeEng\r
- );\r
+\r
+ if (FeaturePcdGet (PcdUnicodeCollation2Support)) {\r
+ if (FeaturePcdGet (PcdUnicodeCollationSupport)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &mHandle,\r
+ &gEfiUnicodeCollationProtocolGuid,\r
+ &UnicodeEng,\r
+ &gEfiUnicodeCollation2ProtocolGuid,\r
+ &Unicode2Eng,\r
+ NULL\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &mHandle,\r
+ &gEfiUnicodeCollation2ProtocolGuid,\r
+ &Unicode2Eng,\r
+ NULL\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+ } else {\r
+ if (FeaturePcdGet (PcdUnicodeCollationSupport)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &mHandle,\r
+ &gEfiUnicodeCollationProtocolGuid,\r
+ &UnicodeEng,\r
+ NULL\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ } else {\r
+ //\r
+ // This module must support to produce at least one of Unicode Collation Protocol\r
+ // and Unicode Collation 2 Protocol.\r
+ //\r
+ ASSERT (FALSE);\r
+ Status = EFI_UNSUPPORTED;\r
+ }\r
+ }\r
+\r
+ return Status;\r
}\r
\r
INTN\r