1bcecde140a561c64e297225904afebebd62336cejljusten/** @file
2bcecde140a561c64e297225904afebebd62336cejljusten
30c9f676d5012f4d7d5cfd8195e07c403222a0265niruiyuCopyright (c) 1999 - 2011, Intel Corporation. All rights reserved.<BR>
4bcecde140a561c64e297225904afebebd62336cejljusten
5bcecde140a561c64e297225904afebebd62336cejljustenThis program and the accompanying materials
6bcecde140a561c64e297225904afebebd62336cejljustenare licensed and made available under the terms and conditions
7bcecde140a561c64e297225904afebebd62336cejljustenof the BSD License which accompanies this distribution.  The
8bcecde140a561c64e297225904afebebd62336cejljustenfull text of the license may be found at
9bcecde140a561c64e297225904afebebd62336cejljustenhttp://opensource.org/licenses/bsd-license.php
10bcecde140a561c64e297225904afebebd62336cejljusten
11bcecde140a561c64e297225904afebebd62336cejljustenTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12bcecde140a561c64e297225904afebebd62336cejljustenWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13bcecde140a561c64e297225904afebebd62336cejljusten
14bcecde140a561c64e297225904afebebd62336cejljusten**/
15bcecde140a561c64e297225904afebebd62336cejljusten
16bcecde140a561c64e297225904afebebd62336cejljusten#include "BiosBlkIo.h"
17bcecde140a561c64e297225904afebebd62336cejljusten
18bcecde140a561c64e297225904afebebd62336cejljusten/**
19bcecde140a561c64e297225904afebebd62336cejljusten  Retrieves a Unicode string that is the user readable name of the driver.
20bcecde140a561c64e297225904afebebd62336cejljusten
21bcecde140a561c64e297225904afebebd62336cejljusten  This function retrieves the user readable name of a driver in the form of a
22bcecde140a561c64e297225904afebebd62336cejljusten  Unicode string. If the driver specified by This has a user readable name in
23bcecde140a561c64e297225904afebebd62336cejljusten  the language specified by Language, then a pointer to the driver name is
24bcecde140a561c64e297225904afebebd62336cejljusten  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
25bcecde140a561c64e297225904afebebd62336cejljusten  by This does not support the language specified by Language,
26bcecde140a561c64e297225904afebebd62336cejljusten  then EFI_UNSUPPORTED is returned.
27bcecde140a561c64e297225904afebebd62336cejljusten
28bcecde140a561c64e297225904afebebd62336cejljusten  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
29bcecde140a561c64e297225904afebebd62336cejljusten                                EFI_COMPONENT_NAME_PROTOCOL instance.
30bcecde140a561c64e297225904afebebd62336cejljusten
31bcecde140a561c64e297225904afebebd62336cejljusten  @param  Language[in]          A pointer to a Null-terminated ASCII string
32bcecde140a561c64e297225904afebebd62336cejljusten                                array indicating the language. This is the
33bcecde140a561c64e297225904afebebd62336cejljusten                                language of the driver name that the caller is
34bcecde140a561c64e297225904afebebd62336cejljusten                                requesting, and it must match one of the
35bcecde140a561c64e297225904afebebd62336cejljusten                                languages specified in SupportedLanguages. The
36bcecde140a561c64e297225904afebebd62336cejljusten                                number of languages supported by a driver is up
37bcecde140a561c64e297225904afebebd62336cejljusten                                to the driver writer. Language is specified
38bcecde140a561c64e297225904afebebd62336cejljusten                                in RFC 4646 or ISO 639-2 language code format.
39bcecde140a561c64e297225904afebebd62336cejljusten
40bcecde140a561c64e297225904afebebd62336cejljusten  @param  DriverName[out]       A pointer to the Unicode string to return.
41bcecde140a561c64e297225904afebebd62336cejljusten                                This Unicode string is the name of the
42bcecde140a561c64e297225904afebebd62336cejljusten                                driver specified by This in the language
43bcecde140a561c64e297225904afebebd62336cejljusten                                specified by Language.
44bcecde140a561c64e297225904afebebd62336cejljusten
45bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
46bcecde140a561c64e297225904afebebd62336cejljusten                                This and the language specified by Language was
47bcecde140a561c64e297225904afebebd62336cejljusten                                returned in DriverName.
48bcecde140a561c64e297225904afebebd62336cejljusten
49bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER Language is NULL.
50bcecde140a561c64e297225904afebebd62336cejljusten
51bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER DriverName is NULL.
52bcecde140a561c64e297225904afebebd62336cejljusten
53bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_UNSUPPORTED       The driver specified by This does not support
54bcecde140a561c64e297225904afebebd62336cejljusten                                the language specified by Language.
55bcecde140a561c64e297225904afebebd62336cejljusten
56bcecde140a561c64e297225904afebebd62336cejljusten**/
57bcecde140a561c64e297225904afebebd62336cejljustenEFI_STATUS
58bcecde140a561c64e297225904afebebd62336cejljustenEFIAPI
59bcecde140a561c64e297225904afebebd62336cejljustenBiosBlockIoComponentNameGetDriverName (
60bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,
61bcecde140a561c64e297225904afebebd62336cejljusten  IN  CHAR8                        *Language,
62bcecde140a561c64e297225904afebebd62336cejljusten  OUT CHAR16                       **DriverName
63bcecde140a561c64e297225904afebebd62336cejljusten  );
64bcecde140a561c64e297225904afebebd62336cejljusten
65bcecde140a561c64e297225904afebebd62336cejljusten/**
66bcecde140a561c64e297225904afebebd62336cejljusten  Retrieves a Unicode string that is the user readable name of the controller
67bcecde140a561c64e297225904afebebd62336cejljusten  that is being managed by a driver.
68bcecde140a561c64e297225904afebebd62336cejljusten
69bcecde140a561c64e297225904afebebd62336cejljusten  This function retrieves the user readable name of the controller specified by
70bcecde140a561c64e297225904afebebd62336cejljusten  ControllerHandle and ChildHandle in the form of a Unicode string. If the
71bcecde140a561c64e297225904afebebd62336cejljusten  driver specified by This has a user readable name in the language specified by
72bcecde140a561c64e297225904afebebd62336cejljusten  Language, then a pointer to the controller name is returned in ControllerName,
73bcecde140a561c64e297225904afebebd62336cejljusten  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
74bcecde140a561c64e297225904afebebd62336cejljusten  managing the controller specified by ControllerHandle and ChildHandle,
75bcecde140a561c64e297225904afebebd62336cejljusten  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
76bcecde140a561c64e297225904afebebd62336cejljusten  support the language specified by Language, then EFI_UNSUPPORTED is returned.
77bcecde140a561c64e297225904afebebd62336cejljusten
78bcecde140a561c64e297225904afebebd62336cejljusten  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
79bcecde140a561c64e297225904afebebd62336cejljusten                                EFI_COMPONENT_NAME_PROTOCOL instance.
80bcecde140a561c64e297225904afebebd62336cejljusten
81bcecde140a561c64e297225904afebebd62336cejljusten  @param  ControllerHandle[in]  The handle of a controller that the driver
82bcecde140a561c64e297225904afebebd62336cejljusten                                specified by This is managing.  This handle
83bcecde140a561c64e297225904afebebd62336cejljusten                                specifies the controller whose name is to be
84bcecde140a561c64e297225904afebebd62336cejljusten                                returned.
85bcecde140a561c64e297225904afebebd62336cejljusten
86bcecde140a561c64e297225904afebebd62336cejljusten  @param  ChildHandle[in]       The handle of the child controller to retrieve
87bcecde140a561c64e297225904afebebd62336cejljusten                                the name of.  This is an optional parameter that
88bcecde140a561c64e297225904afebebd62336cejljusten                                may be NULL.  It will be NULL for device
89bcecde140a561c64e297225904afebebd62336cejljusten                                drivers.  It will also be NULL for a bus drivers
90bcecde140a561c64e297225904afebebd62336cejljusten                                that wish to retrieve the name of the bus
91bcecde140a561c64e297225904afebebd62336cejljusten                                controller.  It will not be NULL for a bus
92bcecde140a561c64e297225904afebebd62336cejljusten                                driver that wishes to retrieve the name of a
93bcecde140a561c64e297225904afebebd62336cejljusten                                child controller.
94bcecde140a561c64e297225904afebebd62336cejljusten
95bcecde140a561c64e297225904afebebd62336cejljusten  @param  Language[in]          A pointer to a Null-terminated ASCII string
96bcecde140a561c64e297225904afebebd62336cejljusten                                array indicating the language.  This is the
97bcecde140a561c64e297225904afebebd62336cejljusten                                language of the driver name that the caller is
98bcecde140a561c64e297225904afebebd62336cejljusten                                requesting, and it must match one of the
99bcecde140a561c64e297225904afebebd62336cejljusten                                languages specified in SupportedLanguages. The
100bcecde140a561c64e297225904afebebd62336cejljusten                                number of languages supported by a driver is up
101bcecde140a561c64e297225904afebebd62336cejljusten                                to the driver writer. Language is specified in
102bcecde140a561c64e297225904afebebd62336cejljusten                                RFC 4646 or ISO 639-2 language code format.
103bcecde140a561c64e297225904afebebd62336cejljusten
104bcecde140a561c64e297225904afebebd62336cejljusten  @param  ControllerName[out]   A pointer to the Unicode string to return.
105bcecde140a561c64e297225904afebebd62336cejljusten                                This Unicode string is the name of the
106bcecde140a561c64e297225904afebebd62336cejljusten                                controller specified by ControllerHandle and
107bcecde140a561c64e297225904afebebd62336cejljusten                                ChildHandle in the language specified by
108bcecde140a561c64e297225904afebebd62336cejljusten                                Language from the point of view of the driver
109bcecde140a561c64e297225904afebebd62336cejljusten                                specified by This.
110bcecde140a561c64e297225904afebebd62336cejljusten
111bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_SUCCESS           The Unicode string for the user readable name in
112bcecde140a561c64e297225904afebebd62336cejljusten                                the language specified by Language for the
113bcecde140a561c64e297225904afebebd62336cejljusten                                driver specified by This was returned in
114bcecde140a561c64e297225904afebebd62336cejljusten                                DriverName.
115bcecde140a561c64e297225904afebebd62336cejljusten
1160c9f676d5012f4d7d5cfd8195e07c403222a0265niruiyu  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
117bcecde140a561c64e297225904afebebd62336cejljusten
118bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
119bcecde140a561c64e297225904afebebd62336cejljusten                                EFI_HANDLE.
120bcecde140a561c64e297225904afebebd62336cejljusten
121bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER Language is NULL.
122bcecde140a561c64e297225904afebebd62336cejljusten
123bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER ControllerName is NULL.
124bcecde140a561c64e297225904afebebd62336cejljusten
125bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
126bcecde140a561c64e297225904afebebd62336cejljusten                                managing the controller specified by
127bcecde140a561c64e297225904afebebd62336cejljusten                                ControllerHandle and ChildHandle.
128bcecde140a561c64e297225904afebebd62336cejljusten
129bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_UNSUPPORTED       The driver specified by This does not support
130bcecde140a561c64e297225904afebebd62336cejljusten                                the language specified by Language.
131bcecde140a561c64e297225904afebebd62336cejljusten
132bcecde140a561c64e297225904afebebd62336cejljusten**/
133bcecde140a561c64e297225904afebebd62336cejljustenEFI_STATUS
134bcecde140a561c64e297225904afebebd62336cejljustenEFIAPI
135bcecde140a561c64e297225904afebebd62336cejljustenBiosBlockIoComponentNameGetControllerName (
136bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,
137bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_HANDLE                                      ControllerHandle,
138bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,
139bcecde140a561c64e297225904afebebd62336cejljusten  IN  CHAR8                                           *Language,
140bcecde140a561c64e297225904afebebd62336cejljusten  OUT CHAR16                                          **ControllerName
141bcecde140a561c64e297225904afebebd62336cejljusten  );
142bcecde140a561c64e297225904afebebd62336cejljusten
143bcecde140a561c64e297225904afebebd62336cejljusten
144bcecde140a561c64e297225904afebebd62336cejljusten//
145bcecde140a561c64e297225904afebebd62336cejljusten// EFI Component Name Protocol
146bcecde140a561c64e297225904afebebd62336cejljusten//
147bcecde140a561c64e297225904afebebd62336cejljustenGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL     gBiosBlockIoComponentName = {
148bcecde140a561c64e297225904afebebd62336cejljusten  BiosBlockIoComponentNameGetDriverName,
149bcecde140a561c64e297225904afebebd62336cejljusten  BiosBlockIoComponentNameGetControllerName,
150bcecde140a561c64e297225904afebebd62336cejljusten  "eng"
151bcecde140a561c64e297225904afebebd62336cejljusten};
152bcecde140a561c64e297225904afebebd62336cejljusten
153bcecde140a561c64e297225904afebebd62336cejljusten//
154bcecde140a561c64e297225904afebebd62336cejljusten// EFI Component Name 2 Protocol
155bcecde140a561c64e297225904afebebd62336cejljusten//
156bcecde140a561c64e297225904afebebd62336cejljustenGLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL    gBiosBlockIoComponentName2 = {
157bcecde140a561c64e297225904afebebd62336cejljusten  (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) BiosBlockIoComponentNameGetDriverName,
158bcecde140a561c64e297225904afebebd62336cejljusten  (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) BiosBlockIoComponentNameGetControllerName,
159bcecde140a561c64e297225904afebebd62336cejljusten  "en"
160bcecde140a561c64e297225904afebebd62336cejljusten};
161bcecde140a561c64e297225904afebebd62336cejljusten
162bcecde140a561c64e297225904afebebd62336cejljusten
163bcecde140a561c64e297225904afebebd62336cejljustenGLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mBiosBlockIoDriverNameTable[] = {
164bcecde140a561c64e297225904afebebd62336cejljusten  {
165bcecde140a561c64e297225904afebebd62336cejljusten    "eng;en",
166bcecde140a561c64e297225904afebebd62336cejljusten    L"BIOS[INT13] Block Io Driver"
167bcecde140a561c64e297225904afebebd62336cejljusten  },
168bcecde140a561c64e297225904afebebd62336cejljusten  {
169bcecde140a561c64e297225904afebebd62336cejljusten    NULL,
170bcecde140a561c64e297225904afebebd62336cejljusten    NULL
171bcecde140a561c64e297225904afebebd62336cejljusten  }
172bcecde140a561c64e297225904afebebd62336cejljusten};
173bcecde140a561c64e297225904afebebd62336cejljusten
174bcecde140a561c64e297225904afebebd62336cejljusten/**
175bcecde140a561c64e297225904afebebd62336cejljusten  Retrieves a Unicode string that is the user readable name of the driver.
176bcecde140a561c64e297225904afebebd62336cejljusten
177bcecde140a561c64e297225904afebebd62336cejljusten  This function retrieves the user readable name of a driver in the form of a
178bcecde140a561c64e297225904afebebd62336cejljusten  Unicode string. If the driver specified by This has a user readable name in
179bcecde140a561c64e297225904afebebd62336cejljusten  the language specified by Language, then a pointer to the driver name is
180bcecde140a561c64e297225904afebebd62336cejljusten  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
181bcecde140a561c64e297225904afebebd62336cejljusten  by This does not support the language specified by Language,
182bcecde140a561c64e297225904afebebd62336cejljusten  then EFI_UNSUPPORTED is returned.
183bcecde140a561c64e297225904afebebd62336cejljusten
184bcecde140a561c64e297225904afebebd62336cejljusten  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
185bcecde140a561c64e297225904afebebd62336cejljusten                                EFI_COMPONENT_NAME_PROTOCOL instance.
186bcecde140a561c64e297225904afebebd62336cejljusten
187bcecde140a561c64e297225904afebebd62336cejljusten  @param  Language[in]          A pointer to a Null-terminated ASCII string
188bcecde140a561c64e297225904afebebd62336cejljusten                                array indicating the language. This is the
189bcecde140a561c64e297225904afebebd62336cejljusten                                language of the driver name that the caller is
190bcecde140a561c64e297225904afebebd62336cejljusten                                requesting, and it must match one of the
191bcecde140a561c64e297225904afebebd62336cejljusten                                languages specified in SupportedLanguages. The
192bcecde140a561c64e297225904afebebd62336cejljusten                                number of languages supported by a driver is up
193bcecde140a561c64e297225904afebebd62336cejljusten                                to the driver writer. Language is specified
194bcecde140a561c64e297225904afebebd62336cejljusten                                in RFC 4646 or ISO 639-2 language code format.
195bcecde140a561c64e297225904afebebd62336cejljusten
196bcecde140a561c64e297225904afebebd62336cejljusten  @param  DriverName[out]       A pointer to the Unicode string to return.
197bcecde140a561c64e297225904afebebd62336cejljusten                                This Unicode string is the name of the
198bcecde140a561c64e297225904afebebd62336cejljusten                                driver specified by This in the language
199bcecde140a561c64e297225904afebebd62336cejljusten                                specified by Language.
200bcecde140a561c64e297225904afebebd62336cejljusten
201bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
202bcecde140a561c64e297225904afebebd62336cejljusten                                This and the language specified by Language was
203bcecde140a561c64e297225904afebebd62336cejljusten                                returned in DriverName.
204bcecde140a561c64e297225904afebebd62336cejljusten
205bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER Language is NULL.
206bcecde140a561c64e297225904afebebd62336cejljusten
207bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER DriverName is NULL.
208bcecde140a561c64e297225904afebebd62336cejljusten
209bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_UNSUPPORTED       The driver specified by This does not support
210bcecde140a561c64e297225904afebebd62336cejljusten                                the language specified by Language.
211bcecde140a561c64e297225904afebebd62336cejljusten
212bcecde140a561c64e297225904afebebd62336cejljusten**/
213bcecde140a561c64e297225904afebebd62336cejljustenEFI_STATUS
214bcecde140a561c64e297225904afebebd62336cejljustenEFIAPI
215bcecde140a561c64e297225904afebebd62336cejljustenBiosBlockIoComponentNameGetDriverName (
216bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,
217bcecde140a561c64e297225904afebebd62336cejljusten  IN  CHAR8                        *Language,
218bcecde140a561c64e297225904afebebd62336cejljusten  OUT CHAR16                       **DriverName
219bcecde140a561c64e297225904afebebd62336cejljusten  )
220bcecde140a561c64e297225904afebebd62336cejljusten{
221bcecde140a561c64e297225904afebebd62336cejljusten  return LookupUnicodeString2 (
222bcecde140a561c64e297225904afebebd62336cejljusten           Language,
223bcecde140a561c64e297225904afebebd62336cejljusten           This->SupportedLanguages,
224bcecde140a561c64e297225904afebebd62336cejljusten           mBiosBlockIoDriverNameTable,
225bcecde140a561c64e297225904afebebd62336cejljusten           DriverName,
226bcecde140a561c64e297225904afebebd62336cejljusten           (BOOLEAN)(This == &gBiosBlockIoComponentName)
227bcecde140a561c64e297225904afebebd62336cejljusten           );
228bcecde140a561c64e297225904afebebd62336cejljusten}
229bcecde140a561c64e297225904afebebd62336cejljusten
230bcecde140a561c64e297225904afebebd62336cejljusten/**
231bcecde140a561c64e297225904afebebd62336cejljusten  Retrieves a Unicode string that is the user readable name of the controller
232bcecde140a561c64e297225904afebebd62336cejljusten  that is being managed by a driver.
233bcecde140a561c64e297225904afebebd62336cejljusten
234bcecde140a561c64e297225904afebebd62336cejljusten  This function retrieves the user readable name of the controller specified by
235bcecde140a561c64e297225904afebebd62336cejljusten  ControllerHandle and ChildHandle in the form of a Unicode string. If the
236bcecde140a561c64e297225904afebebd62336cejljusten  driver specified by This has a user readable name in the language specified by
237bcecde140a561c64e297225904afebebd62336cejljusten  Language, then a pointer to the controller name is returned in ControllerName,
238bcecde140a561c64e297225904afebebd62336cejljusten  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
239bcecde140a561c64e297225904afebebd62336cejljusten  managing the controller specified by ControllerHandle and ChildHandle,
240bcecde140a561c64e297225904afebebd62336cejljusten  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
241bcecde140a561c64e297225904afebebd62336cejljusten  support the language specified by Language, then EFI_UNSUPPORTED is returned.
242bcecde140a561c64e297225904afebebd62336cejljusten
243bcecde140a561c64e297225904afebebd62336cejljusten  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
244bcecde140a561c64e297225904afebebd62336cejljusten                                EFI_COMPONENT_NAME_PROTOCOL instance.
245bcecde140a561c64e297225904afebebd62336cejljusten
246bcecde140a561c64e297225904afebebd62336cejljusten  @param  ControllerHandle[in]  The handle of a controller that the driver
247bcecde140a561c64e297225904afebebd62336cejljusten                                specified by This is managing.  This handle
248bcecde140a561c64e297225904afebebd62336cejljusten                                specifies the controller whose name is to be
249bcecde140a561c64e297225904afebebd62336cejljusten                                returned.
250bcecde140a561c64e297225904afebebd62336cejljusten
251bcecde140a561c64e297225904afebebd62336cejljusten  @param  ChildHandle[in]       The handle of the child controller to retrieve
252bcecde140a561c64e297225904afebebd62336cejljusten                                the name of.  This is an optional parameter that
253bcecde140a561c64e297225904afebebd62336cejljusten                                may be NULL.  It will be NULL for device
254bcecde140a561c64e297225904afebebd62336cejljusten                                drivers.  It will also be NULL for a bus drivers
255bcecde140a561c64e297225904afebebd62336cejljusten                                that wish to retrieve the name of the bus
256bcecde140a561c64e297225904afebebd62336cejljusten                                controller.  It will not be NULL for a bus
257bcecde140a561c64e297225904afebebd62336cejljusten                                driver that wishes to retrieve the name of a
258bcecde140a561c64e297225904afebebd62336cejljusten                                child controller.
259bcecde140a561c64e297225904afebebd62336cejljusten
260bcecde140a561c64e297225904afebebd62336cejljusten  @param  Language[in]          A pointer to a Null-terminated ASCII string
261bcecde140a561c64e297225904afebebd62336cejljusten                                array indicating the language.  This is the
262bcecde140a561c64e297225904afebebd62336cejljusten                                language of the driver name that the caller is
263bcecde140a561c64e297225904afebebd62336cejljusten                                requesting, and it must match one of the
264bcecde140a561c64e297225904afebebd62336cejljusten                                languages specified in SupportedLanguages. The
265bcecde140a561c64e297225904afebebd62336cejljusten                                number of languages supported by a driver is up
266bcecde140a561c64e297225904afebebd62336cejljusten                                to the driver writer. Language is specified in
267bcecde140a561c64e297225904afebebd62336cejljusten                                RFC 4646 or ISO 639-2 language code format.
268bcecde140a561c64e297225904afebebd62336cejljusten
269bcecde140a561c64e297225904afebebd62336cejljusten  @param  ControllerName[out]   A pointer to the Unicode string to return.
270bcecde140a561c64e297225904afebebd62336cejljusten                                This Unicode string is the name of the
271bcecde140a561c64e297225904afebebd62336cejljusten                                controller specified by ControllerHandle and
272bcecde140a561c64e297225904afebebd62336cejljusten                                ChildHandle in the language specified by
273bcecde140a561c64e297225904afebebd62336cejljusten                                Language from the point of view of the driver
274bcecde140a561c64e297225904afebebd62336cejljusten                                specified by This.
275bcecde140a561c64e297225904afebebd62336cejljusten
276bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_SUCCESS           The Unicode string for the user readable name in
277bcecde140a561c64e297225904afebebd62336cejljusten                                the language specified by Language for the
278bcecde140a561c64e297225904afebebd62336cejljusten                                driver specified by This was returned in
279bcecde140a561c64e297225904afebebd62336cejljusten                                DriverName.
280bcecde140a561c64e297225904afebebd62336cejljusten
2810c9f676d5012f4d7d5cfd8195e07c403222a0265niruiyu  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
282bcecde140a561c64e297225904afebebd62336cejljusten
283bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
284bcecde140a561c64e297225904afebebd62336cejljusten                                EFI_HANDLE.
285bcecde140a561c64e297225904afebebd62336cejljusten
286bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER Language is NULL.
287bcecde140a561c64e297225904afebebd62336cejljusten
288bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_INVALID_PARAMETER ControllerName is NULL.
289bcecde140a561c64e297225904afebebd62336cejljusten
290bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
291bcecde140a561c64e297225904afebebd62336cejljusten                                managing the controller specified by
292bcecde140a561c64e297225904afebebd62336cejljusten                                ControllerHandle and ChildHandle.
293bcecde140a561c64e297225904afebebd62336cejljusten
294bcecde140a561c64e297225904afebebd62336cejljusten  @retval EFI_UNSUPPORTED       The driver specified by This does not support
295bcecde140a561c64e297225904afebebd62336cejljusten                                the language specified by Language.
296bcecde140a561c64e297225904afebebd62336cejljusten
297bcecde140a561c64e297225904afebebd62336cejljusten**/
298bcecde140a561c64e297225904afebebd62336cejljustenEFI_STATUS
299bcecde140a561c64e297225904afebebd62336cejljustenEFIAPI
300bcecde140a561c64e297225904afebebd62336cejljustenBiosBlockIoComponentNameGetControllerName (
301bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,
302bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_HANDLE                                      ControllerHandle,
303bcecde140a561c64e297225904afebebd62336cejljusten  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,
304bcecde140a561c64e297225904afebebd62336cejljusten  IN  CHAR8                                           *Language,
305bcecde140a561c64e297225904afebebd62336cejljusten  OUT CHAR16                                          **ControllerName
306bcecde140a561c64e297225904afebebd62336cejljusten  )
307bcecde140a561c64e297225904afebebd62336cejljusten{
308bcecde140a561c64e297225904afebebd62336cejljusten  return EFI_UNSUPPORTED;
309bcecde140a561c64e297225904afebebd62336cejljusten}
310