]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/ConSplitterDxe/ComponentName.c
Update the copyright notice format
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ComponentName.c
index 20dba84ef2d767abd44efacfa5f74a46773e73ba..4f1b8fac2e1dc2d5fd912390f26460183b9b00e9 100644 (file)
-/*++\r
+/** @file\r
+  UEFI Component Name(2) protocol implementation for ConSplitter driver.\r
 \r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
 \r
-Module Name:\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
-  ComponentName.c\r
-\r
-Abstract:\r
-\r
---*/\r
+**/\r
 \r
 #include "ConSplitter.h"\r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConInComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConInComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterConInComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterConInComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
 \r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterSimplePointerComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterSimplePointerComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterSimplePointerComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterSimplePointerComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
+\r
+//\r
+// EFI Component Name Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName = {\r
+  ConSplitterComponentNameGetDriverName,\r
+  ConSplitterAbsolutePointerComponentNameGetControllerName,\r
+  "eng"\r
+};\r
 \r
+//\r
+// EFI Component Name 2 Protocol\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2 = {\r
+  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
+  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterAbsolutePointerComponentNameGetControllerName,\r
+  "en"\r
+};\r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConOutComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConOutComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterConOutComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterConOutComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
 \r
 \r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL  gConSplitterStdErrComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gConSplitterStdErrComponentName = {\r
   ConSplitterComponentNameGetDriverName,\r
   ConSplitterStdErrComponentNameGetControllerName,\r
   "eng"\r
-  };\r
+};\r
 \r
 //\r
 // EFI Component Name 2 Protocol\r
 //\r
-EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2 = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2 = {\r
   (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,\r
   (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterStdErrComponentNameGetControllerName,\r
   "en"\r
-  };\r
+};\r
 \r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Console Splitter Driver"\r
@@ -106,7 +118,7 @@ static EFI_UNICODE_STRING_TABLE mConSplitterDriverNameTable[] = {
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Console Input Device"\r
@@ -117,7 +129,7 @@ static EFI_UNICODE_STRING_TABLE mConSplitterConInControllerNameTable[] = {
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Simple Pointer Device"\r
@@ -128,7 +140,18 @@ static EFI_UNICODE_STRING_TABLE mConSplitterSimplePointerControllerNameTable[] =
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterAbsolutePointerControllerNameTable[] = {\r
+  {\r
+    "eng;en",\r
+    (CHAR16 *)L"Primary Absolute Pointer Device"\r
+  },\r
+  {\r
+    NULL,\r
+    NULL\r
+  }\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Console Output Device"\r
@@ -139,7 +162,7 @@ static EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {
   }\r
 };\r
 \r
-static EFI_UNICODE_STRING_TABLE mConSplitterStdErrControllerNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterStdErrControllerNameTable[] = {\r
   {\r
     "eng;en",\r
     (CHAR16 *) L"Primary Standard Error Device"\r
@@ -170,7 +193,7 @@ static EFI_UNICODE_STRING_TABLE mConSplitterStdErrControllerNameTable[] = {
                                 languages specified in SupportedLanguages. The\r
                                 number of languages supported by a driver is up\r
                                 to the driver writer. Language is specified\r
-                                in RFC 3066 or ISO 639-2 language code format.\r
+                                in RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  DriverName[out]       A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -202,10 +225,79 @@ ConSplitterComponentNameGetDriverName (
            This->SupportedLanguages,\r
            mConSplitterDriverNameTable,\r
            DriverName,\r
-           (BOOLEAN)(This == &gConSplitterConInComponentName)\r
+           (BOOLEAN)((This == &gConSplitterConInComponentName) || \r
+                     (This == &gConSplitterSimplePointerComponentName) ||\r
+                     (This == &gConSplitterAbsolutePointerComponentName) ||\r
+                     (This == &gConSplitterConOutComponentName) ||\r
+                     (This == &gConSplitterStdErrComponentName))\r
            );\r
 }\r
 \r
+/**\r
+  Tests whether a controller handle is being managed by a specific driver and\r
+  the child handle is a child device of the controller.\r
+\r
+  @param  ControllerHandle     A handle for a controller to test.\r
+  @param  DriverBindingHandle  Specifies the driver binding handle for the\r
+                               driver.\r
+  @param  ProtocolGuid         Specifies the protocol that the driver specified\r
+                               by DriverBindingHandle opens in its Start()\r
+                               function.\r
+  @param  ChildHandle          A child handle to test.\r
+  @param  ConsumsedGuid        Supplies the protocol that the child controller\r
+                               opens on its parent controller.\r
+\r
+  @retval EFI_SUCCESS          ControllerHandle is managed by the driver\r
+                               specifed by DriverBindingHandle and ChildHandle\r
+                               is a child of the ControllerHandle.\r
+  @retval EFI_UNSUPPORTED      ControllerHandle is not managed by the driver\r
+                               specifed by DriverBindingHandle.\r
+  @retval EFI_UNSUPPORTED      ChildHandle is not a child of the\r
+                               ControllerHandle.\r
+\r
+**/\r
+EFI_STATUS\r
+ConSplitterTestControllerHandles (\r
+  IN  CONST EFI_HANDLE       ControllerHandle,\r
+  IN  CONST EFI_HANDLE       DriverBindingHandle,\r
+  IN  CONST EFI_GUID         *ProtocolGuid,\r
+  IN  EFI_HANDLE             ChildHandle,\r
+  IN  CONST EFI_GUID         *ConsumsedGuid\r
+  )\r
+{\r
+  EFI_STATUS                 Status;\r
+\r
+  //\r
+  // here ChildHandle is not an Optional parameter.\r
+  //\r
+  if (ChildHandle == NULL) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  //\r
+  // Tests whether a controller handle is being managed by a specific driver.\r
+  //\r
+  Status = EfiTestManagedDevice (\r
+             ControllerHandle,\r
+             DriverBindingHandle,\r
+             ProtocolGuid\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  //\r
+  // Tests whether a child handle is a child device of the controller.\r
+  //\r
+  Status = EfiTestChildHandle (\r
+             ControllerHandle,\r
+             ChildHandle,\r
+             ConsumsedGuid\r
+             );\r
+\r
+  return Status;\r
+}\r
+\r
 /**\r
   Retrieves a Unicode string that is the user readable name of the controller\r
   that is being managed by a driver.\r
@@ -243,7 +335,7 @@ ConSplitterComponentNameGetDriverName (
                                 languages specified in SupportedLanguages. The\r
                                 number of languages supported by a driver is up\r
                                 to the driver writer. Language is specified in\r
-                                RFC 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -285,24 +377,16 @@ ConSplitterConInComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                     Status;\r
-  EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimpleTextInProtocolGuid,\r
-                  (VOID **) &TextIn,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterConInDriverBinding.DriverBindingHandle,\r
+             &gEfiConsoleInDeviceGuid,\r
+             ChildHandle,\r
+             &gEfiConsoleInDeviceGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r
@@ -351,7 +435,7 @@ ConSplitterConInComponentNameGetControllerName (
                                 languages specified in SupportedLanguages. The\r
                                 number of languages supported by a driver is up\r
                                 to the driver writer. Language is specified in\r
-                                RFC 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -393,24 +477,16 @@ ConSplitterSimplePointerComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-  EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimplePointerProtocolGuid,\r
-                  (VOID **) &SimplePointer,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterSimplePointerDriverBinding.DriverBindingHandle,\r
+             &gEfiSimplePointerProtocolGuid,\r
+             ChildHandle,\r
+             &gEfiSimplePointerProtocolGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r
@@ -422,6 +498,83 @@ ConSplitterSimplePointerComponentNameGetControllerName (
            );\r
 }\r
 \r
+\r
+/**\r
+  Retrieves a Unicode string that is the user readable name of the controller\r
+  that is being managed by an EFI Driver.\r
+\r
+  @param  This                   A pointer to the EFI_COMPONENT_NAME_PROTOCOL\r
+                                 instance.\r
+  @param  ControllerHandle       The handle of a controller that the driver\r
+                                 specified by This is managing.  This handle\r
+                                 specifies the controller whose name is to be\r
+                                 returned.\r
+  @param  ChildHandle            The handle of the child controller to retrieve the\r
+                                 name of.  This is an optional parameter that may\r
+                                 be NULL.  It will be NULL for device drivers.  It\r
+                                 will also be NULL for a bus drivers that wish to\r
+                                 retrieve the name of the bus controller.  It will\r
+                                 not be NULL for a bus driver that wishes to\r
+                                 retrieve the name of a child controller.\r
+  @param  Language               A pointer to RFC4646 language identifier. This is\r
+                                 the language of the controller name that that the\r
+                                 caller is requesting, and it must match one of the\r
+                                 languages specified in SupportedLanguages.  The\r
+                                 number of languages supported by a driver is up to\r
+                                 the driver writer.\r
+  @param  ControllerName         A pointer to the Unicode string to return.  This\r
+                                 Unicode string is the name of the controller\r
+                                 specified by ControllerHandle and ChildHandle in\r
+                                 the language specified by Language from the point\r
+                                 of view of the driver specified by This.\r
+\r
+  @retval EFI_SUCCESS            The Unicode string for the user readable name in\r
+                                 the language specified by Language for the driver\r
+                                 specified by This was returned in DriverName.\r
+  @retval EFI_INVALID_PARAMETER  ControllerHandle is not a valid EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER  ChildHandle is not NULL and it is not a valid\r
+                                 EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER  Language is NULL.\r
+  @retval EFI_INVALID_PARAMETER  ControllerName is NULL.\r
+  @retval EFI_UNSUPPORTED        The driver specified by This is not currently\r
+                                 managing the controller specified by\r
+                                 ControllerHandle and ChildHandle.\r
+  @retval EFI_UNSUPPORTED        The driver specified by This does not support the\r
+                                 language specified by Language.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ConSplitterAbsolutePointerComponentNameGetControllerName (\r
+  IN  EFI_COMPONENT_NAME_PROTOCOL                    *This,\r
+  IN  EFI_HANDLE                                      ControllerHandle,\r
+  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
+  IN  CHAR8                                           *Language,\r
+  OUT CHAR16                                          **ControllerName\r
+  )\r
+{\r
+  EFI_STATUS                    Status;\r
+\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterAbsolutePointerDriverBinding.DriverBindingHandle,\r
+             &gEfiAbsolutePointerProtocolGuid,\r
+             ChildHandle,\r
+             &gEfiAbsolutePointerProtocolGuid\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  return LookupUnicodeString2 (\r
+           Language,\r
+           This->SupportedLanguages,\r
+           mConSplitterAbsolutePointerControllerNameTable,\r
+           ControllerName,\r
+           (BOOLEAN)(This == &gConSplitterAbsolutePointerComponentName)\r
+           );\r
+}\r
+\r
 /**\r
   Retrieves a Unicode string that is the user readable name of the controller\r
   that is being managed by a driver.\r
@@ -459,7 +612,7 @@ ConSplitterSimplePointerComponentNameGetControllerName (
                                 languages specified in SupportedLanguages. The\r
                                 number of languages supported by a driver is up\r
                                 to the driver writer. Language is specified in\r
-                                RFC 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -501,24 +654,16 @@ ConSplitterConOutComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                       Status;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *TextOut;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimpleTextOutProtocolGuid,\r
-                  (VOID **) &TextOut,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterConOutDriverBinding.DriverBindingHandle,\r
+             &gEfiConsoleOutDeviceGuid,\r
+             ChildHandle,\r
+             &gEfiConsoleOutDeviceGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r
@@ -567,7 +712,7 @@ ConSplitterConOutComponentNameGetControllerName (
                                 languages specified in SupportedLanguages. The\r
                                 number of languages supported by a driver is up\r
                                 to the driver writer. Language is specified in\r
-                                RFC 3066 or ISO 639-2 language code format.\r
+                                RFC 4646 or ISO 639-2 language code format.\r
 \r
   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
                                 This Unicode string is the name of the\r
@@ -609,24 +754,16 @@ ConSplitterStdErrComponentNameGetControllerName (
   )\r
 {\r
   EFI_STATUS                       Status;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *ErrOut;\r
-  //\r
-  // here ChildHandle is not an Optional parameter.\r
-  //\r
-  if (ChildHandle == NULL) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
 \r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiSimpleTextOutProtocolGuid,\r
-                  (VOID **) &ErrOut,\r
-                  NULL,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
+  Status = ConSplitterTestControllerHandles (\r
+             ControllerHandle,\r
+             gConSplitterStdErrDriverBinding.DriverBindingHandle,\r
+             &gEfiStandardErrorDeviceGuid,\r
+             ChildHandle,\r
+             &gEfiStandardErrorDeviceGuid\r
+             );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    return Status;\r
   }\r
 \r
   return LookupUnicodeString2 (\r