- //\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