]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h
Add compiler hint of "GLOBAL_REMOVE_IF_UNREFERENCED" to prevent static unicode string...
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
CommitLineData
95276127 1/**@file\r
2 Private data structures for the Console Splitter driver\r
3\r
4Copyright (c) 2006 - 2007 Intel Corporation. <BR>\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _CON_SPLITTER_H_\r
16#define _CON_SPLITTER_H_\r
17\r
97a079ed
A
18#include <PiDxe.h>\r
19#include <Guid/PrimaryStandardErrorDevice.h>\r
20#include <Guid/PrimaryConsoleOutDevice.h>\r
21#include <Protocol/GraphicsOutput.h>\r
22#include <Guid/PrimaryConsoleInDevice.h>\r
23#include <Protocol/SimplePointer.h>\r
24#include <Protocol/SimpleTextOut.h>\r
25#include <Guid/ConsoleInDevice.h>\r
26#include <Protocol/SimpleTextIn.h>\r
27#include <Protocol/ConsoleControl.h>\r
28#include <Guid/StandardErrorDevice.h>\r
29#include <Guid/ConsoleOutDevice.h>\r
30#include <Protocol/UgaDraw.h>\r
31#include <Library/DebugLib.h>\r
32#include <Library/UefiDriverEntryPoint.h>\r
33#include <Library/UefiLib.h>\r
34#include <Library/BaseLib.h>\r
35#include <Library/BaseMemoryLib.h>\r
36#include <Library/MemoryAllocationLib.h>\r
37#include <Library/UefiBootServicesTableLib.h>\r
38\r
95276127 39//\r
97a079ed 40// Driver Binding Externs\r
95276127 41//\r
5bca971e 42extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding;\r
43extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName;\r
44extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;\r
45extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;\r
46extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;\r
47extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
48extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;\r
49extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;\r
50extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
51extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding;\r
52extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName;\r
53extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
97a079ed
A
54\r
55// These definitions were in the old Hii protocol, but are not in the new UEFI\r
56// version. So they are defined locally.\r
57#define UNICODE_NARROW_CHAR 0xFFF0\r
58#define UNICODE_WIDE_CHAR 0xFFF1 \r
59\r
95276127 60\r
61//\r
62// Private Data Structures\r
63//\r
64#define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32\r
65#define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32\r
66#define MAX_STD_IN_PASSWORD 80\r
67\r
68typedef struct {\r
69 UINTN Columns;\r
70 UINTN Rows;\r
71} TEXT_OUT_SPLITTER_QUERY_DATA;\r
72\r
73//\r
74// Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter\r
75//\r
76#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')\r
77\r
78typedef struct {\r
79 UINT64 Signature;\r
80 EFI_HANDLE VirtualHandle;\r
81\r
82 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
83 UINTN CurrentNumberOfConsoles;\r
84 EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
85 UINTN TextInListCount;\r
86\r
87 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
88 EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
89 UINTN CurrentNumberOfPointers;\r
90 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
91 UINTN PointerListCount;\r
92\r
93 BOOLEAN PasswordEnabled;\r
94 CHAR16 Password[MAX_STD_IN_PASSWORD];\r
95 UINTN PwdIndex;\r
96 CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];\r
97 EFI_EVENT LockEvent;\r
98\r
99 BOOLEAN KeyEventSignalState;\r
100 BOOLEAN InputEventSignalState;\r
101} TEXT_IN_SPLITTER_PRIVATE_DATA;\r
102\r
103#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
104 CR ((a), \\r
105 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
106 TextIn, \\r
107 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
108 )\r
109\r
110#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
111 CR ((a), \\r
112 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
113 SimplePointer, \\r
114 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
115 )\r
116\r
117//\r
118// Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter\r
119//\r
120#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')\r
121\r
122typedef struct {\r
123 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
124 EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
125 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
126 BOOLEAN TextOutEnabled;\r
127} TEXT_OUT_AND_GOP_DATA;\r
128\r
129typedef struct {\r
130 UINT32 HorizontalResolution;\r
131 UINT32 VerticalResolution;\r
132} TEXT_OUT_GOP_MODE;\r
133\r
134typedef struct {\r
135 UINT64 Signature;\r
136 EFI_HANDLE VirtualHandle;\r
137 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;\r
138 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
139\r
140 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
141 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;\r
142 TEXT_OUT_GOP_MODE *GraphicsOutputModeBuffer;\r
143 UINTN CurrentNumberOfGraphicsOutput;\r
144 BOOLEAN HardwareNeedsStarting;\r
145\r
146 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
147\r
148 UINTN CurrentNumberOfConsoles;\r
149 TEXT_OUT_AND_GOP_DATA *TextOutList;\r
150 UINTN TextOutListCount;\r
151 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
152 UINTN TextOutQueryDataCount;\r
153 INT32 *TextOutModeMap;\r
154\r
155 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;\r
156\r
157 UINTN DevNullColumns;\r
158 UINTN DevNullRows;\r
159 CHAR16 *DevNullScreen;\r
160 INT32 *DevNullAttributes;\r
161\r
162} TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
163\r
164#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
165 CR ((a), \\r
166 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
167 TextOut, \\r
168 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
169 )\r
170\r
171#define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
172 CR ((a), \\r
173 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
174 GraphicsOutput, \\r
175 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
176 )\r
177\r
178#define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
179 CR ((a), \\r
180 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
181 UgaDraw, \\r
182 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
183 )\r
184\r
185#define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
186 CR ((a), \\r
187 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
188 ConsoleControl, \\r
189 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
190 )\r
191\r
192//\r
193// Function Prototypes\r
194//\r
195EFI_STATUS\r
196EFIAPI\r
197ConSplitterDriverEntry (\r
198 IN EFI_HANDLE ImageHandle,\r
199 IN EFI_SYSTEM_TABLE *SystemTable\r
200 )\r
201;\r
202\r
203EFI_STATUS\r
204ConSplitterTextInConstructor (\r
205 TEXT_IN_SPLITTER_PRIVATE_DATA *Private\r
206 )\r
207;\r
208\r
209EFI_STATUS\r
210ConSplitterTextOutConstructor (\r
211 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
212 )\r
213;\r
214\r
215//\r
216// Driver Binding Functions\r
217//\r
218EFI_STATUS\r
219EFIAPI\r
220ConSplitterConInDriverBindingSupported (\r
221 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
222 IN EFI_HANDLE ControllerHandle,\r
223 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
224 )\r
225;\r
226\r
227EFI_STATUS\r
228EFIAPI\r
229ConSplitterSimplePointerDriverBindingSupported (\r
230 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
231 IN EFI_HANDLE ControllerHandle,\r
232 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
233 )\r
234;\r
235\r
236EFI_STATUS\r
237EFIAPI\r
238ConSplitterConOutDriverBindingSupported (\r
239 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
240 IN EFI_HANDLE ControllerHandle,\r
241 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
242 )\r
243;\r
244\r
245EFI_STATUS\r
246EFIAPI\r
247ConSplitterStdErrDriverBindingSupported (\r
248 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
249 IN EFI_HANDLE ControllerHandle,\r
250 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
251 )\r
252;\r
253\r
254EFI_STATUS\r
255EFIAPI\r
256ConSplitterConInDriverBindingStart (\r
257 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
258 IN EFI_HANDLE ControllerHandle,\r
259 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
260 )\r
261;\r
262\r
263EFI_STATUS\r
264EFIAPI\r
265ConSplitterSimplePointerDriverBindingStart (\r
266 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
267 IN EFI_HANDLE ControllerHandle,\r
268 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
269 )\r
270;\r
271\r
272EFI_STATUS\r
273EFIAPI\r
274ConSplitterConOutDriverBindingStart (\r
275 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
276 IN EFI_HANDLE ControllerHandle,\r
277 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
278 )\r
279;\r
280\r
281EFI_STATUS\r
282EFIAPI\r
283ConSplitterStdErrDriverBindingStart (\r
284 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
285 IN EFI_HANDLE ControllerHandle,\r
286 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
287 )\r
288;\r
289\r
290EFI_STATUS\r
291EFIAPI\r
292ConSplitterConInDriverBindingStop (\r
293 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
294 IN EFI_HANDLE ControllerHandle,\r
295 IN UINTN NumberOfChildren,\r
296 IN EFI_HANDLE *ChildHandleBuffer\r
297 )\r
298;\r
299\r
300EFI_STATUS\r
301EFIAPI\r
302ConSplitterSimplePointerDriverBindingStop (\r
303 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
304 IN EFI_HANDLE ControllerHandle,\r
305 IN UINTN NumberOfChildren,\r
306 IN EFI_HANDLE *ChildHandleBuffer\r
307 )\r
308;\r
309\r
310EFI_STATUS\r
311EFIAPI\r
312ConSplitterConOutDriverBindingStop (\r
313 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
314 IN EFI_HANDLE ControllerHandle,\r
315 IN UINTN NumberOfChildren,\r
316 IN EFI_HANDLE *ChildHandleBuffer\r
317 )\r
318;\r
319\r
320EFI_STATUS\r
321EFIAPI\r
322ConSplitterStdErrDriverBindingStop (\r
323 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
324 IN EFI_HANDLE ControllerHandle,\r
325 IN UINTN NumberOfChildren,\r
326 IN EFI_HANDLE *ChildHandleBuffer\r
327 )\r
328;\r
329\r
5bca971e 330/**\r
331 Retrieves a Unicode string that is the user readable name of the driver.\r
332\r
333 This function retrieves the user readable name of a driver in the form of a\r
334 Unicode string. If the driver specified by This has a user readable name in\r
335 the language specified by Language, then a pointer to the driver name is\r
336 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
337 by This does not support the language specified by Language,\r
338 then EFI_UNSUPPORTED is returned.\r
339\r
340 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
341 EFI_COMPONENT_NAME_PROTOCOL instance.\r
342\r
343 @param Language[in] A pointer to a Null-terminated ASCII string\r
344 array indicating the language. This is the\r
345 language of the driver name that the caller is\r
346 requesting, and it must match one of the\r
347 languages specified in SupportedLanguages. The\r
348 number of languages supported by a driver is up\r
349 to the driver writer. Language is specified\r
350 in RFC 3066 or ISO 639-2 language code format.\r
351\r
352 @param DriverName[out] A pointer to the Unicode string to return.\r
353 This Unicode string is the name of the\r
354 driver specified by This in the language\r
355 specified by Language.\r
356\r
357 @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
358 This and the language specified by Language was\r
359 returned in DriverName.\r
360\r
361 @retval EFI_INVALID_PARAMETER Language is NULL.\r
362\r
363 @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
364\r
365 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
366 the language specified by Language.\r
367\r
368**/\r
95276127 369EFI_STATUS\r
370EFIAPI\r
371ConSplitterComponentNameGetDriverName (\r
372 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
373 IN CHAR8 *Language,\r
374 OUT CHAR16 **DriverName\r
375 );\r
376\r
5bca971e 377\r
378/**\r
379 Retrieves a Unicode string that is the user readable name of the controller\r
380 that is being managed by a driver.\r
381\r
382 This function retrieves the user readable name of the controller specified by\r
383 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
384 driver specified by This has a user readable name in the language specified by\r
385 Language, then a pointer to the controller name is returned in ControllerName,\r
386 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
387 managing the controller specified by ControllerHandle and ChildHandle,\r
388 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
389 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
390\r
391 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
392 EFI_COMPONENT_NAME_PROTOCOL instance.\r
393\r
394 @param ControllerHandle[in] The handle of a controller that the driver\r
395 specified by This is managing. This handle\r
396 specifies the controller whose name is to be\r
397 returned.\r
398\r
399 @param ChildHandle[in] The handle of the child controller to retrieve\r
400 the name of. This is an optional parameter that\r
401 may be NULL. It will be NULL for device\r
402 drivers. It will also be NULL for a bus drivers\r
403 that wish to retrieve the name of the bus\r
404 controller. It will not be NULL for a bus\r
405 driver that wishes to retrieve the name of a\r
406 child controller.\r
407\r
408 @param Language[in] A pointer to a Null-terminated ASCII string\r
409 array indicating the language. This is the\r
410 language of the driver name that the caller is\r
411 requesting, and it must match one of the\r
412 languages specified in SupportedLanguages. The\r
413 number of languages supported by a driver is up\r
414 to the driver writer. Language is specified in\r
415 RFC 3066 or ISO 639-2 language code format.\r
416\r
417 @param ControllerName[out] A pointer to the Unicode string to return.\r
418 This Unicode string is the name of the\r
419 controller specified by ControllerHandle and\r
420 ChildHandle in the language specified by\r
421 Language from the point of view of the driver\r
422 specified by This.\r
423\r
424 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
425 the language specified by Language for the\r
426 driver specified by This was returned in\r
427 DriverName.\r
428\r
429 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
430\r
431 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
432 EFI_HANDLE.\r
433\r
434 @retval EFI_INVALID_PARAMETER Language is NULL.\r
435\r
436 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
437\r
438 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
439 managing the controller specified by\r
440 ControllerHandle and ChildHandle.\r
441\r
442 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
443 the language specified by Language.\r
444\r
445**/\r
95276127 446EFI_STATUS\r
447EFIAPI\r
448ConSplitterConInComponentNameGetControllerName (\r
449 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
450 IN EFI_HANDLE ControllerHandle,\r
451 IN EFI_HANDLE ChildHandle OPTIONAL,\r
452 IN CHAR8 *Language,\r
453 OUT CHAR16 **ControllerName\r
454 );\r
455\r
5bca971e 456\r
457/**\r
458 Retrieves a Unicode string that is the user readable name of the controller\r
459 that is being managed by a driver.\r
460\r
461 This function retrieves the user readable name of the controller specified by\r
462 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
463 driver specified by This has a user readable name in the language specified by\r
464 Language, then a pointer to the controller name is returned in ControllerName,\r
465 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
466 managing the controller specified by ControllerHandle and ChildHandle,\r
467 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
468 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
469\r
470 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
471 EFI_COMPONENT_NAME_PROTOCOL instance.\r
472\r
473 @param ControllerHandle[in] The handle of a controller that the driver\r
474 specified by This is managing. This handle\r
475 specifies the controller whose name is to be\r
476 returned.\r
477\r
478 @param ChildHandle[in] The handle of the child controller to retrieve\r
479 the name of. This is an optional parameter that\r
480 may be NULL. It will be NULL for device\r
481 drivers. It will also be NULL for a bus drivers\r
482 that wish to retrieve the name of the bus\r
483 controller. It will not be NULL for a bus\r
484 driver that wishes to retrieve the name of a\r
485 child controller.\r
486\r
487 @param Language[in] A pointer to a Null-terminated ASCII string\r
488 array indicating the language. This is the\r
489 language of the driver name that the caller is\r
490 requesting, and it must match one of the\r
491 languages specified in SupportedLanguages. The\r
492 number of languages supported by a driver is up\r
493 to the driver writer. Language is specified in\r
494 RFC 3066 or ISO 639-2 language code format.\r
495\r
496 @param ControllerName[out] A pointer to the Unicode string to return.\r
497 This Unicode string is the name of the\r
498 controller specified by ControllerHandle and\r
499 ChildHandle in the language specified by\r
500 Language from the point of view of the driver\r
501 specified by This.\r
502\r
503 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
504 the language specified by Language for the\r
505 driver specified by This was returned in\r
506 DriverName.\r
507\r
508 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
509\r
510 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
511 EFI_HANDLE.\r
512\r
513 @retval EFI_INVALID_PARAMETER Language is NULL.\r
514\r
515 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
516\r
517 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
518 managing the controller specified by\r
519 ControllerHandle and ChildHandle.\r
520\r
521 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
522 the language specified by Language.\r
523\r
524**/\r
95276127 525EFI_STATUS\r
526EFIAPI\r
527ConSplitterSimplePointerComponentNameGetControllerName (\r
528 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
529 IN EFI_HANDLE ControllerHandle,\r
530 IN EFI_HANDLE ChildHandle OPTIONAL,\r
531 IN CHAR8 *Language,\r
532 OUT CHAR16 **ControllerName\r
533 );\r
534\r
5bca971e 535\r
536/**\r
537 Retrieves a Unicode string that is the user readable name of the controller\r
538 that is being managed by a driver.\r
539\r
540 This function retrieves the user readable name of the controller specified by\r
541 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
542 driver specified by This has a user readable name in the language specified by\r
543 Language, then a pointer to the controller name is returned in ControllerName,\r
544 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
545 managing the controller specified by ControllerHandle and ChildHandle,\r
546 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
547 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
548\r
549 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
550 EFI_COMPONENT_NAME_PROTOCOL instance.\r
551\r
552 @param ControllerHandle[in] The handle of a controller that the driver\r
553 specified by This is managing. This handle\r
554 specifies the controller whose name is to be\r
555 returned.\r
556\r
557 @param ChildHandle[in] The handle of the child controller to retrieve\r
558 the name of. This is an optional parameter that\r
559 may be NULL. It will be NULL for device\r
560 drivers. It will also be NULL for a bus drivers\r
561 that wish to retrieve the name of the bus\r
562 controller. It will not be NULL for a bus\r
563 driver that wishes to retrieve the name of a\r
564 child controller.\r
565\r
566 @param Language[in] A pointer to a Null-terminated ASCII string\r
567 array indicating the language. This is the\r
568 language of the driver name that the caller is\r
569 requesting, and it must match one of the\r
570 languages specified in SupportedLanguages. The\r
571 number of languages supported by a driver is up\r
572 to the driver writer. Language is specified in\r
573 RFC 3066 or ISO 639-2 language code format.\r
574\r
575 @param ControllerName[out] A pointer to the Unicode string to return.\r
576 This Unicode string is the name of the\r
577 controller specified by ControllerHandle and\r
578 ChildHandle in the language specified by\r
579 Language from the point of view of the driver\r
580 specified by This.\r
581\r
582 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
583 the language specified by Language for the\r
584 driver specified by This was returned in\r
585 DriverName.\r
586\r
587 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
588\r
589 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
590 EFI_HANDLE.\r
591\r
592 @retval EFI_INVALID_PARAMETER Language is NULL.\r
593\r
594 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
595\r
596 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
597 managing the controller specified by\r
598 ControllerHandle and ChildHandle.\r
599\r
600 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
601 the language specified by Language.\r
602\r
603**/\r
95276127 604EFI_STATUS\r
605EFIAPI\r
606ConSplitterConOutComponentNameGetControllerName (\r
607 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
608 IN EFI_HANDLE ControllerHandle,\r
609 IN EFI_HANDLE ChildHandle OPTIONAL,\r
610 IN CHAR8 *Language,\r
611 OUT CHAR16 **ControllerName\r
612 );\r
613\r
5bca971e 614\r
615/**\r
616 Retrieves a Unicode string that is the user readable name of the controller\r
617 that is being managed by a driver.\r
618\r
619 This function retrieves the user readable name of the controller specified by\r
620 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
621 driver specified by This has a user readable name in the language specified by\r
622 Language, then a pointer to the controller name is returned in ControllerName,\r
623 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
624 managing the controller specified by ControllerHandle and ChildHandle,\r
625 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
626 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
627\r
628 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
629 EFI_COMPONENT_NAME_PROTOCOL instance.\r
630\r
631 @param ControllerHandle[in] The handle of a controller that the driver\r
632 specified by This is managing. This handle\r
633 specifies the controller whose name is to be\r
634 returned.\r
635\r
636 @param ChildHandle[in] The handle of the child controller to retrieve\r
637 the name of. This is an optional parameter that\r
638 may be NULL. It will be NULL for device\r
639 drivers. It will also be NULL for a bus drivers\r
640 that wish to retrieve the name of the bus\r
641 controller. It will not be NULL for a bus\r
642 driver that wishes to retrieve the name of a\r
643 child controller.\r
644\r
645 @param Language[in] A pointer to a Null-terminated ASCII string\r
646 array indicating the language. This is the\r
647 language of the driver name that the caller is\r
648 requesting, and it must match one of the\r
649 languages specified in SupportedLanguages. The\r
650 number of languages supported by a driver is up\r
651 to the driver writer. Language is specified in\r
652 RFC 3066 or ISO 639-2 language code format.\r
653\r
654 @param ControllerName[out] A pointer to the Unicode string to return.\r
655 This Unicode string is the name of the\r
656 controller specified by ControllerHandle and\r
657 ChildHandle in the language specified by\r
658 Language from the point of view of the driver\r
659 specified by This.\r
660\r
661 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
662 the language specified by Language for the\r
663 driver specified by This was returned in\r
664 DriverName.\r
665\r
666 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
667\r
668 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
669 EFI_HANDLE.\r
670\r
671 @retval EFI_INVALID_PARAMETER Language is NULL.\r
672\r
673 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
674\r
675 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
676 managing the controller specified by\r
677 ControllerHandle and ChildHandle.\r
678\r
679 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
680 the language specified by Language.\r
681\r
682**/\r
95276127 683EFI_STATUS\r
684EFIAPI\r
685ConSplitterStdErrComponentNameGetControllerName (\r
686 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
687 IN EFI_HANDLE ControllerHandle,\r
688 IN EFI_HANDLE ChildHandle OPTIONAL,\r
689 IN CHAR8 *Language,\r
690 OUT CHAR16 **ControllerName\r
691 );\r
692\r
5bca971e 693\r
95276127 694//\r
695// TextIn Constructor/Destructor functions\r
696//\r
697EFI_STATUS\r
698ConSplitterTextInAddDevice (\r
699 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
700 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
701 )\r
702;\r
703\r
704EFI_STATUS\r
705ConSplitterTextInDeleteDevice (\r
706 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
707 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
708 )\r
709;\r
710\r
711//\r
712// SimplePointer Constuctor/Destructor functions\r
713//\r
714EFI_STATUS\r
715ConSplitterSimplePointerAddDevice (\r
716 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
717 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
718 )\r
719;\r
720\r
721EFI_STATUS\r
722ConSplitterSimplePointerDeleteDevice (\r
723 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
724 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
725 )\r
726;\r
727\r
728//\r
729// TextOut Constuctor/Destructor functions\r
730//\r
731EFI_STATUS\r
732ConSplitterTextOutAddDevice (\r
733 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
734 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut,\r
735 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
736 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
737 )\r
738;\r
739\r
740EFI_STATUS\r
741ConSplitterTextOutDeleteDevice (\r
742 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
743 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut\r
744 )\r
745;\r
746\r
747//\r
748// TextIn I/O Functions\r
749//\r
750EFI_STATUS\r
751EFIAPI\r
752ConSplitterTextInReset (\r
753 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
754 IN BOOLEAN ExtendedVerification\r
755 )\r
756;\r
757\r
758EFI_STATUS\r
759EFIAPI\r
760ConSplitterTextInReadKeyStroke (\r
761 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
762 OUT EFI_INPUT_KEY *Key\r
763 )\r
764;\r
765\r
766VOID\r
767EFIAPI\r
768ConSplitterTextInWaitForKey (\r
769 IN EFI_EVENT Event,\r
770 IN VOID *Context\r
771 )\r
772;\r
773\r
774BOOLEAN\r
775ConSpliterConssoleControlStdInLocked (\r
776 VOID\r
777 )\r
778;\r
779\r
780VOID\r
781EFIAPI\r
782ConSpliterConsoleControlLockStdInEvent (\r
783 IN EFI_EVENT Event,\r
784 IN VOID *Context\r
785 )\r
786;\r
787\r
788EFI_STATUS\r
789EFIAPI\r
790ConSpliterConsoleControlLockStdIn (\r
791 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
792 IN CHAR16 *Password\r
793 )\r
794;\r
795\r
796EFI_STATUS\r
797EFIAPI\r
798ConSplitterTextInPrivateReadKeyStroke (\r
799 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
800 OUT EFI_INPUT_KEY *Key\r
801 )\r
802;\r
803\r
804EFI_STATUS\r
805EFIAPI\r
806ConSplitterSimplePointerReset (\r
807 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
808 IN BOOLEAN ExtendedVerification\r
809 )\r
810;\r
811\r
812EFI_STATUS\r
813EFIAPI\r
814ConSplitterSimplePointerGetState (\r
815 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
816 IN OUT EFI_SIMPLE_POINTER_STATE *State\r
817 )\r
818;\r
819\r
820VOID\r
821EFIAPI\r
822ConSplitterSimplePointerWaitForInput (\r
823 IN EFI_EVENT Event,\r
824 IN VOID *Context\r
825 )\r
826;\r
827\r
828//\r
829// TextOut I/O Functions\r
830//\r
831VOID\r
832ConSplitterSynchronizeModeData (\r
833 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
834 )\r
835;\r
836\r
837EFI_STATUS\r
838EFIAPI\r
839ConSplitterTextOutReset (\r
840 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
841 IN BOOLEAN ExtendedVerification\r
842 )\r
843;\r
844\r
845EFI_STATUS\r
846EFIAPI\r
847ConSplitterTextOutOutputString (\r
848 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
849 IN CHAR16 *WString\r
850 )\r
851;\r
852\r
853EFI_STATUS\r
854EFIAPI\r
855ConSplitterTextOutTestString (\r
856 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
857 IN CHAR16 *WString\r
858 )\r
859;\r
860\r
861EFI_STATUS\r
862EFIAPI\r
863ConSplitterTextOutQueryMode (\r
864 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
865 IN UINTN ModeNumber,\r
866 OUT UINTN *Columns,\r
867 OUT UINTN *Rows\r
868 )\r
869;\r
870\r
871EFI_STATUS\r
872EFIAPI\r
873ConSplitterTextOutSetMode (\r
874 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
875 IN UINTN ModeNumber\r
876 )\r
877;\r
878\r
879EFI_STATUS\r
880EFIAPI\r
881ConSplitterTextOutSetAttribute (\r
882 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
883 IN UINTN Attribute\r
884 )\r
885;\r
886\r
887EFI_STATUS\r
888EFIAPI\r
889ConSplitterTextOutClearScreen (\r
890 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
891 )\r
892;\r
893\r
894EFI_STATUS\r
895EFIAPI\r
896ConSplitterTextOutSetCursorPosition (\r
897 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
898 IN UINTN Column,\r
899 IN UINTN Row\r
900 )\r
901;\r
902\r
903EFI_STATUS\r
904EFIAPI\r
905ConSplitterTextOutEnableCursor (\r
906 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
907 IN BOOLEAN Visible\r
908 )\r
909;\r
910\r
911EFI_STATUS\r
912ConSplitterGrowBuffer (\r
913 IN UINTN SizeOfCount,\r
914 IN UINTN *Count,\r
915 IN OUT VOID **Buffer\r
916 )\r
917;\r
918\r
919EFI_STATUS\r
920EFIAPI\r
921ConSpliterConsoleControlGetMode (\r
922 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
923 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
924 OUT BOOLEAN *GopExists,\r
925 OUT BOOLEAN *StdInLocked\r
926 )\r
927;\r
928\r
929EFI_STATUS\r
930EFIAPI\r
931ConSpliterConsoleControlSetMode (\r
932 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
933 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
934 )\r
935;\r
936\r
937EFI_STATUS\r
938EFIAPI\r
939ConSpliterGraphicsOutputQueryMode (\r
940 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
941 IN UINT32 ModeNumber,\r
942 OUT UINTN *SizeOfInfo,\r
943 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info\r
944 )\r
945;\r
946\r
947EFI_STATUS\r
948EFIAPI\r
949ConSpliterGraphicsOutputSetMode (\r
950 IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
951 IN UINT32 ModeNumber\r
952 )\r
953;\r
954\r
955EFI_STATUS\r
956EFIAPI\r
957ConSpliterGraphicsOutputBlt (\r
958 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
959 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL\r
960 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,\r
961 IN UINTN SourceX,\r
962 IN UINTN SourceY,\r
963 IN UINTN DestinationX,\r
964 IN UINTN DestinationY,\r
965 IN UINTN Width,\r
966 IN UINTN Height,\r
967 IN UINTN Delta OPTIONAL\r
968 )\r
969;\r
970\r
971EFI_STATUS\r
972DevNullGopSync (\r
973 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
974 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
975 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
976 )\r
977;\r
978\r
979\r
980EFI_STATUS\r
981DevNullTextOutOutputString (\r
982 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
983 IN CHAR16 *WString\r
984 )\r
985;\r
986\r
987EFI_STATUS\r
988DevNullTextOutSetMode (\r
989 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
990 IN UINTN ModeNumber\r
991 )\r
992;\r
993\r
994EFI_STATUS\r
995DevNullTextOutClearScreen (\r
996 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
997 )\r
998;\r
999\r
1000EFI_STATUS\r
1001DevNullTextOutSetCursorPosition (\r
1002 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1003 IN UINTN Column,\r
1004 IN UINTN Row\r
1005 )\r
1006;\r
1007\r
1008EFI_STATUS\r
1009DevNullTextOutEnableCursor (\r
1010 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1011 IN BOOLEAN Visible\r
1012 )\r
1013;\r
1014\r
1015EFI_STATUS\r
1016DevNullSyncGopStdOut (\r
1017 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
1018 )\r
1019;\r
1020\r
1021#endif\r