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