The implementation of Consplitter driver should check the child handle to follow...
[people/mcb30/edk2.git] / edk2 / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
1 /**@file\r
2   Private data structures for the Console Splitter driver\r
3 \r
4 Copyright (c) 2006 - 2007 Intel Corporation. <BR>\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution.  The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9 \r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT 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
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/AbsolutePointer.h>\r
25 #include <Protocol/SimpleTextOut.h>\r
26 #include <Guid/ConsoleInDevice.h>\r
27 #include <Protocol/SimpleTextIn.h>\r
28 #include <Protocol/SimpleTextInEx.h>\r
29 #include <Protocol/ConsoleControl.h>\r
30 #include <Guid/StandardErrorDevice.h>\r
31 #include <Guid/ConsoleOutDevice.h>\r
32 #include <Protocol/UgaDraw.h>\r
33 #include <Library/PcdLib.h>\r
34 #include <Library/DebugLib.h>\r
35 #include <Library/UefiDriverEntryPoint.h>\r
36 #include <Library/UefiLib.h>\r
37 #include <Library/BaseLib.h>\r
38 #include <Library/BaseMemoryLib.h>\r
39 #include <Library/MemoryAllocationLib.h>\r
40 #include <Library/UefiBootServicesTableLib.h>\r
41 \r
42 //\r
43 // Driver Binding Externs\r
44 //\r
45 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterConInDriverBinding;\r
46 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConInComponentName;\r
47 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;\r
48 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterSimplePointerDriverBinding;\r
49 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterSimplePointerComponentName;\r
50 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
51 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterAbsolutePointerDriverBinding;\r
52 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterAbsolutePointerComponentName;\r
53 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;\r
54 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterConOutDriverBinding;\r
55 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConOutComponentName;\r
56 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
57 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterStdErrDriverBinding;\r
58 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterStdErrComponentName;\r
59 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
60 \r
61 extern EFI_GUID                     gSimpleTextInExNotifyGuid;\r
62 \r
63 // These definitions were in the old Hii protocol, but are not in the new UEFI\r
64 // version. So they are defined locally.\r
65 #define UNICODE_NARROW_CHAR   0xFFF0\r
66 #define UNICODE_WIDE_CHAR     0xFFF1\r
67 \r
68 \r
69 //\r
70 // Private Data Structures\r
71 //\r
72 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT  32\r
73 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT     32\r
74 #define MAX_STD_IN_PASSWORD                   80\r
75 \r
76 typedef struct {\r
77   UINTN Columns;\r
78   UINTN Rows;\r
79 } TEXT_OUT_SPLITTER_QUERY_DATA;\r
80 \r
81 //\r
82 // Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter\r
83 //\r
84 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')\r
85 \r
86 #define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'n')\r
87 \r
88 typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {\r
89   UINTN                                 Signature;\r
90   EFI_HANDLE                            *NotifyHandleList;\r
91   EFI_HANDLE                            NotifyHandle;\r
92   EFI_KEY_DATA                          KeyData;\r
93   EFI_KEY_NOTIFY_FUNCTION               KeyNotificationFn;\r
94   LIST_ENTRY                            NotifyEntry;\r
95 } TEXT_IN_EX_SPLITTER_NOTIFY;\r
96 \r
97 typedef struct {\r
98   UINT64                             Signature;\r
99   EFI_HANDLE                         VirtualHandle;\r
100 \r
101   EFI_SIMPLE_TEXT_INPUT_PROTOCOL     TextIn;\r
102   UINTN                              CurrentNumberOfConsoles;\r
103   EFI_SIMPLE_TEXT_INPUT_PROTOCOL     **TextInList;\r
104   UINTN                              TextInListCount;\r
105 \r
106   EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  TextInEx;\r
107   UINTN                              CurrentNumberOfExConsoles;\r
108   EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  **TextInExList;\r
109   UINTN                              TextInExListCount;\r
110   LIST_ENTRY                         NotifyList;\r
111 \r
112 \r
113   EFI_SIMPLE_POINTER_PROTOCOL        SimplePointer;\r
114   EFI_SIMPLE_POINTER_MODE            SimplePointerMode;\r
115   UINTN                              CurrentNumberOfPointers;\r
116   EFI_SIMPLE_POINTER_PROTOCOL        **PointerList;\r
117   UINTN                              PointerListCount;\r
118 \r
119   EFI_ABSOLUTE_POINTER_PROTOCOL      AbsolutePointer;\r
120   EFI_ABSOLUTE_POINTER_MODE          AbsolutePointerMode;\r
121   UINTN                              CurrentNumberOfAbsolutePointers;\r
122   EFI_ABSOLUTE_POINTER_PROTOCOL      **AbsolutePointerList;\r
123   UINTN                              AbsolutePointerListCount;\r
124   BOOLEAN                            AbsoluteInputEventSignalState;\r
125 \r
126   BOOLEAN                            PasswordEnabled;\r
127   CHAR16                             Password[MAX_STD_IN_PASSWORD];\r
128   UINTN                              PwdIndex;\r
129   CHAR16                             PwdAttempt[MAX_STD_IN_PASSWORD];\r
130   EFI_EVENT                          LockEvent;\r
131 \r
132   BOOLEAN                            KeyEventSignalState;\r
133   BOOLEAN                            InputEventSignalState;\r
134 } TEXT_IN_SPLITTER_PRIVATE_DATA;\r
135 \r
136 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a)  \\r
137   CR ((a),                                            \\r
138       TEXT_IN_SPLITTER_PRIVATE_DATA,                \\r
139       TextIn,                                       \\r
140       TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE       \\r
141       )\r
142 \r
143 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
144   CR ((a),                                                          \\r
145       TEXT_IN_SPLITTER_PRIVATE_DATA,                              \\r
146       SimplePointer,                                              \\r
147       TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE                     \\r
148       )\r
149 #define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
150   CR (a, \\r
151       TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
152       TextInEx, \\r
153       TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
154       )\r
155 \r
156 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \\r
157   CR (a, \\r
158       TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
159       AbsolutePointer, \\r
160       TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
161       )\r
162 \r
163 //\r
164 // Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter\r
165 //\r
166 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE  EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')\r
167 \r
168 typedef struct {\r
169   EFI_GRAPHICS_OUTPUT_PROTOCOL     *GraphicsOutput;\r
170   EFI_UGA_DRAW_PROTOCOL            *UgaDraw;\r
171   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *TextOut;\r
172   BOOLEAN                          TextOutEnabled;\r
173 } TEXT_OUT_AND_GOP_DATA;\r
174 \r
175 typedef struct {\r
176   UINT64                             Signature;\r
177   EFI_HANDLE                         VirtualHandle;\r
178   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    TextOut;\r
179   EFI_SIMPLE_TEXT_OUTPUT_MODE        TextOutMode;\r
180 \r
181   EFI_UGA_DRAW_PROTOCOL              UgaDraw;\r
182   UINT32                             UgaHorizontalResolution;\r
183   UINT32                             UgaVerticalResolution;\r
184   UINT32                             UgaColorDepth;\r
185   UINT32                             UgaRefreshRate;\r
186   EFI_UGA_PIXEL                      *UgaBlt;\r
187 \r
188   EFI_GRAPHICS_OUTPUT_PROTOCOL       GraphicsOutput;\r
189   EFI_GRAPHICS_OUTPUT_BLT_PIXEL      *GraphicsOutputBlt;\r
190   EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GraphicsOutputModeBuffer;\r
191   UINTN                              CurrentNumberOfGraphicsOutput;\r
192   UINTN                              CurrentNumberOfUgaDraw;\r
193   BOOLEAN                            HardwareNeedsStarting;\r
194 \r
195   EFI_CONSOLE_CONTROL_PROTOCOL       ConsoleControl;\r
196 \r
197   UINTN                              CurrentNumberOfConsoles;\r
198   TEXT_OUT_AND_GOP_DATA              *TextOutList;\r
199   UINTN                              TextOutListCount;\r
200   TEXT_OUT_SPLITTER_QUERY_DATA       *TextOutQueryData;\r
201   UINTN                              TextOutQueryDataCount;\r
202   INT32                              *TextOutModeMap;\r
203 \r
204   EFI_CONSOLE_CONTROL_SCREEN_MODE    ConsoleOutputMode;\r
205 \r
206   UINTN                              DevNullColumns;\r
207   UINTN                              DevNullRows;\r
208   CHAR16                             *DevNullScreen;\r
209   INT32                              *DevNullAttributes;\r
210 \r
211 } TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
212 \r
213 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
214   CR ((a),                                            \\r
215       TEXT_OUT_SPLITTER_PRIVATE_DATA,               \\r
216       TextOut,                                      \\r
217       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE      \\r
218       )\r
219 \r
220 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a)  \\r
221   CR ((a),                                                    \\r
222       TEXT_OUT_SPLITTER_PRIVATE_DATA,                       \\r
223       GraphicsOutput,                                       \\r
224       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE              \\r
225       )\r
226 \r
227 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
228   CR ((a),                                            \\r
229       TEXT_OUT_SPLITTER_PRIVATE_DATA,               \\r
230       UgaDraw,                                      \\r
231       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE      \\r
232       )\r
233 \r
234 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a)  \\r
235   CR ((a),                                                    \\r
236       TEXT_OUT_SPLITTER_PRIVATE_DATA,                       \\r
237       ConsoleControl,                                       \\r
238       TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE              \\r
239       )\r
240 \r
241 //\r
242 // Function Prototypes\r
243 //\r
244 EFI_STATUS\r
245 EFIAPI\r
246 ConSplitterDriverEntry (\r
247   IN EFI_HANDLE                       ImageHandle,\r
248   IN EFI_SYSTEM_TABLE                 *SystemTable\r
249   )\r
250 ;\r
251 \r
252 EFI_STATUS\r
253 ConSplitterTextInConstructor (\r
254   TEXT_IN_SPLITTER_PRIVATE_DATA       *Private\r
255   )\r
256 ;\r
257 \r
258 EFI_STATUS\r
259 ConSplitterTextOutConstructor (\r
260   TEXT_OUT_SPLITTER_PRIVATE_DATA      *Private\r
261   )\r
262 ;\r
263 \r
264 //\r
265 // Driver Binding Functions\r
266 //\r
267 EFI_STATUS\r
268 EFIAPI\r
269 ConSplitterConInDriverBindingSupported (\r
270   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
271   IN  EFI_HANDLE                      ControllerHandle,\r
272   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
273   )\r
274 ;\r
275 \r
276 EFI_STATUS\r
277 EFIAPI\r
278 ConSplitterSimplePointerDriverBindingSupported (\r
279   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
280   IN  EFI_HANDLE                      ControllerHandle,\r
281   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
282   )\r
283 ;\r
284 \r
285 EFI_STATUS\r
286 EFIAPI\r
287 ConSplitterConOutDriverBindingSupported (\r
288   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
289   IN  EFI_HANDLE                      ControllerHandle,\r
290   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
291   )\r
292 ;\r
293 \r
294 EFI_STATUS\r
295 EFIAPI\r
296 ConSplitterStdErrDriverBindingSupported (\r
297   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
298   IN  EFI_HANDLE                      ControllerHandle,\r
299   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
300   )\r
301 ;\r
302 \r
303 EFI_STATUS\r
304 EFIAPI\r
305 ConSplitterConInDriverBindingStart (\r
306   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
307   IN  EFI_HANDLE                      ControllerHandle,\r
308   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
309   )\r
310 ;\r
311 \r
312 EFI_STATUS\r
313 EFIAPI\r
314 ConSplitterSimplePointerDriverBindingStart (\r
315   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
316   IN  EFI_HANDLE                      ControllerHandle,\r
317   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
318   )\r
319 ;\r
320 \r
321 EFI_STATUS\r
322 EFIAPI\r
323 ConSplitterConOutDriverBindingStart (\r
324   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
325   IN  EFI_HANDLE                      ControllerHandle,\r
326   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
327   )\r
328 ;\r
329 \r
330 EFI_STATUS\r
331 EFIAPI\r
332 ConSplitterStdErrDriverBindingStart (\r
333   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
334   IN  EFI_HANDLE                      ControllerHandle,\r
335   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
336   )\r
337 ;\r
338 \r
339 EFI_STATUS\r
340 EFIAPI\r
341 ConSplitterConInDriverBindingStop (\r
342   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
343   IN  EFI_HANDLE                      ControllerHandle,\r
344   IN  UINTN                           NumberOfChildren,\r
345   IN  EFI_HANDLE                      *ChildHandleBuffer\r
346   )\r
347 ;\r
348 \r
349 EFI_STATUS\r
350 EFIAPI\r
351 ConSplitterSimplePointerDriverBindingStop (\r
352   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
353   IN  EFI_HANDLE                      ControllerHandle,\r
354   IN  UINTN                           NumberOfChildren,\r
355   IN  EFI_HANDLE                      *ChildHandleBuffer\r
356   )\r
357 ;\r
358 \r
359 EFI_STATUS\r
360 EFIAPI\r
361 ConSplitterConOutDriverBindingStop (\r
362   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
363   IN  EFI_HANDLE                      ControllerHandle,\r
364   IN  UINTN                           NumberOfChildren,\r
365   IN  EFI_HANDLE                      *ChildHandleBuffer\r
366   )\r
367 ;\r
368 \r
369 EFI_STATUS\r
370 EFIAPI\r
371 ConSplitterStdErrDriverBindingStop (\r
372   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
373   IN  EFI_HANDLE                      ControllerHandle,\r
374   IN  UINTN                           NumberOfChildren,\r
375   IN  EFI_HANDLE                      *ChildHandleBuffer\r
376   )\r
377 ;\r
378 \r
379 //\r
380 // Driver binding functions\r
381 //\r
382 \r
383 EFI_STATUS\r
384 EFIAPI\r
385 ConSplitterAbsolutePointerDriverBindingSupported (\r
386   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
387   IN  EFI_HANDLE                      ControllerHandle,\r
388   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
389   )\r
390 ;\r
391 \r
392 EFI_STATUS\r
393 EFIAPI\r
394 ConSplitterAbsolutePointerDriverBindingStart (\r
395   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
396   IN  EFI_HANDLE                      ControllerHandle,\r
397   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
398   )\r
399 ;\r
400 \r
401 EFI_STATUS\r
402 EFIAPI\r
403 ConSplitterAbsolutePointerDriverBindingStop (\r
404   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
405   IN  EFI_HANDLE                      ControllerHandle,\r
406   IN  UINTN                           NumberOfChildren,\r
407   IN  EFI_HANDLE                      *ChildHandleBuffer\r
408   )\r
409 ;\r
410 \r
411 EFI_STATUS\r
412 ConSplitterAbsolutePointerAddDevice (\r
413   IN  TEXT_IN_SPLITTER_PRIVATE_DATA     *Private,\r
414   IN  EFI_ABSOLUTE_POINTER_PROTOCOL     *AbsolutePointer\r
415   )\r
416 ;\r
417 \r
418 EFI_STATUS\r
419 ConSplitterAbsolutePointerDeleteDevice (\r
420   IN  TEXT_IN_SPLITTER_PRIVATE_DATA     *Private,\r
421   IN  EFI_ABSOLUTE_POINTER_PROTOCOL     *AbsolutePointer\r
422   )\r
423 ;\r
424 \r
425 //\r
426 // Absolute Pointer protocol interfaces\r
427 //\r
428 \r
429 EFI_STATUS\r
430 EFIAPI\r
431 ConSplitterAbsolutePointerReset (\r
432   IN EFI_ABSOLUTE_POINTER_PROTOCOL   *This,\r
433   IN BOOLEAN                         ExtendedVerification\r
434   )\r
435 /*++\r
436 \r
437   Routine Description:\r
438     Resets the pointer device hardware.\r
439 \r
440   Arguments:\r
441     This                  - Protocol instance pointer.\r
442     ExtendedVerification  - Driver may perform diagnostics on reset.\r
443 \r
444   Returns:\r
445     EFI_SUCCESS           - The device was reset.\r
446     EFI_DEVICE_ERROR      - The device is not functioning correctly and could\r
447                             not be reset.\r
448 \r
449 --*/\r
450 ;\r
451 \r
452 EFI_STATUS\r
453 EFIAPI\r
454 ConSplitterAbsolutePointerGetState (\r
455   IN EFI_ABSOLUTE_POINTER_PROTOCOL   *This,\r
456   IN OUT EFI_ABSOLUTE_POINTER_STATE  *State\r
457   )\r
458 /*++\r
459 \r
460   Routine Description:\r
461     Retrieves the current state of a pointer device.\r
462 \r
463   Arguments:\r
464     This                  - Protocol instance pointer.\r
465     State                 - A pointer to the state information on the pointer device.\r
466 \r
467   Returns:\r
468     EFI_SUCCESS           - The state of the pointer device was returned in State..\r
469     EFI_NOT_READY         - The state of the pointer device has not changed since the last call to\r
470                             GetState().\r
471     EFI_DEVICE_ERROR      - A device error occurred while attempting to retrieve the pointer\r
472                             device's current state.\r
473 --*/\r
474 ;\r
475 \r
476 VOID\r
477 EFIAPI\r
478 ConSplitterAbsolutePointerWaitForInput (\r
479   IN  EFI_EVENT                       Event,\r
480   IN  VOID                            *Context\r
481   )\r
482 ;\r
483 \r
484 /**\r
485   Retrieves a Unicode string that is the user readable name of the driver.\r
486 \r
487   This function retrieves the user readable name of a driver in the form of a\r
488   Unicode string. If the driver specified by This has a user readable name in\r
489   the language specified by Language, then a pointer to the driver name is\r
490   returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
491   by This does not support the language specified by Language,\r
492   then EFI_UNSUPPORTED is returned.\r
493 \r
494   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
495                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
496 \r
497   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
498                                 array indicating the language. This is the\r
499                                 language of the driver name that the caller is\r
500                                 requesting, and it must match one of the\r
501                                 languages specified in SupportedLanguages. The\r
502                                 number of languages supported by a driver is up\r
503                                 to the driver writer. Language is specified\r
504                                 in RFC 3066 or ISO 639-2 language code format.\r
505 \r
506   @param  DriverName[out]       A pointer to the Unicode string to return.\r
507                                 This Unicode string is the name of the\r
508                                 driver specified by This in the language\r
509                                 specified by Language.\r
510 \r
511   @retval EFI_SUCCESS           The Unicode string for the Driver specified by\r
512                                 This and the language specified by Language was\r
513                                 returned in DriverName.\r
514 \r
515   @retval EFI_INVALID_PARAMETER Language is NULL.\r
516 \r
517   @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
518 \r
519   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
520                                 the language specified by Language.\r
521 \r
522 **/\r
523 EFI_STATUS\r
524 EFIAPI\r
525 ConSplitterComponentNameGetDriverName (\r
526   IN  EFI_COMPONENT_NAME_PROTOCOL  *This,\r
527   IN  CHAR8                        *Language,\r
528   OUT CHAR16                       **DriverName\r
529   );\r
530 \r
531 \r
532 /**\r
533   Retrieves a Unicode string that is the user readable name of the controller\r
534   that is being managed by a driver.\r
535 \r
536   This function retrieves the user readable name of the controller specified by\r
537   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
538   driver specified by This has a user readable name in the language specified by\r
539   Language, then a pointer to the controller name is returned in ControllerName,\r
540   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
541   managing the controller specified by ControllerHandle and ChildHandle,\r
542   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
543   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
544 \r
545   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
546                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
547 \r
548   @param  ControllerHandle[in]  The handle of a controller that the driver\r
549                                 specified by This is managing.  This handle\r
550                                 specifies the controller whose name is to be\r
551                                 returned.\r
552 \r
553   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
554                                 the name of.  This is an optional parameter that\r
555                                 may be NULL.  It will be NULL for device\r
556                                 drivers.  It will also be NULL for a bus drivers\r
557                                 that wish to retrieve the name of the bus\r
558                                 controller.  It will not be NULL for a bus\r
559                                 driver that wishes to retrieve the name of a\r
560                                 child controller.\r
561 \r
562   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
563                                 array indicating the language.  This is the\r
564                                 language of the driver name that the caller is\r
565                                 requesting, and it must match one of the\r
566                                 languages specified in SupportedLanguages. The\r
567                                 number of languages supported by a driver is up\r
568                                 to the driver writer. Language is specified in\r
569                                 RFC 3066 or ISO 639-2 language code format.\r
570 \r
571   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
572                                 This Unicode string is the name of the\r
573                                 controller specified by ControllerHandle and\r
574                                 ChildHandle in the language specified by\r
575                                 Language from the point of view of the driver\r
576                                 specified by This.\r
577 \r
578   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
579                                 the language specified by Language for the\r
580                                 driver specified by This was returned in\r
581                                 DriverName.\r
582 \r
583   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
584 \r
585   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
586                                 EFI_HANDLE.\r
587 \r
588   @retval EFI_INVALID_PARAMETER Language is NULL.\r
589 \r
590   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
591 \r
592   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
593                                 managing the controller specified by\r
594                                 ControllerHandle and ChildHandle.\r
595 \r
596   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
597                                 the language specified by Language.\r
598 \r
599 **/\r
600 EFI_STATUS\r
601 EFIAPI\r
602 ConSplitterConInComponentNameGetControllerName (\r
603   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
604   IN  EFI_HANDLE                                      ControllerHandle,\r
605   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
606   IN  CHAR8                                           *Language,\r
607   OUT CHAR16                                          **ControllerName\r
608   );\r
609 \r
610 \r
611 /**\r
612   Retrieves a Unicode string that is the user readable name of the controller\r
613   that is being managed by a driver.\r
614 \r
615   This function retrieves the user readable name of the controller specified by\r
616   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
617   driver specified by This has a user readable name in the language specified by\r
618   Language, then a pointer to the controller name is returned in ControllerName,\r
619   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
620   managing the controller specified by ControllerHandle and ChildHandle,\r
621   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
622   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
623 \r
624   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
625                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
626 \r
627   @param  ControllerHandle[in]  The handle of a controller that the driver\r
628                                 specified by This is managing.  This handle\r
629                                 specifies the controller whose name is to be\r
630                                 returned.\r
631 \r
632   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
633                                 the name of.  This is an optional parameter that\r
634                                 may be NULL.  It will be NULL for device\r
635                                 drivers.  It will also be NULL for a bus drivers\r
636                                 that wish to retrieve the name of the bus\r
637                                 controller.  It will not be NULL for a bus\r
638                                 driver that wishes to retrieve the name of a\r
639                                 child controller.\r
640 \r
641   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
642                                 array indicating the language.  This is the\r
643                                 language of the driver name that the caller is\r
644                                 requesting, and it must match one of the\r
645                                 languages specified in SupportedLanguages. The\r
646                                 number of languages supported by a driver is up\r
647                                 to the driver writer. Language is specified in\r
648                                 RFC 3066 or ISO 639-2 language code format.\r
649 \r
650   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
651                                 This Unicode string is the name of the\r
652                                 controller specified by ControllerHandle and\r
653                                 ChildHandle in the language specified by\r
654                                 Language from the point of view of the driver\r
655                                 specified by This.\r
656 \r
657   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
658                                 the language specified by Language for the\r
659                                 driver specified by This was returned in\r
660                                 DriverName.\r
661 \r
662   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
663 \r
664   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
665                                 EFI_HANDLE.\r
666 \r
667   @retval EFI_INVALID_PARAMETER Language is NULL.\r
668 \r
669   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
670 \r
671   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
672                                 managing the controller specified by\r
673                                 ControllerHandle and ChildHandle.\r
674 \r
675   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
676                                 the language specified by Language.\r
677 \r
678 **/\r
679 EFI_STATUS\r
680 EFIAPI\r
681 ConSplitterSimplePointerComponentNameGetControllerName (\r
682   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
683   IN  EFI_HANDLE                                      ControllerHandle,\r
684   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
685   IN  CHAR8                                           *Language,\r
686   OUT CHAR16                                          **ControllerName\r
687   );\r
688 \r
689 EFI_STATUS\r
690 EFIAPI\r
691 ConSplitterAbsolutePointerComponentNameGetControllerName (\r
692   IN  EFI_COMPONENT_NAME_PROTOCOL                    *This,\r
693   IN  EFI_HANDLE                                      ControllerHandle,\r
694   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
695   IN  CHAR8                                           *Language,\r
696   OUT CHAR16                                          **ControllerName\r
697   )\r
698 ;\r
699 \r
700 /**\r
701   Retrieves a Unicode string that is the user readable name of the controller\r
702   that is being managed by a driver.\r
703 \r
704   This function retrieves the user readable name of the controller specified by\r
705   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
706   driver specified by This has a user readable name in the language specified by\r
707   Language, then a pointer to the controller name is returned in ControllerName,\r
708   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
709   managing the controller specified by ControllerHandle and ChildHandle,\r
710   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
711   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
712 \r
713   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
714                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
715 \r
716   @param  ControllerHandle[in]  The handle of a controller that the driver\r
717                                 specified by This is managing.  This handle\r
718                                 specifies the controller whose name is to be\r
719                                 returned.\r
720 \r
721   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
722                                 the name of.  This is an optional parameter that\r
723                                 may be NULL.  It will be NULL for device\r
724                                 drivers.  It will also be NULL for a bus drivers\r
725                                 that wish to retrieve the name of the bus\r
726                                 controller.  It will not be NULL for a bus\r
727                                 driver that wishes to retrieve the name of a\r
728                                 child controller.\r
729 \r
730   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
731                                 array indicating the language.  This is the\r
732                                 language of the driver name that the caller is\r
733                                 requesting, and it must match one of the\r
734                                 languages specified in SupportedLanguages. The\r
735                                 number of languages supported by a driver is up\r
736                                 to the driver writer. Language is specified in\r
737                                 RFC 3066 or ISO 639-2 language code format.\r
738 \r
739   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
740                                 This Unicode string is the name of the\r
741                                 controller specified by ControllerHandle and\r
742                                 ChildHandle in the language specified by\r
743                                 Language from the point of view of the driver\r
744                                 specified by This.\r
745 \r
746   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
747                                 the language specified by Language for the\r
748                                 driver specified by This was returned in\r
749                                 DriverName.\r
750 \r
751   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
752 \r
753   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
754                                 EFI_HANDLE.\r
755 \r
756   @retval EFI_INVALID_PARAMETER Language is NULL.\r
757 \r
758   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
759 \r
760   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
761                                 managing the controller specified by\r
762                                 ControllerHandle and ChildHandle.\r
763 \r
764   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
765                                 the language specified by Language.\r
766 \r
767 **/\r
768 EFI_STATUS\r
769 EFIAPI\r
770 ConSplitterConOutComponentNameGetControllerName (\r
771   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
772   IN  EFI_HANDLE                                      ControllerHandle,\r
773   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
774   IN  CHAR8                                           *Language,\r
775   OUT CHAR16                                          **ControllerName\r
776   );\r
777 \r
778 \r
779 /**\r
780   Retrieves a Unicode string that is the user readable name of the controller\r
781   that is being managed by a driver.\r
782 \r
783   This function retrieves the user readable name of the controller specified by\r
784   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
785   driver specified by This has a user readable name in the language specified by\r
786   Language, then a pointer to the controller name is returned in ControllerName,\r
787   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
788   managing the controller specified by ControllerHandle and ChildHandle,\r
789   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
790   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
791 \r
792   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
793                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
794 \r
795   @param  ControllerHandle[in]  The handle of a controller that the driver\r
796                                 specified by This is managing.  This handle\r
797                                 specifies the controller whose name is to be\r
798                                 returned.\r
799 \r
800   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
801                                 the name of.  This is an optional parameter that\r
802                                 may be NULL.  It will be NULL for device\r
803                                 drivers.  It will also be NULL for a bus drivers\r
804                                 that wish to retrieve the name of the bus\r
805                                 controller.  It will not be NULL for a bus\r
806                                 driver that wishes to retrieve the name of a\r
807                                 child controller.\r
808 \r
809   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
810                                 array indicating the language.  This is the\r
811                                 language of the driver name that the caller is\r
812                                 requesting, and it must match one of the\r
813                                 languages specified in SupportedLanguages. The\r
814                                 number of languages supported by a driver is up\r
815                                 to the driver writer. Language is specified in\r
816                                 RFC 3066 or ISO 639-2 language code format.\r
817 \r
818   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
819                                 This Unicode string is the name of the\r
820                                 controller specified by ControllerHandle and\r
821                                 ChildHandle in the language specified by\r
822                                 Language from the point of view of the driver\r
823                                 specified by This.\r
824 \r
825   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
826                                 the language specified by Language for the\r
827                                 driver specified by This was returned in\r
828                                 DriverName.\r
829 \r
830   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
831 \r
832   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
833                                 EFI_HANDLE.\r
834 \r
835   @retval EFI_INVALID_PARAMETER Language is NULL.\r
836 \r
837   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
838 \r
839   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
840                                 managing the controller specified by\r
841                                 ControllerHandle and ChildHandle.\r
842 \r
843   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
844                                 the language specified by Language.\r
845 \r
846 **/\r
847 EFI_STATUS\r
848 EFIAPI\r
849 ConSplitterStdErrComponentNameGetControllerName (\r
850   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
851   IN  EFI_HANDLE                                      ControllerHandle,\r
852   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
853   IN  CHAR8                                           *Language,\r
854   OUT CHAR16                                          **ControllerName\r
855   );\r
856 \r
857 \r
858 //\r
859 // TextIn Constructor/Destructor functions\r
860 //\r
861 EFI_STATUS\r
862 ConSplitterTextInAddDevice (\r
863   IN  TEXT_IN_SPLITTER_PRIVATE_DATA      *Private,\r
864   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *TextIn\r
865   )\r
866 ;\r
867 \r
868 EFI_STATUS\r
869 ConSplitterTextInDeleteDevice (\r
870   IN  TEXT_IN_SPLITTER_PRIVATE_DATA      *Private,\r
871   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *TextIn\r
872   )\r
873 ;\r
874 \r
875 //\r
876 // SimplePointer Constuctor/Destructor functions\r
877 //\r
878 EFI_STATUS\r
879 ConSplitterSimplePointerAddDevice (\r
880   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
881   IN  EFI_SIMPLE_POINTER_PROTOCOL     *SimplePointer\r
882   )\r
883 ;\r
884 \r
885 EFI_STATUS\r
886 ConSplitterSimplePointerDeleteDevice (\r
887   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
888   IN  EFI_SIMPLE_POINTER_PROTOCOL     *SimplePointer\r
889   )\r
890 ;\r
891 \r
892 //\r
893 // TextOut Constuctor/Destructor functions\r
894 //\r
895 EFI_STATUS\r
896 ConSplitterTextOutAddDevice (\r
897   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA     *Private,\r
898   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *TextOut,\r
899   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL       *GraphicsOutput,\r
900   IN  EFI_UGA_DRAW_PROTOCOL              *UgaDraw\r
901   )\r
902 ;\r
903 \r
904 EFI_STATUS\r
905 ConSplitterTextOutDeleteDevice (\r
906   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA     *Private,\r
907   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *TextOut\r
908   )\r
909 ;\r
910 \r
911 //\r
912 // TextIn I/O Functions\r
913 //\r
914 EFI_STATUS\r
915 EFIAPI\r
916 ConSplitterTextInReset (\r
917   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *This,\r
918   IN  BOOLEAN                            ExtendedVerification\r
919   )\r
920 ;\r
921 \r
922 EFI_STATUS\r
923 EFIAPI\r
924 ConSplitterTextInReadKeyStroke (\r
925   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *This,\r
926   OUT EFI_INPUT_KEY                      *Key\r
927   )\r
928 ;\r
929 EFI_STATUS\r
930 ConSplitterTextInExAddDevice (\r
931   IN  TEXT_IN_SPLITTER_PRIVATE_DATA         *Private,\r
932   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL     *TextInEx\r
933   )\r
934 ;\r
935 \r
936 EFI_STATUS\r
937 ConSplitterTextInExDeleteDevice (\r
938   IN  TEXT_IN_SPLITTER_PRIVATE_DATA         *Private,\r
939   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL     *TextInEx\r
940   )\r
941 ;\r
942 \r
943 //\r
944 // Simple Text Input Ex protocol function prototypes\r
945 //\r
946 \r
947 EFI_STATUS\r
948 EFIAPI\r
949 ConSplitterTextInResetEx (\r
950   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
951   IN BOOLEAN                            ExtendedVerification\r
952   )\r
953 /*++\r
954 \r
955   Routine Description:\r
956     Reset the input device and optionaly run diagnostics\r
957 \r
958   Arguments:\r
959     This                 - Protocol instance pointer.\r
960     ExtendedVerification - Driver may perform diagnostics on reset.\r
961 \r
962   Returns:\r
963     EFI_SUCCESS           - The device was reset.\r
964     EFI_DEVICE_ERROR      - The device is not functioning properly and could\r
965                             not be reset.\r
966 \r
967 --*/\r
968 ;\r
969 \r
970 EFI_STATUS\r
971 EFIAPI\r
972 ConSplitterTextInReadKeyStrokeEx (\r
973   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
974   OUT EFI_KEY_DATA                      *KeyData\r
975   )\r
976 /*++\r
977 \r
978   Routine Description:\r
979     Reads the next keystroke from the input device. The WaitForKey Event can\r
980     be used to test for existance of a keystroke via WaitForEvent () call.\r
981 \r
982   Arguments:\r
983     This       - Protocol instance pointer.\r
984     KeyData    - A pointer to a buffer that is filled in with the keystroke\r
985                  state data for the key that was pressed.\r
986 \r
987   Returns:\r
988     EFI_SUCCESS           - The keystroke information was returned.\r
989     EFI_NOT_READY         - There was no keystroke data availiable.\r
990     EFI_DEVICE_ERROR      - The keystroke information was not returned due to\r
991                             hardware errors.\r
992     EFI_INVALID_PARAMETER - KeyData is NULL.\r
993 \r
994 --*/\r
995 ;\r
996 \r
997 EFI_STATUS\r
998 EFIAPI\r
999 ConSplitterTextInSetState (\r
1000   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
1001   IN EFI_KEY_TOGGLE_STATE               *KeyToggleState\r
1002   )\r
1003 /*++\r
1004 \r
1005   Routine Description:\r
1006     Set certain state for the input device.\r
1007 \r
1008   Arguments:\r
1009     This                  - Protocol instance pointer.\r
1010     KeyToggleState        - A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
1011                             state for the input device.\r
1012 \r
1013   Returns:\r
1014     EFI_SUCCESS           - The device state was set successfully.\r
1015     EFI_DEVICE_ERROR      - The device is not functioning correctly and could\r
1016                             not have the setting adjusted.\r
1017     EFI_UNSUPPORTED       - The device does not have the ability to set its state.\r
1018     EFI_INVALID_PARAMETER - KeyToggleState is NULL.\r
1019 \r
1020 --*/\r
1021 ;\r
1022 \r
1023 EFI_STATUS\r
1024 EFIAPI\r
1025 ConSplitterTextInRegisterKeyNotify (\r
1026   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
1027   IN EFI_KEY_DATA                       *KeyData,\r
1028   IN EFI_KEY_NOTIFY_FUNCTION            KeyNotificationFunction,\r
1029   OUT EFI_HANDLE                        *NotifyHandle\r
1030   )\r
1031 /*++\r
1032 \r
1033   Routine Description:\r
1034     Register a notification function for a particular keystroke for the input device.\r
1035 \r
1036   Arguments:\r
1037     This                    - Protocol instance pointer.\r
1038     KeyData                 - A pointer to a buffer that is filled in with the keystroke\r
1039                               information data for the key that was pressed.\r
1040     KeyNotificationFunction - Points to the function to be called when the key\r
1041                               sequence is typed specified by KeyData.\r
1042     NotifyHandle            - Points to the unique handle assigned to the registered notification.\r
1043 \r
1044   Returns:\r
1045     EFI_SUCCESS             - The notification function was registered successfully.\r
1046     EFI_OUT_OF_RESOURCES    - Unable to allocate resources for necesssary data structures.\r
1047     EFI_INVALID_PARAMETER   - KeyData or NotifyHandle is NULL.\r
1048 \r
1049 --*/\r
1050 ;\r
1051 \r
1052 EFI_STATUS\r
1053 EFIAPI\r
1054 ConSplitterTextInUnregisterKeyNotify (\r
1055   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
1056   IN EFI_HANDLE                         NotificationHandle\r
1057   )\r
1058 /*++\r
1059 \r
1060   Routine Description:\r
1061     Remove a registered notification function from a particular keystroke.\r
1062 \r
1063   Arguments:\r
1064     This                    - Protocol instance pointer.\r
1065     NotificationHandle      - The handle of the notification function being unregistered.\r
1066 \r
1067   Returns:\r
1068     EFI_SUCCESS             - The notification function was unregistered successfully.\r
1069     EFI_INVALID_PARAMETER   - The NotificationHandle is invalid.\r
1070     EFI_NOT_FOUND           - Can not find the matching entry in database.\r
1071 \r
1072 --*/\r
1073 ;\r
1074 VOID\r
1075 EFIAPI\r
1076 ConSplitterTextInWaitForKey (\r
1077   IN  EFI_EVENT                       Event,\r
1078   IN  VOID                            *Context\r
1079   )\r
1080 ;\r
1081 \r
1082 BOOLEAN\r
1083 ConSpliterConssoleControlStdInLocked (\r
1084   VOID\r
1085   )\r
1086 ;\r
1087 \r
1088 VOID\r
1089 EFIAPI\r
1090 ConSpliterConsoleControlLockStdInEvent (\r
1091   IN  EFI_EVENT                       Event,\r
1092   IN  VOID                            *Context\r
1093   )\r
1094 ;\r
1095 \r
1096 EFI_STATUS\r
1097 EFIAPI\r
1098 ConSpliterConsoleControlLockStdIn (\r
1099   IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
1100   IN  CHAR16                          *Password\r
1101   )\r
1102 ;\r
1103 \r
1104 EFI_STATUS\r
1105 EFIAPI\r
1106 ConSplitterTextInPrivateReadKeyStroke (\r
1107   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
1108   OUT EFI_INPUT_KEY                   *Key\r
1109   )\r
1110 ;\r
1111 \r
1112 EFI_STATUS\r
1113 EFIAPI\r
1114 ConSplitterSimplePointerReset (\r
1115   IN  EFI_SIMPLE_POINTER_PROTOCOL     *This,\r
1116   IN  BOOLEAN                         ExtendedVerification\r
1117   )\r
1118 ;\r
1119 \r
1120 EFI_STATUS\r
1121 EFIAPI\r
1122 ConSplitterSimplePointerGetState (\r
1123   IN  EFI_SIMPLE_POINTER_PROTOCOL     *This,\r
1124   IN OUT EFI_SIMPLE_POINTER_STATE     *State\r
1125   )\r
1126 ;\r
1127 \r
1128 VOID\r
1129 EFIAPI\r
1130 ConSplitterSimplePointerWaitForInput (\r
1131   IN  EFI_EVENT                       Event,\r
1132   IN  VOID                            *Context\r
1133   )\r
1134 ;\r
1135 \r
1136 //\r
1137 // TextOut I/O Functions\r
1138 //\r
1139 VOID\r
1140 ConSplitterSynchronizeModeData (\r
1141   TEXT_OUT_SPLITTER_PRIVATE_DATA      *Private\r
1142   )\r
1143 ;\r
1144 \r
1145 EFI_STATUS\r
1146 EFIAPI\r
1147 ConSplitterTextOutReset (\r
1148   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1149   IN  BOOLEAN                            ExtendedVerification\r
1150   )\r
1151 ;\r
1152 \r
1153 EFI_STATUS\r
1154 EFIAPI\r
1155 ConSplitterTextOutOutputString (\r
1156   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1157   IN  CHAR16                             *WString\r
1158   )\r
1159 ;\r
1160 \r
1161 EFI_STATUS\r
1162 EFIAPI\r
1163 ConSplitterTextOutTestString (\r
1164   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1165   IN  CHAR16                             *WString\r
1166   )\r
1167 ;\r
1168 \r
1169 EFI_STATUS\r
1170 EFIAPI\r
1171 ConSplitterTextOutQueryMode (\r
1172   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1173   IN  UINTN                              ModeNumber,\r
1174   OUT UINTN                              *Columns,\r
1175   OUT UINTN                              *Rows\r
1176   )\r
1177 ;\r
1178 \r
1179 EFI_STATUS\r
1180 EFIAPI\r
1181 ConSplitterTextOutSetMode (\r
1182   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1183   IN  UINTN                              ModeNumber\r
1184   )\r
1185 ;\r
1186 \r
1187 EFI_STATUS\r
1188 EFIAPI\r
1189 ConSplitterTextOutSetAttribute (\r
1190   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1191   IN  UINTN                              Attribute\r
1192   )\r
1193 ;\r
1194 \r
1195 EFI_STATUS\r
1196 EFIAPI\r
1197 ConSplitterTextOutClearScreen (\r
1198   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This\r
1199   )\r
1200 ;\r
1201 \r
1202 EFI_STATUS\r
1203 EFIAPI\r
1204 ConSplitterTextOutSetCursorPosition (\r
1205   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1206   IN  UINTN                              Column,\r
1207   IN  UINTN                              Row\r
1208   )\r
1209 ;\r
1210 \r
1211 EFI_STATUS\r
1212 EFIAPI\r
1213 ConSplitterTextOutEnableCursor (\r
1214   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1215   IN  BOOLEAN                            Visible\r
1216   )\r
1217 ;\r
1218 \r
1219 EFI_STATUS\r
1220 ConSplitterGrowBuffer (\r
1221   IN  UINTN                           SizeOfCount,\r
1222   IN  UINTN                           *Count,\r
1223   IN OUT  VOID                        **Buffer\r
1224   )\r
1225 ;\r
1226 \r
1227 EFI_STATUS\r
1228 EFIAPI\r
1229 ConSpliterConsoleControlGetMode (\r
1230   IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
1231   OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
1232   OUT BOOLEAN                         *GopExists,\r
1233   OUT BOOLEAN                         *StdInLocked\r
1234   )\r
1235 ;\r
1236 \r
1237 EFI_STATUS\r
1238 EFIAPI\r
1239 ConSpliterConsoleControlSetMode (\r
1240   IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
1241   IN  EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
1242   )\r
1243 ;\r
1244 \r
1245 EFI_STATUS\r
1246 EFIAPI\r
1247 ConSpliterGraphicsOutputQueryMode (\r
1248   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL        *This,\r
1249   IN  UINT32                            ModeNumber,\r
1250   OUT UINTN                              *SizeOfInfo,\r
1251   OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info\r
1252   )\r
1253 ;\r
1254 \r
1255 EFI_STATUS\r
1256 EFIAPI\r
1257 ConSpliterGraphicsOutputSetMode (\r
1258   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
1259   IN  UINT32                       ModeNumber\r
1260   )\r
1261 ;\r
1262 \r
1263 EFI_STATUS\r
1264 EFIAPI\r
1265 ConSpliterGraphicsOutputBlt (\r
1266   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL                  *This,\r
1267   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL                 *BltBuffer, OPTIONAL\r
1268   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION             BltOperation,\r
1269   IN  UINTN                                         SourceX,\r
1270   IN  UINTN                                         SourceY,\r
1271   IN  UINTN                                         DestinationX,\r
1272   IN  UINTN                                         DestinationY,\r
1273   IN  UINTN                                         Width,\r
1274   IN  UINTN                                         Height,\r
1275   IN  UINTN                                         Delta         OPTIONAL\r
1276   )\r
1277 ;\r
1278 \r
1279 EFI_STATUS\r
1280 DevNullGopSync (\r
1281   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1282   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput,\r
1283   IN  EFI_UGA_DRAW_PROTOCOL           *UgaDraw\r
1284   )\r
1285 ;\r
1286 \r
1287 EFI_STATUS\r
1288 EFIAPI\r
1289 ConSpliterUgaDrawGetMode (\r
1290   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
1291   OUT UINT32                          *HorizontalResolution,\r
1292   OUT UINT32                          *VerticalResolution,\r
1293   OUT UINT32                          *ColorDepth,\r
1294   OUT UINT32                          *RefreshRate\r
1295   )\r
1296 ;\r
1297 \r
1298 EFI_STATUS\r
1299 EFIAPI\r
1300 ConSpliterUgaDrawSetMode (\r
1301   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
1302   IN UINT32                           HorizontalResolution,\r
1303   IN UINT32                           VerticalResolution,\r
1304   IN UINT32                           ColorDepth,\r
1305   IN UINT32                           RefreshRate\r
1306   )\r
1307 ;\r
1308 \r
1309 EFI_STATUS\r
1310 EFIAPI\r
1311 ConSpliterUgaDrawBlt (\r
1312   IN  EFI_UGA_DRAW_PROTOCOL                         *This,\r
1313   IN  EFI_UGA_PIXEL                                 *BltBuffer, OPTIONAL\r
1314   IN  EFI_UGA_BLT_OPERATION                         BltOperation,\r
1315   IN  UINTN                                         SourceX,\r
1316   IN  UINTN                                         SourceY,\r
1317   IN  UINTN                                         DestinationX,\r
1318   IN  UINTN                                         DestinationY,\r
1319   IN  UINTN                                         Width,\r
1320   IN  UINTN                                         Height,\r
1321   IN  UINTN                                         Delta         OPTIONAL\r
1322   )\r
1323 ;\r
1324 \r
1325 EFI_STATUS\r
1326 DevNullUgaSync (\r
1327   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1328   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput,\r
1329   IN  EFI_UGA_DRAW_PROTOCOL           *UgaDraw\r
1330   )\r
1331 ;\r
1332 \r
1333 EFI_STATUS\r
1334 DevNullTextOutOutputString (\r
1335   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1336   IN  CHAR16                          *WString\r
1337   )\r
1338 ;\r
1339 \r
1340 EFI_STATUS\r
1341 DevNullTextOutSetMode (\r
1342   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1343   IN  UINTN                           ModeNumber\r
1344   )\r
1345 ;\r
1346 \r
1347 EFI_STATUS\r
1348 DevNullTextOutClearScreen (\r
1349   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private\r
1350   )\r
1351 ;\r
1352 \r
1353 EFI_STATUS\r
1354 DevNullTextOutSetCursorPosition (\r
1355   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1356   IN  UINTN                           Column,\r
1357   IN  UINTN                           Row\r
1358   )\r
1359 ;\r
1360 \r
1361 EFI_STATUS\r
1362 DevNullTextOutEnableCursor (\r
1363   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1364   IN  BOOLEAN                         Visible\r
1365   )\r
1366 ;\r
1367 \r
1368 EFI_STATUS\r
1369 DevNullSyncStdOut (\r
1370   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private\r
1371   )\r
1372 ;\r
1373 \r
1374 #endif\r