]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Nt32Pkg/WinNtGopDxe/ComponentName.c
Nt32Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Nt32Pkg / WinNtGopDxe / ComponentName.c
... / ...
CommitLineData
1/** @file\r
2\r
3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4SPDX-License-Identifier: BSD-2-Clause-Patent\r
5\r
6Module Name:\r
7\r
8 ComponentName.c\r
9\r
10Abstract:\r
11\r
12\r
13**/\r
14\r
15//\r
16// The package level header files this module uses\r
17//\r
18#include <Uefi.h>\r
19#include <WinNtDxe.h>\r
20//\r
21// The protocols, PPI and GUID defintions for this module\r
22//\r
23#include <Guid/EventGroup.h>\r
24#include <Protocol/WinNtIo.h>\r
25#include <Protocol/ComponentName.h>\r
26#include <Protocol/SimpleTextIn.h>\r
27#include <Protocol/DriverBinding.h>\r
28#include <Protocol/GraphicsOutput.h>\r
29//\r
30// The Library classes this module consumes\r
31//\r
32#include <Library/DebugLib.h>\r
33#include <Library/BaseLib.h>\r
34#include <Library/UefiDriverEntryPoint.h>\r
35#include <Library/UefiLib.h>\r
36#include <Library/BaseMemoryLib.h>\r
37#include <Library/UefiBootServicesTableLib.h>\r
38#include <Library/MemoryAllocationLib.h>\r
39\r
40#include "WinNtGop.h"\r
41\r
42//\r
43// EFI Component Name Functions\r
44//\r
45/**\r
46 Retrieves a Unicode string that is the user readable name of the driver.\r
47\r
48 This function retrieves the user readable name of a driver in the form of a\r
49 Unicode string. If the driver specified by This has a user readable name in\r
50 the language specified by Language, then a pointer to the driver name is\r
51 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
52 by This does not support the language specified by Language,\r
53 then EFI_UNSUPPORTED is returned.\r
54\r
55 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
56 EFI_COMPONENT_NAME_PROTOCOL instance.\r
57\r
58 @param Language[in] A pointer to a Null-terminated ASCII string\r
59 array indicating the language. This is the\r
60 language of the driver name that the caller is\r
61 requesting, and it must match one of the\r
62 languages specified in SupportedLanguages. The\r
63 number of languages supported by a driver is up\r
64 to the driver writer. Language is specified\r
65 in RFC 4646 or ISO 639-2 language code format.\r
66\r
67 @param DriverName[out] A pointer to the Unicode string to return.\r
68 This Unicode string is the name of the\r
69 driver specified by This in the language\r
70 specified by Language.\r
71\r
72 @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
73 This and the language specified by Language was\r
74 returned in DriverName.\r
75\r
76 @retval EFI_INVALID_PARAMETER Language is NULL.\r
77\r
78 @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
79\r
80 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
81 the language specified by Language.\r
82\r
83**/\r
84EFI_STATUS\r
85EFIAPI\r
86WinNtGopComponentNameGetDriverName (\r
87 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
88 IN CHAR8 *Language,\r
89 OUT CHAR16 **DriverName\r
90 );\r
91\r
92\r
93/**\r
94 Retrieves a Unicode string that is the user readable name of the controller\r
95 that is being managed by a driver.\r
96\r
97 This function retrieves the user readable name of the controller specified by\r
98 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
99 driver specified by This has a user readable name in the language specified by\r
100 Language, then a pointer to the controller name is returned in ControllerName,\r
101 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
102 managing the controller specified by ControllerHandle and ChildHandle,\r
103 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
104 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
105\r
106 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
107 EFI_COMPONENT_NAME_PROTOCOL instance.\r
108\r
109 @param ControllerHandle[in] The handle of a controller that the driver\r
110 specified by This is managing. This handle\r
111 specifies the controller whose name is to be\r
112 returned.\r
113\r
114 @param ChildHandle[in] The handle of the child controller to retrieve\r
115 the name of. This is an optional parameter that\r
116 may be NULL. It will be NULL for device\r
117 drivers. It will also be NULL for a bus drivers\r
118 that wish to retrieve the name of the bus\r
119 controller. It will not be NULL for a bus\r
120 driver that wishes to retrieve the name of a\r
121 child controller.\r
122\r
123 @param Language[in] A pointer to a Null-terminated ASCII string\r
124 array indicating the language. This is the\r
125 language of the driver name that the caller is\r
126 requesting, and it must match one of the\r
127 languages specified in SupportedLanguages. The\r
128 number of languages supported by a driver is up\r
129 to the driver writer. Language is specified in\r
130 RFC 4646 or ISO 639-2 language code format.\r
131\r
132 @param ControllerName[out] A pointer to the Unicode string to return.\r
133 This Unicode string is the name of the\r
134 controller specified by ControllerHandle and\r
135 ChildHandle in the language specified by\r
136 Language from the point of view of the driver\r
137 specified by This.\r
138\r
139 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
140 the language specified by Language for the\r
141 driver specified by This was returned in\r
142 DriverName.\r
143\r
144 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
145\r
146 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
147 EFI_HANDLE.\r
148\r
149 @retval EFI_INVALID_PARAMETER Language is NULL.\r
150\r
151 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
152\r
153 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
154 managing the controller specified by\r
155 ControllerHandle and ChildHandle.\r
156\r
157 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
158 the language specified by Language.\r
159\r
160**/\r
161EFI_STATUS\r
162EFIAPI\r
163WinNtGopComponentNameGetControllerName (\r
164 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
165 IN EFI_HANDLE ControllerHandle,\r
166 IN EFI_HANDLE ChildHandle OPTIONAL,\r
167 IN CHAR8 *Language,\r
168 OUT CHAR16 **ControllerName\r
169 );\r
170\r
171\r
172//\r
173// EFI Component Name Protocol\r
174//\r
175GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gWinNtGopComponentName = {\r
176 WinNtGopComponentNameGetDriverName,\r
177 WinNtGopComponentNameGetControllerName,\r
178 "eng"\r
179};\r
180\r
181//\r
182// EFI Component Name 2 Protocol\r
183//\r
184GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gWinNtGopComponentName2 = {\r
185 (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) WinNtGopComponentNameGetDriverName,\r
186 (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) WinNtGopComponentNameGetControllerName,\r
187 "en"\r
188};\r
189\r
190\r
191GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mWinNtGopDriverNameTable[] = {\r
192 { "eng;en", L"Windows GOP Driver" },\r
193 { NULL , NULL }\r
194};\r
195\r
196\r
197/**\r
198 Retrieves a Unicode string that is the user readable name of the driver.\r
199\r
200 This function retrieves the user readable name of a driver in the form of a\r
201 Unicode string. If the driver specified by This has a user readable name in\r
202 the language specified by Language, then a pointer to the driver name is\r
203 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
204 by This does not support the language specified by Language,\r
205 then EFI_UNSUPPORTED is returned.\r
206\r
207 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
208 EFI_COMPONENT_NAME_PROTOCOL instance.\r
209\r
210 @param Language[in] A pointer to a Null-terminated ASCII string\r
211 array indicating the language. This is the\r
212 language of the driver name that the caller is\r
213 requesting, and it must match one of the\r
214 languages specified in SupportedLanguages. The\r
215 number of languages supported by a driver is up\r
216 to the driver writer. Language is specified\r
217 in RFC 4646 or ISO 639-2 language code format.\r
218\r
219 @param DriverName[out] A pointer to the Unicode string to return.\r
220 This Unicode string is the name of the\r
221 driver specified by This in the language\r
222 specified by Language.\r
223\r
224 @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
225 This and the language specified by Language was\r
226 returned in DriverName.\r
227\r
228 @retval EFI_INVALID_PARAMETER Language is NULL.\r
229\r
230 @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
231\r
232 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
233 the language specified by Language.\r
234\r
235**/\r
236EFI_STATUS\r
237EFIAPI\r
238WinNtGopComponentNameGetDriverName (\r
239 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
240 IN CHAR8 *Language,\r
241 OUT CHAR16 **DriverName\r
242 )\r
243{\r
244 return LookupUnicodeString2 (\r
245 Language,\r
246 This->SupportedLanguages,\r
247 mWinNtGopDriverNameTable,\r
248 DriverName,\r
249 (BOOLEAN)(This == &gWinNtGopComponentName)\r
250 );\r
251}\r
252\r
253\r
254/**\r
255 Retrieves a Unicode string that is the user readable name of the controller\r
256 that is being managed by a driver.\r
257\r
258 This function retrieves the user readable name of the controller specified by\r
259 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
260 driver specified by This has a user readable name in the language specified by\r
261 Language, then a pointer to the controller name is returned in ControllerName,\r
262 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
263 managing the controller specified by ControllerHandle and ChildHandle,\r
264 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
265 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
266\r
267 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
268 EFI_COMPONENT_NAME_PROTOCOL instance.\r
269\r
270 @param ControllerHandle[in] The handle of a controller that the driver\r
271 specified by This is managing. This handle\r
272 specifies the controller whose name is to be\r
273 returned.\r
274\r
275 @param ChildHandle[in] The handle of the child controller to retrieve\r
276 the name of. This is an optional parameter that\r
277 may be NULL. It will be NULL for device\r
278 drivers. It will also be NULL for a bus drivers\r
279 that wish to retrieve the name of the bus\r
280 controller. It will not be NULL for a bus\r
281 driver that wishes to retrieve the name of a\r
282 child controller.\r
283\r
284 @param Language[in] A pointer to a Null-terminated ASCII string\r
285 array indicating the language. This is the\r
286 language of the driver name that the caller is\r
287 requesting, and it must match one of the\r
288 languages specified in SupportedLanguages. The\r
289 number of languages supported by a driver is up\r
290 to the driver writer. Language is specified in\r
291 RFC 4646 or ISO 639-2 language code format.\r
292\r
293 @param ControllerName[out] A pointer to the Unicode string to return.\r
294 This Unicode string is the name of the\r
295 controller specified by ControllerHandle and\r
296 ChildHandle in the language specified by\r
297 Language from the point of view of the driver\r
298 specified by This.\r
299\r
300 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
301 the language specified by Language for the\r
302 driver specified by This was returned in\r
303 DriverName.\r
304\r
305 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
306\r
307 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
308 EFI_HANDLE.\r
309\r
310 @retval EFI_INVALID_PARAMETER Language is NULL.\r
311\r
312 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
313\r
314 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
315 managing the controller specified by\r
316 ControllerHandle and ChildHandle.\r
317\r
318 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
319 the language specified by Language.\r
320\r
321**/\r
322EFI_STATUS\r
323EFIAPI\r
324WinNtGopComponentNameGetControllerName (\r
325 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
326 IN EFI_HANDLE ControllerHandle,\r
327 IN EFI_HANDLE ChildHandle OPTIONAL,\r
328 IN CHAR8 *Language,\r
329 OUT CHAR16 **ControllerName\r
330 )\r
331{\r
332 EFI_STATUS Status;\r
333 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
334 GOP_PRIVATE_DATA *Private;\r
335\r
336 //\r
337 // This is a device driver, so ChildHandle must be NULL.\r
338 //\r
339 if (ChildHandle != NULL) {\r
340 return EFI_UNSUPPORTED;\r
341 }\r
342 //\r
343 // Make sure this driver is currently managing ControllerHandle\r
344 //\r
345 Status = EfiTestManagedDevice (\r
346 ControllerHandle,\r
347 gWinNtGopDriverBinding.DriverBindingHandle,\r
348 &gEfiWinNtIoProtocolGuid\r
349 );\r
350 if (EFI_ERROR (Status)) {\r
351 return EFI_UNSUPPORTED;\r
352 }\r
353 //\r
354 // Get our context back\r
355 //\r
356 Status = gBS->OpenProtocol (\r
357 ControllerHandle,\r
358 &gEfiGraphicsOutputProtocolGuid,\r
359 (VOID **) &GraphicsOutput,\r
360 gWinNtGopDriverBinding.DriverBindingHandle,\r
361 ControllerHandle,\r
362 EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
363 );\r
364 if (EFI_ERROR (Status)) {\r
365 return EFI_UNSUPPORTED;\r
366 }\r
367\r
368 Private = GOP_PRIVATE_DATA_FROM_THIS (GraphicsOutput);\r
369\r
370 return LookupUnicodeString2 (\r
371 Language,\r
372 This->SupportedLanguages,\r
373 Private->ControllerNameTable,\r
374 ControllerName,\r
375 (BOOLEAN)(This == &gWinNtGopComponentName)\r
376 );\r
377}\r