FeaturePcdGet (PcdConOutUgaSupport));\r
\r
//\r
- // The driver creates virtual handles for ConIn, ConOut, and StdErr.\r
+ // The driver creates virtual handles for ConIn, ConOut.\r
// The virtual handles will always exist even if no console exist in the\r
// system. This is need to support hotplug devices like USB.\r
//\r
//\r
- // Create virtual device handle for StdErr Splitter\r
- //\r
- Status = ConSplitterTextOutConstructor (&mStdErr);\r
- if (!EFI_ERROR (Status)) {\r
- Status = gBS->InstallMultipleProtocolInterfaces (\r
- &mStdErr.VirtualHandle,\r
- &gEfiSimpleTextOutProtocolGuid,\r
- &mStdErr.TextOut,\r
- NULL\r
- );\r
- }\r
- //\r
// Create virtual device handle for ConIn Splitter\r
//\r
Status = ConSplitterTextInConstructor (&mConIn);\r
EFI_STATUS Status;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
\r
+ if (mStdErr.CurrentNumberOfConsoles == 0) {\r
+ //\r
+ // Create virtual device handle for StdErr Splitter\r
+ //\r
+ Status = ConSplitterTextOutConstructor (&mStdErr);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &mStdErr.VirtualHandle,\r
+ &gEfiSimpleTextOutProtocolGuid,\r
+ &mStdErr.TextOut,\r
+ NULL\r
+ );\r
+ }\r
+ \r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ }\r
+\r
//\r
// Start ConSplitter on ControllerHandle, and create the virtual\r
// agrogated console device on first call Start for a StandardError handle.\r
}\r
\r
if (mStdErr.CurrentNumberOfConsoles == 1) {\r
+ //\r
+ // Create virtual device handle for StdErr Splitter\r
+ //\r
+ Status = ConSplitterTextOutConstructor (&mStdErr);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
+ &mStdErr.VirtualHandle,\r
+ &gEfiSimpleTextOutProtocolGuid,\r
+ &mStdErr.TextOut,\r
+ NULL\r
+ );\r
+ }\r
+\r
gST->StandardErrorHandle = mStdErr.VirtualHandle;\r
gST->StdErr = &mStdErr.TextOut;\r
//\r
gST->Hdr.HeaderSize,\r
&gST->Hdr.CRC32\r
);\r
+\r
+ //\r
+ // Uninstall Simple Text Output protocol from StdErr Handle.\r
+ //\r
+ gBS->UninstallMultipleProtocolInterfaces (\r
+ mStdErr.VirtualHandle,\r
+ &gEfiSimpleTextOutProtocolGuid,\r
+ &mStdErr.TextOut,\r
+ NULL\r
+ );\r
}\r
\r
return Status;\r
Private = TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
\r
BackSpaceCount = 0;\r
+\r
for (TargetString = WString; *TargetString != L'\0'; TargetString++) {\r
if (*TargetString == CHAR_BACKSPACE) {\r
BackSpaceCount++;\r