]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update to support to produce Component Name and & Component Name 2 protocol based...
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Sat, 29 Sep 2007 11:22:46 +0000 (11:22 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Sat, 29 Sep 2007 11:22:46 +0000 (11:22 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3991 6f19259b-4bc3-4df7-8a09-765794883524

Nt32Pkg/WinNtGopDxe/ComponentName.c
Nt32Pkg/WinNtGopDxe/WinNtGop.h
Nt32Pkg/WinNtGopDxe/WinNtGopDriver.c

index 952db00dc28710f26f15fb7536ab6f3d33dc9eeb..a8a1f95a89e19939bffa741494021c4372cf24be 100644 (file)
@@ -48,6 +48,45 @@ Abstract:
 //\r
 // EFI Component Name Functions\r
 //\r
+/**\r
+  Retrieves a Unicode string that is the user readable name of the driver.\r
+\r
+  This function retrieves the user readable name of a driver in the form of a\r
+  Unicode string. If the driver specified by This has a user readable name in\r
+  the language specified by Language, then a pointer to the driver name is\r
+  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
+  by This does not support the language specified by Language,\r
+  then EFI_UNSUPPORTED is returned.\r
+\r
+  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
+                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
+\r
+  @param  Language[in]          A pointer to a Null-terminated ASCII string\r
+                                array indicating the language. This is the\r
+                                language of the driver name that the caller is\r
+                                requesting, and it must match one of the\r
+                                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
+\r
+  @param  DriverName[out]       A pointer to the Unicode string to return.\r
+                                This Unicode string is the name of the\r
+                                driver specified by This in the language\r
+                                specified by Language.\r
+\r
+  @retval EFI_SUCCESS           The Unicode string for the Driver specified by\r
+                                This and the language specified by Language was\r
+                                returned in DriverName.\r
+\r
+  @retval EFI_INVALID_PARAMETER Language is NULL.\r
+\r
+  @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
+\r
+  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
+                                the language specified by Language.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 WinNtGopComponentNameGetDriverName (\r
@@ -56,6 +95,75 @@ WinNtGopComponentNameGetDriverName (
   OUT CHAR16                       **DriverName\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
+\r
+  This function retrieves the user readable name of the controller specified by\r
+  ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
+  driver specified by This has a user readable name in the language specified by\r
+  Language, then a pointer to the controller name is returned in ControllerName,\r
+  and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
+  managing the controller specified by ControllerHandle and ChildHandle,\r
+  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
+  support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
+\r
+  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
+                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
+\r
+  @param  ControllerHandle[in]  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
+\r
+  @param  ChildHandle[in]       The handle of the child controller to retrieve\r
+                                the name of.  This is an optional parameter that\r
+                                may be NULL.  It will be NULL for device\r
+                                drivers.  It will also be NULL for a bus drivers\r
+                                that wish to retrieve the name of the bus\r
+                                controller.  It will not be NULL for a bus\r
+                                driver that wishes to retrieve the name of a\r
+                                child controller.\r
+\r
+  @param  Language[in]          A pointer to a Null-terminated ASCII string\r
+                                array indicating the language.  This is the\r
+                                language of the driver name that the caller is\r
+                                requesting, and it must match one of the\r
+                                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
+\r
+  @param  ControllerName[out]   A pointer to the Unicode string to return.\r
+                                This Unicode string is the name of the\r
+                                controller specified by ControllerHandle and\r
+                                ChildHandle in the language specified by\r
+                                Language from the point of view of the driver\r
+                                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\r
+                                driver specified by This was returned in\r
+                                DriverName.\r
+\r
+  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+\r
+  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
+                                EFI_HANDLE.\r
+\r
+  @retval EFI_INVALID_PARAMETER Language is NULL.\r
+\r
+  @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
+\r
+  @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
+                                managing the controller specified by\r
+                                ControllerHandle and ChildHandle.\r
+\r
+  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
+                                the language specified by Language.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 WinNtGopComponentNameGetControllerName (\r
@@ -66,43 +174,69 @@ WinNtGopComponentNameGetControllerName (
   OUT CHAR16                                          **ControllerName\r
   );\r
 \r
+\r
 //\r
 // EFI Component Name Protocol\r
 //\r
-EFI_COMPONENT_NAME_PROTOCOL     gWinNtGopComponentName = {\r
+EFI_COMPONENT_NAME_PROTOCOL  gWinNtGopComponentName = {\r
   WinNtGopComponentNameGetDriverName,\r
   WinNtGopComponentNameGetControllerName,\r
   "eng"\r
-};\r
+  };\r
+\r
+//\r
+// EFI Component Name 2 Protocol\r
+//\r
+EFI_COMPONENT_NAME2_PROTOCOL gWinNtGopComponentName2 = {\r
+  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) WinNtGopComponentNameGetDriverName,\r
+  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) WinNtGopComponentNameGetControllerName,\r
+  "en"\r
+  };\r
+\r
 \r
 static EFI_UNICODE_STRING_TABLE mWinNtGopDriverNameTable[] = {\r
-  { "eng", L"Windows GOP Driver" },\r
+  { "eng;en", L"Windows GOP Driver" },\r
   { NULL , NULL }\r
 };\r
 \r
 \r
 /**\r
-  Retrieves a Unicode string that is the user readable name of the EFI Driver.\r
-\r
-  @param  This                   A pointer to the EFI_COMPONENT_NAME_PROTOCOL\r
-                                 instance.\r
-  @param  Language               A pointer to a three character ISO 639-2 language\r
-                                 identifier. This is the language of the driver\r
-                                 name that that the caller  is requesting, and it\r
-                                 must match one of the languages specified in\r
-                                 SupportedLanguages.  The number of languages\r
-                                 supported by a  driver is up to the driver writer.\r
-  @param  DriverName             A pointer to the Unicode string to return.  This\r
-                                 Unicode string is the name of the driver specified\r
-                                 by This in the language  specified by Language.\r
-\r
-  @retval EFI_SUCCESS            The Unicode string for the Driver specified by\r
-                                 This and the language specified by Language was\r
-                                 returned  in DriverName.\r
-  @retval EFI_INVALID_PARAMETER  Language is NULL.\r
-  @retval EFI_INVALID_PARAMETER  DriverName is NULL.\r
-  @retval EFI_UNSUPPORTED        The driver specified by This does not support the\r
-                                 language specified by Language.\r
+  Retrieves a Unicode string that is the user readable name of the driver.\r
+\r
+  This function retrieves the user readable name of a driver in the form of a\r
+  Unicode string. If the driver specified by This has a user readable name in\r
+  the language specified by Language, then a pointer to the driver name is\r
+  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
+  by This does not support the language specified by Language,\r
+  then EFI_UNSUPPORTED is returned.\r
+\r
+  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
+                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
+\r
+  @param  Language[in]          A pointer to a Null-terminated ASCII string\r
+                                array indicating the language. This is the\r
+                                language of the driver name that the caller is\r
+                                requesting, and it must match one of the\r
+                                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
+\r
+  @param  DriverName[out]       A pointer to the Unicode string to return.\r
+                                This Unicode string is the name of the\r
+                                driver specified by This in the language\r
+                                specified by Language.\r
+\r
+  @retval EFI_SUCCESS           The Unicode string for the Driver specified by\r
+                                This and the language specified by Language was\r
+                                returned in DriverName.\r
+\r
+  @retval EFI_INVALID_PARAMETER Language is NULL.\r
+\r
+  @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
+\r
+  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
+                                the language specified by Language.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -113,58 +247,82 @@ WinNtGopComponentNameGetDriverName (
   OUT CHAR16                       **DriverName\r
   )\r
 {\r
-  return LookupUnicodeString (\r
-          Language,\r
-          gWinNtGopComponentName.SupportedLanguages,\r
-          mWinNtGopDriverNameTable,\r
-          DriverName\r
-          );\r
+  return LookupUnicodeString2 (\r
+           Language,\r
+           This->SupportedLanguages,\r
+           mWinNtGopDriverNameTable,\r
+           DriverName,\r
+           (BOOLEAN)(This == &gWinNtGopComponentName)\r
+           );\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 a three character ISO 639-2 language\r
-                                 identifier.  This is the language of the\r
-                                 controller name  that that the caller is\r
-                                 requesting, and it must match one of the languages\r
-                                 specified in SupportedLanguages.  The  number of\r
-                                 languages supported by a driver is up to the\r
-                                 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
+  that is being managed by a driver.\r
+\r
+  This function retrieves the user readable name of the controller specified by\r
+  ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
+  driver specified by This has a user readable name in the language specified by\r
+  Language, then a pointer to the controller name is returned in ControllerName,\r
+  and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
+  managing the controller specified by ControllerHandle and ChildHandle,\r
+  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
+  support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
+\r
+  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
+                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
+\r
+  @param  ControllerHandle[in]  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
+\r
+  @param  ChildHandle[in]       The handle of the child controller to retrieve\r
+                                the name of.  This is an optional parameter that\r
+                                may be NULL.  It will be NULL for device\r
+                                drivers.  It will also be NULL for a bus drivers\r
+                                that wish to retrieve the name of the bus\r
+                                controller.  It will not be NULL for a bus\r
+                                driver that wishes to retrieve the name of a\r
+                                child controller.\r
+\r
+  @param  Language[in]          A pointer to a Null-terminated ASCII string\r
+                                array indicating the language.  This is the\r
+                                language of the driver name that the caller is\r
+                                requesting, and it must match one of the\r
+                                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
+\r
+  @param  ControllerName[out]   A pointer to the Unicode string to return.\r
+                                This Unicode string is the name of the\r
+                                controller specified by ControllerHandle and\r
+                                ChildHandle in the language specified by\r
+                                Language from the point of view of the driver\r
+                                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\r
+                                driver specified by This was returned in\r
+                                DriverName.\r
+\r
+  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+\r
+  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
+                                EFI_HANDLE.\r
+\r
+  @retval EFI_INVALID_PARAMETER Language is NULL.\r
+\r
+  @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
+\r
+  @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
+                                managing the controller specified by\r
+                                ControllerHandle and ChildHandle.\r
+\r
+  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
+                                the language specified by Language.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -215,10 +373,11 @@ WinNtGopComponentNameGetControllerName (
 \r
   Private = GOP_PRIVATE_DATA_FROM_THIS (GraphicsOutput);\r
 \r
-  return LookupUnicodeString (\r
-          Language,\r
-          gWinNtGopComponentName.SupportedLanguages,\r
-          Private->ControllerNameTable,\r
-          ControllerName\r
-          );\r
+  return LookupUnicodeString2 (\r
+           Language,\r
+           This->SupportedLanguages,\r
+           Private->ControllerNameTable,\r
+           ControllerName,\r
+           (BOOLEAN)(This == &gWinNtGopComponentName)\r
+           );\r
 }\r
index e9cf80c33f6756f05ec322df240a2c4436c82bb1..077e68105d526a082abb4c183c57f1852da52aad 100644 (file)
@@ -121,8 +121,9 @@ typedef struct {
 //\r
 // Global Protocol Variables\r
 //\r
-extern EFI_DRIVER_BINDING_PROTOCOL  gWinNtGopDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL  gWinNtGopComponentName;\r
+extern EFI_DRIVER_BINDING_PROTOCOL   gWinNtGopDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL   gWinNtGopComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL  gWinNtGopComponentName2;\r
 \r
 //\r
 // Gop Hardware abstraction internal worker functions\r
index 5f41e29e19a518cf1e1b18ed640209e29931bb2f..5f1f2c1cf073f10004d23e5889a2ea75fdb2db3c 100644 (file)
@@ -80,14 +80,13 @@ InitializeWinNtGop(
   //\r
   // Install driver model protocol(s).\r
   //\r
-  Status = EfiLibInstallAllDriverProtocols (\r
+  Status = EfiLibInstallDriverBindingComponentName2 (\r
              ImageHandle,\r
              SystemTable,\r
              &gWinNtGopDriverBinding,\r
              ImageHandle,\r
              &gWinNtGopComponentName,\r
-             NULL,\r
-             NULL\r
+             &gWinNtGopComponentName2\r
              );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -200,12 +199,21 @@ WinNtGopDriverBindingStart (
 \r
   Private->ControllerNameTable  = NULL;\r
 \r
-  AddUnicodeString (\r
+  AddUnicodeString2 (\r
     "eng",\r
     gWinNtGopComponentName.SupportedLanguages,\r
     &Private->ControllerNameTable,\r
-    WinNtIo->EnvString\r
+    WinNtIo->EnvString,\r
+    TRUE\r
     );\r
+  AddUnicodeString2 (\r
+    "en",\r
+    gWinNtGopComponentName2.SupportedLanguages,\r
+    &Private->ControllerNameTable,\r
+    WinNtIo->EnvString,\r
+    FALSE\r
+    );\r
+\r
 \r
   Private->WindowName = WinNtIo->EnvString;\r
 \r