ComponentName.c revision 1307dcd745881377355a2e7fba53ff9184e92657
1adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/** @file
2adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  UEFI Component Name protocol for Partition driver.
3adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
4adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  Copyright (c) 2006 - 2007, Intel Corporation
5adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  All rights reserved. This program and the accompanying materials
6adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  are licensed and made available under the terms and conditions of the BSD License
7adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  which accompanies this distribution.  The full text of the license may be found at
8adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  http://opensource.org/licenses/bsd-license.php
9adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
10adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
13adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/
14adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
15adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff#include "Partition.h"
16adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
17adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff//
18adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff// EFI Component Name Protocol
19adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff//
201307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL  gPartitionComponentName = {
21adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  PartitionComponentNameGetDriverName,
22adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  PartitionComponentNameGetControllerName,
23adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  "eng"
241307dcd745881377355a2e7fba53ff9184e92657qhuang};
25d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
26d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang//
27d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang// EFI Component Name 2 Protocol
28d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang//
291307dcd745881377355a2e7fba53ff9184e92657qhuangGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPartitionComponentName2 = {
30d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) PartitionComponentNameGetDriverName,
31d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) PartitionComponentNameGetControllerName,
32d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  "en"
331307dcd745881377355a2e7fba53ff9184e92657qhuang};
34d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
35adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
36adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffstatic EFI_UNICODE_STRING_TABLE mPartitionDriverNameTable[] = {
37adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  {
38d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang    "eng;en",
39adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff    (CHAR16 *)L"Partition Driver(MBR/GPT/El Torito)"
40adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  },
41adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  {
42adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff    NULL,
43adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff    NULL
44adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  }
45adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff};
46adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
47adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
48adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
49adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/**
50d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  Retrieves a Unicode string that is the user readable name of the driver.
51d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
52d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  This function retrieves the user readable name of a driver in the form of a
53d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  Unicode string. If the driver specified by This has a user readable name in
54d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  the language specified by Language, then a pointer to the driver name is
55d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
56d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  by This does not support the language specified by Language,
57d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  then EFI_UNSUPPORTED is returned.
58d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
59d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
60d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                EFI_COMPONENT_NAME_PROTOCOL instance.
61d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
62d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  Language[in]          A pointer to a Null-terminated ASCII string
63d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                array indicating the language. This is the
64d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                language of the driver name that the caller is
65d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                requesting, and it must match one of the
66d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                languages specified in SupportedLanguages. The
67d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                number of languages supported by a driver is up
68d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                to the driver writer. Language is specified
69d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                in RFC 3066 or ISO 639-2 language code format.
70d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
71d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  DriverName[out]       A pointer to the Unicode string to return.
72d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                This Unicode string is the name of the
73d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                driver specified by This in the language
74d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                specified by Language.
75d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
76d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
77d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                This and the language specified by Language was
78d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                returned in DriverName.
79adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
80adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  @retval EFI_INVALID_PARAMETER Language is NULL.
81d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
82adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  @retval EFI_INVALID_PARAMETER DriverName is NULL.
83d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
84d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @retval EFI_UNSUPPORTED       The driver specified by This does not support
85d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                the language specified by Language.
86adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
87adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/
88adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFI_STATUS
89adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFIAPI
90adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffPartitionComponentNameGetDriverName (
91adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,
92adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  IN  CHAR8                        *Language,
93adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  OUT CHAR16                       **DriverName
94adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  )
95adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff{
96d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  return LookupUnicodeString2 (
97d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang           Language,
98d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang           This->SupportedLanguages,
99d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang           mPartitionDriverNameTable,
100d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang           DriverName,
101d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang           (BOOLEAN)(This == &gPartitionComponentName)
102d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang           );
103adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff}
104adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
105adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
106adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff/**
107d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  Retrieves a Unicode string that is the user readable name of the controller
108d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  that is being managed by a driver.
109d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
110d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  This function retrieves the user readable name of the controller specified by
111d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  ControllerHandle and ChildHandle in the form of a Unicode string. If the
112d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  driver specified by This has a user readable name in the language specified by
113d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  Language, then a pointer to the controller name is returned in ControllerName,
114d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
115d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  managing the controller specified by ControllerHandle and ChildHandle,
116d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
117d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  support the language specified by Language, then EFI_UNSUPPORTED is returned.
118d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
119d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
120d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                EFI_COMPONENT_NAME_PROTOCOL instance.
121d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
122d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  ControllerHandle[in]  The handle of a controller that the driver
123d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                specified by This is managing.  This handle
124d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                specifies the controller whose name is to be
125d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                returned.
126d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
127d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  ChildHandle[in]       The handle of the child controller to retrieve
128d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                the name of.  This is an optional parameter that
129d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                may be NULL.  It will be NULL for device
130d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                drivers.  It will also be NULL for a bus drivers
131d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                that wish to retrieve the name of the bus
132d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                controller.  It will not be NULL for a bus
133d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                driver that wishes to retrieve the name of a
134d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                child controller.
135d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
136d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  Language[in]          A pointer to a Null-terminated ASCII string
137d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                array indicating the language.  This is the
138d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                language of the driver name that the caller is
139d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                requesting, and it must match one of the
140d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                languages specified in SupportedLanguages. The
141d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                number of languages supported by a driver is up
142d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                to the driver writer. Language is specified in
143d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                RFC 3066 or ISO 639-2 language code format.
144d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
145d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @param  ControllerName[out]   A pointer to the Unicode string to return.
146d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                This Unicode string is the name of the
147d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                controller specified by ControllerHandle and
148d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                ChildHandle in the language specified by
149d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                Language from the point of view of the driver
150d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                specified by This.
151d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
152d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @retval EFI_SUCCESS           The Unicode string for the user readable name in
153d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                the language specified by Language for the
154d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                driver specified by This was returned in
155d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                DriverName.
156d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
157d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
158d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang
159d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
160adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff                                EFI_HANDLE.
161adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
162adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  @retval EFI_INVALID_PARAMETER Language is NULL.
163adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
164adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  @retval EFI_INVALID_PARAMETER ControllerName is NULL.
165adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
166d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
167d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                managing the controller specified by
168d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                ControllerHandle and ChildHandle.
169adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
170d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang  @retval EFI_UNSUPPORTED       The driver specified by This does not support
171d38a0f446fbb13a7969294cc6665ee7c789d9fc2qhuang                                the language specified by Language.
172adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff
173adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff**/
174adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFI_STATUS
175adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffEFIAPI
176adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeffPartitionComponentNameGetControllerName (
177adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,
178adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  IN  EFI_HANDLE                                      ControllerHandle,
179adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,
180adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  IN  CHAR8                                           *Language,
181adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  OUT CHAR16                                          **ControllerName
182adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  )
183adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff{
184adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff  return EFI_UNSUPPORTED;
185adbcbf8ffcaedab483d23b52e8283aaad74cc807vanjeff}
186