2 Private data structures for the Console Splitter driver
4 Copyright (c) 2006 - 2008 Intel Corporation. <BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #ifndef _CON_SPLITTER_H_
16 #define _CON_SPLITTER_H_
20 #include <Protocol/DevicePath.h>
21 #include <Protocol/ComponentName.h>
22 #include <Protocol/DriverBinding.h>
23 #include <Protocol/ConsoleControl.h>
24 #include <Protocol/SimplePointer.h>
25 #include <Protocol/AbsolutePointer.h>
26 #include <Protocol/SimpleTextOut.h>
27 #include <Protocol/SimpleTextIn.h>
28 #include <Protocol/SimpleTextInEx.h>
29 #include <Protocol/GraphicsOutput.h>
30 #include <Protocol/UgaDraw.h>
31 #include <Protocol/SimpleTextInExNotify.h>
33 #include <Guid/PrimaryStandardErrorDevice.h>
34 #include <Guid/PrimaryConsoleOutDevice.h>
35 #include <Guid/PrimaryConsoleInDevice.h>
36 #include <Guid/GenericPlatformVariable.h>
37 #include <Guid/ConsoleInDevice.h>
38 #include <Guid/StandardErrorDevice.h>
39 #include <Guid/ConsoleOutDevice.h>
41 #include <Library/PcdLib.h>
42 #include <Library/DebugLib.h>
43 #include <Library/UefiDriverEntryPoint.h>
44 #include <Library/UefiLib.h>
45 #include <Library/BaseLib.h>
46 #include <Library/BaseMemoryLib.h>
47 #include <Library/MemoryAllocationLib.h>
48 #include <Library/UefiBootServicesTableLib.h>
49 #include <Library/UefiRuntimeServicesTableLib.h>
53 // Driver Binding Externs
55 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding
;
56 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName
;
57 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2
;
58 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding
;
59 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName
;
60 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2
;
61 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding
;
62 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName
;
63 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2
;
64 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding
;
65 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName
;
66 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2
;
67 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding
;
68 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName
;
69 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2
;
73 // These definitions were in the old Hii protocol, but are not in the new UEFI
74 // version. So they are defined locally.
76 #define UNICODE_NARROW_CHAR 0xFFF0
77 #define UNICODE_WIDE_CHAR 0xFFF1
81 // Private Data Structures
83 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32
84 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32
85 #define MAX_STD_IN_PASSWORD 80
87 #define VARCONOUTMODE L"ConOutMode"
97 } TEXT_OUT_SPLITTER_QUERY_DATA
;
100 #define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'n')
103 // Private data for Text In Ex Splitter Notify
105 typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY
{
107 EFI_HANDLE
*NotifyHandleList
;
108 EFI_HANDLE NotifyHandle
;
109 EFI_KEY_DATA KeyData
;
110 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn
;
111 LIST_ENTRY NotifyEntry
;
112 } TEXT_IN_EX_SPLITTER_NOTIFY
;
114 #define TEXT_IN_EX_SPLITTER_NOTIFY_FROM_THIS(a) \
116 TEXT_IN_EX_SPLITTER_NOTIFY, \
118 TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE \
121 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')
124 // Private data for the Console In splitter
128 EFI_HANDLE VirtualHandle
;
130 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn
;
131 UINTN CurrentNumberOfConsoles
;
132 EFI_SIMPLE_TEXT_INPUT_PROTOCOL
**TextInList
;
133 UINTN TextInListCount
;
135 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx
;
136 UINTN CurrentNumberOfExConsoles
;
137 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
**TextInExList
;
138 UINTN TextInExListCount
;
139 LIST_ENTRY NotifyList
;
142 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer
;
143 EFI_SIMPLE_POINTER_MODE SimplePointerMode
;
144 UINTN CurrentNumberOfPointers
;
145 EFI_SIMPLE_POINTER_PROTOCOL
**PointerList
;
146 UINTN PointerListCount
;
148 EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer
;
149 EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode
;
150 UINTN CurrentNumberOfAbsolutePointers
;
151 EFI_ABSOLUTE_POINTER_PROTOCOL
**AbsolutePointerList
;
152 UINTN AbsolutePointerListCount
;
153 BOOLEAN AbsoluteInputEventSignalState
;
155 BOOLEAN PasswordEnabled
;
156 CHAR16 Password
[MAX_STD_IN_PASSWORD
];
158 CHAR16 PwdAttempt
[MAX_STD_IN_PASSWORD
];
161 BOOLEAN KeyEventSignalState
;
162 BOOLEAN InputEventSignalState
;
163 } TEXT_IN_SPLITTER_PRIVATE_DATA
;
165 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
167 TEXT_IN_SPLITTER_PRIVATE_DATA, \
169 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
172 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
174 TEXT_IN_SPLITTER_PRIVATE_DATA, \
176 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
178 #define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
180 TEXT_IN_SPLITTER_PRIVATE_DATA, \
182 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
185 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \
187 TEXT_IN_SPLITTER_PRIVATE_DATA, \
189 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
193 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'o', 'S', 'p')
196 EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
;
197 EFI_UGA_DRAW_PROTOCOL
*UgaDraw
;
198 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
;
199 BOOLEAN TextOutEnabled
;
200 } TEXT_OUT_AND_GOP_DATA
;
203 // Private data for the Console Out splitter
207 EFI_HANDLE VirtualHandle
;
208 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut
;
209 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode
;
211 EFI_UGA_DRAW_PROTOCOL UgaDraw
;
212 UINT32 UgaHorizontalResolution
;
213 UINT32 UgaVerticalResolution
;
214 UINT32 UgaColorDepth
;
215 UINT32 UgaRefreshRate
;
216 EFI_UGA_PIXEL
*UgaBlt
;
218 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput
;
219 EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*GraphicsOutputBlt
;
220 EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
*GraphicsOutputModeBuffer
;
221 UINTN CurrentNumberOfGraphicsOutput
;
222 UINTN CurrentNumberOfUgaDraw
;
223 BOOLEAN HardwareNeedsStarting
;
225 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl
;
227 UINTN CurrentNumberOfConsoles
;
228 TEXT_OUT_AND_GOP_DATA
*TextOutList
;
229 UINTN TextOutListCount
;
230 TEXT_OUT_SPLITTER_QUERY_DATA
*TextOutQueryData
;
231 UINTN TextOutQueryDataCount
;
232 INT32
*TextOutModeMap
;
234 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode
;
236 UINTN DevNullColumns
;
238 CHAR16
*DevNullScreen
;
239 INT32
*DevNullAttributes
;
241 } TEXT_OUT_SPLITTER_PRIVATE_DATA
;
243 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
245 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
247 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
250 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
252 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
254 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
257 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
259 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
261 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
264 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
266 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
268 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
272 // Function Prototypes
276 The user Entry Point for module ConSplitter. The user code starts with this function.
278 Installs driver module protocols and. Creates virtual device handles for ConIn,
279 ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol,
280 Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers.
281 Installs Graphics Output protocol and/or UGA Draw protocol if needed.
283 @param[in] ImageHandle The firmware allocated handle for the EFI image.
284 @param[in] SystemTable A pointer to the EFI System Table.
286 @retval EFI_SUCCESS The entry point is executed successfully.
287 @retval other Some error occurs when executing this entry point.
292 ConSplitterDriverEntry (
293 IN EFI_HANDLE ImageHandle
,
294 IN EFI_SYSTEM_TABLE
*SystemTable
298 Construct console input devices' private data.
300 @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA
303 @retval EFI_OUT_OF_RESOURCES Out of resources.
304 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.
305 @retval other Failed to construct private data.
309 ConSplitterTextInConstructor (
310 TEXT_IN_SPLITTER_PRIVATE_DATA
*ConInPrivate
314 Construct console output devices' private data.
316 @param ConOutPrivate A pointer to the TEXT_OUT_SPLITTER_PRIVATE_DATA
319 @retval EFI_OUT_OF_RESOURCES Out of resources.
320 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.
324 ConSplitterTextOutConstructor (
325 TEXT_OUT_SPLITTER_PRIVATE_DATA
*ConOutPrivate
330 Test to see if Console In Device could be supported on the Controller.
332 @param This Driver Binding protocol instance pointer.
333 @param ControllerHandle Handle of device to test.
334 @param RemainingDevicePath Optional parameter use to pick a specific child
337 @retval EFI_SUCCESS This driver supports this device.
338 @retval other This driver does not support this device.
343 ConSplitterConInDriverBindingSupported (
344 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
345 IN EFI_HANDLE ControllerHandle
,
346 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
350 Test to see if Simple Pointer protocol could be supported on the Controller.
352 @param This Driver Binding protocol instance pointer.
353 @param ControllerHandle Handle of device to test.
354 @param RemainingDevicePath Optional parameter use to pick a specific child
357 @retval EFI_SUCCESS This driver supports this device.
358 @retval other This driver does not support this device.
363 ConSplitterSimplePointerDriverBindingSupported (
364 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
365 IN EFI_HANDLE ControllerHandle
,
366 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
370 Test to see if Console Out Device could be supported on the Controller.
372 @param This Driver Binding protocol instance pointer.
373 @param ControllerHandle Handle of device to test.
374 @param RemainingDevicePath Optional parameter use to pick a specific child
377 @retval EFI_SUCCESS This driver supports this device.
378 @retval other This driver does not support this device.
383 ConSplitterConOutDriverBindingSupported (
384 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
385 IN EFI_HANDLE ControllerHandle
,
386 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
390 Test to see if Standard Error Device could be supported on the Controller.
392 @param This Driver Binding protocol instance pointer.
393 @param ControllerHandle Handle of device to test.
394 @param RemainingDevicePath Optional parameter use to pick a specific child
397 @retval EFI_SUCCESS This driver supports this device.
398 @retval other This driver does not support this device.
403 ConSplitterStdErrDriverBindingSupported (
404 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
405 IN EFI_HANDLE ControllerHandle
,
406 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
410 Start Console In Consplitter on device handle.
412 @param This Driver Binding protocol instance pointer.
413 @param ControllerHandle Handle of device to bind driver to.
414 @param RemainingDevicePath Optional parameter use to pick a specific child
417 @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle.
418 @retval other Console In Consplitter does not support this device.
423 ConSplitterConInDriverBindingStart (
424 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
425 IN EFI_HANDLE ControllerHandle
,
426 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
430 Start Simple Pointer Consplitter on device handle.
432 @param This Driver Binding protocol instance pointer.
433 @param ControllerHandle Handle of device to bind driver to.
434 @param RemainingDevicePath Optional parameter use to pick a specific child
437 @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle.
438 @retval other Simple Pointer Consplitter does not support this device.
443 ConSplitterSimplePointerDriverBindingStart (
444 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
445 IN EFI_HANDLE ControllerHandle
,
446 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
450 Start Console Out Consplitter on device handle.
452 @param This Driver Binding protocol instance pointer.
453 @param ControllerHandle Handle of device to bind driver to.
454 @param RemainingDevicePath Optional parameter use to pick a specific child
457 @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle.
458 @retval other Console Out Consplitter does not support this device.
463 ConSplitterConOutDriverBindingStart (
464 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
465 IN EFI_HANDLE ControllerHandle
,
466 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
470 Start Standard Error Consplitter on device handle.
472 @param This Driver Binding protocol instance pointer.
473 @param ControllerHandle Handle of device to bind driver to.
474 @param RemainingDevicePath Optional parameter use to pick a specific child
477 @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle.
478 @retval other Standard Error Consplitter does not support this device.
483 ConSplitterStdErrDriverBindingStart (
484 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
485 IN EFI_HANDLE ControllerHandle
,
486 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
490 Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID.
492 @param This Driver Binding protocol instance pointer.
493 @param ControllerHandle Handle of device to stop driver on
494 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
495 children is zero stop the entire bus driver.
496 @param ChildHandleBuffer List of Child Handles to Stop.
498 @retval EFI_SUCCESS This driver is removed ControllerHandle
499 @retval other This driver was not removed from this device
504 ConSplitterConInDriverBindingStop (
505 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
506 IN EFI_HANDLE ControllerHandle
,
507 IN UINTN NumberOfChildren
,
508 IN EFI_HANDLE
*ChildHandleBuffer
512 Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing
513 Simple Pointer protocol.
515 @param This Driver Binding protocol instance pointer.
516 @param ControllerHandle Handle of device to stop driver on
517 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
518 children is zero stop the entire bus driver.
519 @param ChildHandleBuffer List of Child Handles to Stop.
521 @retval EFI_SUCCESS This driver is removed ControllerHandle
522 @retval other This driver was not removed from this device
527 ConSplitterSimplePointerDriverBindingStop (
528 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
529 IN EFI_HANDLE ControllerHandle
,
530 IN UINTN NumberOfChildren
,
531 IN EFI_HANDLE
*ChildHandleBuffer
535 Stop Console Out ConSplitter on device handle by closing Console Out Devcice GUID.
537 @param This Driver Binding protocol instance pointer.
538 @param ControllerHandle Handle of device to stop driver on
539 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
540 children is zero stop the entire bus driver.
541 @param ChildHandleBuffer List of Child Handles to Stop.
543 @retval EFI_SUCCESS This driver is removed ControllerHandle
544 @retval other This driver was not removed from this device
549 ConSplitterConOutDriverBindingStop (
550 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
551 IN EFI_HANDLE ControllerHandle
,
552 IN UINTN NumberOfChildren
,
553 IN EFI_HANDLE
*ChildHandleBuffer
557 Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID.
559 @param This Driver Binding protocol instance pointer.
560 @param ControllerHandle Handle of device to stop driver on
561 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
562 children is zero stop the entire bus driver.
563 @param ChildHandleBuffer List of Child Handles to Stop.
565 @retval EFI_SUCCESS This driver is removed ControllerHandle
566 @retval other This driver was not removed from this device
571 ConSplitterStdErrDriverBindingStop (
572 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
573 IN EFI_HANDLE ControllerHandle
,
574 IN UINTN NumberOfChildren
,
575 IN EFI_HANDLE
*ChildHandleBuffer
580 Test to see if Absolute Pointer protocol could be supported on the Controller.
582 @param This Driver Binding protocol instance pointer.
583 @param ControllerHandle Handle of device to test.
584 @param RemainingDevicePath Optional parameter use to pick a specific child
587 @retval EFI_SUCCESS This driver supports this device.
588 @retval other This driver does not support this device.
593 ConSplitterAbsolutePointerDriverBindingSupported (
594 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
595 IN EFI_HANDLE ControllerHandle
,
596 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
600 Start Absolute Pointer Consplitter on device handle.
602 @param This Driver Binding protocol instance pointer.
603 @param ControllerHandle Handle of device to bind driver to.
604 @param RemainingDevicePath Optional parameter use to pick a specific child
607 @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle.
608 @retval other Absolute Pointer Consplitter does not support this device.
613 ConSplitterAbsolutePointerDriverBindingStart (
614 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
615 IN EFI_HANDLE ControllerHandle
,
616 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
620 Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing
621 Absolute Pointer protocol.
623 @param This Driver Binding protocol instance pointer.
624 @param ControllerHandle Handle of device to stop driver on
625 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
626 children is zero stop the entire bus driver.
627 @param ChildHandleBuffer List of Child Handles to Stop.
629 @retval EFI_SUCCESS This driver is removed ControllerHandle
630 @retval other This driver was not removed from this device
635 ConSplitterAbsolutePointerDriverBindingStop (
636 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
637 IN EFI_HANDLE ControllerHandle
,
638 IN UINTN NumberOfChildren
,
639 IN EFI_HANDLE
*ChildHandleBuffer
643 Add Absolute Pointer Device in Consplitter Absolute Pointer list.
645 @param Private Text In Splitter pointer.
646 @param AbsolutePointer Absolute Pointer protocol pointer.
648 @retval EFI_SUCCESS Absolute Pointer Device added successfully.
649 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
653 ConSplitterAbsolutePointerAddDevice (
654 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
655 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*AbsolutePointer
659 Remove Absolute Pointer Device from Consplitter Absolute Pointer list.
661 @param Private Text In Splitter pointer.
662 @param AbsolutePointer Absolute Pointer protocol pointer.
664 @retval EFI_SUCCESS Absolute Pointer Device removed successfully.
665 @retval EFI_NOT_FOUND No Absolute Pointer Device found.
669 ConSplitterAbsolutePointerDeleteDevice (
670 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
671 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*AbsolutePointer
675 // Absolute Pointer protocol interfaces
680 Resets the pointer device hardware.
682 @param This Protocol instance pointer.
683 @param ExtendedVerification Driver may perform diagnostics on reset.
685 @retval EFI_SUCCESS The device was reset.
686 @retval EFI_DEVICE_ERROR The device is not functioning correctly and
692 ConSplitterAbsolutePointerReset (
693 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*This
,
694 IN BOOLEAN ExtendedVerification
699 Retrieves the current state of a pointer device.
701 @param This Protocol instance pointer.
702 @param State A pointer to the state information on the
705 @retval EFI_SUCCESS The state of the pointer device was returned in
707 @retval EFI_NOT_READY The state of the pointer device has not changed
708 since the last call to GetState().
709 @retval EFI_DEVICE_ERROR A device error occurred while attempting to
710 retrieve the pointer device's current state.
715 ConSplitterAbsolutePointerGetState (
716 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*This
,
717 IN OUT EFI_ABSOLUTE_POINTER_STATE
*State
721 This event agregates all the events of the pointer devices in the splitter.
722 If the ConIn is password locked then return.
723 If any events of physical pointer devices are signaled, signal the pointer
724 splitter event. This will cause the calling code to call
725 ConSplitterAbsolutePointerGetState ().
727 @param Event The Event assoicated with callback.
728 @param Context Context registered when Event was created.
733 ConSplitterAbsolutePointerWaitForInput (
739 Retrieves a Unicode string that is the user readable name of the driver.
741 This function retrieves the user readable name of a driver in the form of a
742 Unicode string. If the driver specified by This has a user readable name in
743 the language specified by Language, then a pointer to the driver name is
744 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
745 by This does not support the language specified by Language,
746 then EFI_UNSUPPORTED is returned.
748 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
749 EFI_COMPONENT_NAME_PROTOCOL instance.
751 @param Language[in] A pointer to a Null-terminated ASCII string
752 array indicating the language. This is the
753 language of the driver name that the caller is
754 requesting, and it must match one of the
755 languages specified in SupportedLanguages. The
756 number of languages supported by a driver is up
757 to the driver writer. Language is specified
758 in RFC 3066 or ISO 639-2 language code format.
760 @param DriverName[out] A pointer to the Unicode string to return.
761 This Unicode string is the name of the
762 driver specified by This in the language
763 specified by Language.
765 @retval EFI_SUCCESS The Unicode string for the Driver specified by
766 This and the language specified by Language was
767 returned in DriverName.
769 @retval EFI_INVALID_PARAMETER Language is NULL.
771 @retval EFI_INVALID_PARAMETER DriverName is NULL.
773 @retval EFI_UNSUPPORTED The driver specified by This does not support
774 the language specified by Language.
779 ConSplitterComponentNameGetDriverName (
780 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
782 OUT CHAR16
**DriverName
787 Retrieves a Unicode string that is the user readable name of the controller
788 that is being managed by a driver.
790 This function retrieves the user readable name of the controller specified by
791 ControllerHandle and ChildHandle in the form of a Unicode string. If the
792 driver specified by This has a user readable name in the language specified by
793 Language, then a pointer to the controller name is returned in ControllerName,
794 and EFI_SUCCESS is returned. If the driver specified by This is not currently
795 managing the controller specified by ControllerHandle and ChildHandle,
796 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
797 support the language specified by Language, then EFI_UNSUPPORTED is returned.
799 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
800 EFI_COMPONENT_NAME_PROTOCOL instance.
802 @param ControllerHandle[in] The handle of a controller that the driver
803 specified by This is managing. This handle
804 specifies the controller whose name is to be
807 @param ChildHandle[in] The handle of the child controller to retrieve
808 the name of. This is an optional parameter that
809 may be NULL. It will be NULL for device
810 drivers. It will also be NULL for a bus drivers
811 that wish to retrieve the name of the bus
812 controller. It will not be NULL for a bus
813 driver that wishes to retrieve the name of a
816 @param Language[in] A pointer to a Null-terminated ASCII string
817 array indicating the language. This is the
818 language of the driver name that the caller is
819 requesting, and it must match one of the
820 languages specified in SupportedLanguages. The
821 number of languages supported by a driver is up
822 to the driver writer. Language is specified in
823 RFC 3066 or ISO 639-2 language code format.
825 @param ControllerName[out] A pointer to the Unicode string to return.
826 This Unicode string is the name of the
827 controller specified by ControllerHandle and
828 ChildHandle in the language specified by
829 Language from the point of view of the driver
832 @retval EFI_SUCCESS The Unicode string for the user readable name in
833 the language specified by Language for the
834 driver specified by This was returned in
837 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
839 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
842 @retval EFI_INVALID_PARAMETER Language is NULL.
844 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
846 @retval EFI_UNSUPPORTED The driver specified by This is not currently
847 managing the controller specified by
848 ControllerHandle and ChildHandle.
850 @retval EFI_UNSUPPORTED The driver specified by This does not support
851 the language specified by Language.
856 ConSplitterConInComponentNameGetControllerName (
857 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
858 IN EFI_HANDLE ControllerHandle
,
859 IN EFI_HANDLE ChildHandle OPTIONAL
,
861 OUT CHAR16
**ControllerName
866 Retrieves a Unicode string that is the user readable name of the controller
867 that is being managed by a driver.
869 This function retrieves the user readable name of the controller specified by
870 ControllerHandle and ChildHandle in the form of a Unicode string. If the
871 driver specified by This has a user readable name in the language specified by
872 Language, then a pointer to the controller name is returned in ControllerName,
873 and EFI_SUCCESS is returned. If the driver specified by This is not currently
874 managing the controller specified by ControllerHandle and ChildHandle,
875 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
876 support the language specified by Language, then EFI_UNSUPPORTED is returned.
878 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
879 EFI_COMPONENT_NAME_PROTOCOL instance.
881 @param ControllerHandle[in] The handle of a controller that the driver
882 specified by This is managing. This handle
883 specifies the controller whose name is to be
886 @param ChildHandle[in] The handle of the child controller to retrieve
887 the name of. This is an optional parameter that
888 may be NULL. It will be NULL for device
889 drivers. It will also be NULL for a bus drivers
890 that wish to retrieve the name of the bus
891 controller. It will not be NULL for a bus
892 driver that wishes to retrieve the name of a
895 @param Language[in] A pointer to a Null-terminated ASCII string
896 array indicating the language. This is the
897 language of the driver name that the caller is
898 requesting, and it must match one of the
899 languages specified in SupportedLanguages. The
900 number of languages supported by a driver is up
901 to the driver writer. Language is specified in
902 RFC 3066 or ISO 639-2 language code format.
904 @param ControllerName[out] A pointer to the Unicode string to return.
905 This Unicode string is the name of the
906 controller specified by ControllerHandle and
907 ChildHandle in the language specified by
908 Language from the point of view of the driver
911 @retval EFI_SUCCESS The Unicode string for the user readable name in
912 the language specified by Language for the
913 driver specified by This was returned in
916 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
918 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
921 @retval EFI_INVALID_PARAMETER Language is NULL.
923 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
925 @retval EFI_UNSUPPORTED The driver specified by This is not currently
926 managing the controller specified by
927 ControllerHandle and ChildHandle.
929 @retval EFI_UNSUPPORTED The driver specified by This does not support
930 the language specified by Language.
935 ConSplitterSimplePointerComponentNameGetControllerName (
936 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
937 IN EFI_HANDLE ControllerHandle
,
938 IN EFI_HANDLE ChildHandle OPTIONAL
,
940 OUT CHAR16
**ControllerName
944 Retrieves a Unicode string that is the user readable name of the controller
945 that is being managed by an EFI Driver.
947 @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL
949 @param ControllerHandle The handle of a controller that the driver
950 specified by This is managing. This handle
951 specifies the controller whose name is to be
953 @param ChildHandle The handle of the child controller to retrieve the
954 name of. This is an optional parameter that may
955 be NULL. It will be NULL for device drivers. It
956 will also be NULL for a bus drivers that wish to
957 retrieve the name of the bus controller. It will
958 not be NULL for a bus driver that wishes to
959 retrieve the name of a child controller.
960 @param Language A pointer to RFC3066 language identifier. This is
961 the language of the controller name that that the
962 caller is requesting, and it must match one of the
963 languages specified in SupportedLanguages. The
964 number of languages supported by a driver is up to
966 @param ControllerName A pointer to the Unicode string to return. This
967 Unicode string is the name of the controller
968 specified by ControllerHandle and ChildHandle in
969 the language specified by Language from the point
970 of view of the driver specified by This.
972 @retval EFI_SUCCESS The Unicode string for the user readable name in
973 the language specified by Language for the driver
974 specified by This was returned in DriverName.
975 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
976 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
978 @retval EFI_INVALID_PARAMETER Language is NULL.
979 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
980 @retval EFI_UNSUPPORTED The driver specified by This is not currently
981 managing the controller specified by
982 ControllerHandle and ChildHandle.
983 @retval EFI_UNSUPPORTED The driver specified by This does not support the
984 language specified by Language.
989 ConSplitterAbsolutePointerComponentNameGetControllerName (
990 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
991 IN EFI_HANDLE ControllerHandle
,
992 IN EFI_HANDLE ChildHandle OPTIONAL
,
994 OUT CHAR16
**ControllerName
998 Retrieves a Unicode string that is the user readable name of the controller
999 that is being managed by a driver.
1001 This function retrieves the user readable name of the controller specified by
1002 ControllerHandle and ChildHandle in the form of a Unicode string. If the
1003 driver specified by This has a user readable name in the language specified by
1004 Language, then a pointer to the controller name is returned in ControllerName,
1005 and EFI_SUCCESS is returned. If the driver specified by This is not currently
1006 managing the controller specified by ControllerHandle and ChildHandle,
1007 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
1008 support the language specified by Language, then EFI_UNSUPPORTED is returned.
1010 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
1011 EFI_COMPONENT_NAME_PROTOCOL instance.
1013 @param ControllerHandle[in] The handle of a controller that the driver
1014 specified by This is managing. This handle
1015 specifies the controller whose name is to be
1018 @param ChildHandle[in] The handle of the child controller to retrieve
1019 the name of. This is an optional parameter that
1020 may be NULL. It will be NULL for device
1021 drivers. It will also be NULL for a bus drivers
1022 that wish to retrieve the name of the bus
1023 controller. It will not be NULL for a bus
1024 driver that wishes to retrieve the name of a
1027 @param Language[in] A pointer to a Null-terminated ASCII string
1028 array indicating the language. This is the
1029 language of the driver name that the caller is
1030 requesting, and it must match one of the
1031 languages specified in SupportedLanguages. The
1032 number of languages supported by a driver is up
1033 to the driver writer. Language is specified in
1034 RFC 3066 or ISO 639-2 language code format.
1036 @param ControllerName[out] A pointer to the Unicode string to return.
1037 This Unicode string is the name of the
1038 controller specified by ControllerHandle and
1039 ChildHandle in the language specified by
1040 Language from the point of view of the driver
1043 @retval EFI_SUCCESS The Unicode string for the user readable name in
1044 the language specified by Language for the
1045 driver specified by This was returned in
1048 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
1050 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1053 @retval EFI_INVALID_PARAMETER Language is NULL.
1055 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1057 @retval EFI_UNSUPPORTED The driver specified by This is not currently
1058 managing the controller specified by
1059 ControllerHandle and ChildHandle.
1061 @retval EFI_UNSUPPORTED The driver specified by This does not support
1062 the language specified by Language.
1067 ConSplitterConOutComponentNameGetControllerName (
1068 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
1069 IN EFI_HANDLE ControllerHandle
,
1070 IN EFI_HANDLE ChildHandle OPTIONAL
,
1072 OUT CHAR16
**ControllerName
1077 Retrieves a Unicode string that is the user readable name of the controller
1078 that is being managed by a driver.
1080 This function retrieves the user readable name of the controller specified by
1081 ControllerHandle and ChildHandle in the form of a Unicode string. If the
1082 driver specified by This has a user readable name in the language specified by
1083 Language, then a pointer to the controller name is returned in ControllerName,
1084 and EFI_SUCCESS is returned. If the driver specified by This is not currently
1085 managing the controller specified by ControllerHandle and ChildHandle,
1086 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
1087 support the language specified by Language, then EFI_UNSUPPORTED is returned.
1089 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
1090 EFI_COMPONENT_NAME_PROTOCOL instance.
1092 @param ControllerHandle[in] The handle of a controller that the driver
1093 specified by This is managing. This handle
1094 specifies the controller whose name is to be
1097 @param ChildHandle[in] The handle of the child controller to retrieve
1098 the name of. This is an optional parameter that
1099 may be NULL. It will be NULL for device
1100 drivers. It will also be NULL for a bus drivers
1101 that wish to retrieve the name of the bus
1102 controller. It will not be NULL for a bus
1103 driver that wishes to retrieve the name of a
1106 @param Language[in] A pointer to a Null-terminated ASCII string
1107 array indicating the language. This is the
1108 language of the driver name that the caller is
1109 requesting, and it must match one of the
1110 languages specified in SupportedLanguages. The
1111 number of languages supported by a driver is up
1112 to the driver writer. Language is specified in
1113 RFC 3066 or ISO 639-2 language code format.
1115 @param ControllerName[out] A pointer to the Unicode string to return.
1116 This Unicode string is the name of the
1117 controller specified by ControllerHandle and
1118 ChildHandle in the language specified by
1119 Language from the point of view of the driver
1122 @retval EFI_SUCCESS The Unicode string for the user readable name in
1123 the language specified by Language for the
1124 driver specified by This was returned in
1127 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
1129 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1132 @retval EFI_INVALID_PARAMETER Language is NULL.
1134 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1136 @retval EFI_UNSUPPORTED The driver specified by This is not currently
1137 managing the controller specified by
1138 ControllerHandle and ChildHandle.
1140 @retval EFI_UNSUPPORTED The driver specified by This does not support
1141 the language specified by Language.
1146 ConSplitterStdErrComponentNameGetControllerName (
1147 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
1148 IN EFI_HANDLE ControllerHandle
,
1149 IN EFI_HANDLE ChildHandle OPTIONAL
,
1151 OUT CHAR16
**ControllerName
1156 // TextIn Constructor/Destructor functions
1160 Add Text Input Device in Consplitter Text Input list.
1162 @param Private Text In Splitter pointer.
1163 @param TextIn Simple Text Input protocol pointer.
1165 @retval EFI_SUCCESS Text Input Device added successfully.
1166 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1170 ConSplitterTextInAddDevice (
1171 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1172 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
1176 Remove Text Input Device from Consplitter Text Input list.
1178 @param Private Text In Splitter pointer.
1179 @param TextIn Simple Text protocol pointer.
1181 @retval EFI_SUCCESS Simple Text Device removed successfully.
1182 @retval EFI_NOT_FOUND No Simple Text Device found.
1186 ConSplitterTextInDeleteDevice (
1187 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1188 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
1192 // SimplePointer Constuctor/Destructor functions
1196 Add Simple Pointer Device in Consplitter Simple Pointer list.
1198 @param Private Text In Splitter pointer.
1199 @param SimplePointer Simple Pointer protocol pointer.
1201 @retval EFI_SUCCESS Simple Pointer Device added successfully.
1202 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1206 ConSplitterSimplePointerAddDevice (
1207 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1208 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
1212 Remove Simple Pointer Device from Consplitter Simple Pointer list.
1214 @param Private Text In Splitter pointer.
1215 @param SimplePointer Simple Pointer protocol pointer.
1217 @retval EFI_SUCCESS Simple Pointer Device removed successfully.
1218 @retval EFI_NOT_FOUND No Simple Pointer Device found.
1222 ConSplitterSimplePointerDeleteDevice (
1223 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1224 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
1228 // TextOut Constuctor/Destructor functions
1232 Add Text Output Device in Consplitter Text Output list.
1234 @param Private Text Out Splitter pointer.
1235 @param TextOut Simple Text Output protocol pointer.
1236 @param GraphicsOutput Graphics Output protocol pointer.
1237 @param UgaDraw UGA Draw protocol pointer.
1239 @retval EFI_SUCCESS Text Output Device added successfully.
1240 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1244 ConSplitterTextOutAddDevice (
1245 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1246 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
,
1247 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
1248 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
1252 Remove Text Out Device in Consplitter Text Out list.
1254 @param Private Text Out Splitter pointer.
1255 @param TextOut Simple Text Output Pointer protocol pointer.
1257 @retval EFI_SUCCESS Text Out Device removed successfully.
1258 @retval EFI_NOT_FOUND No Text Out Device found.
1262 ConSplitterTextOutDeleteDevice (
1263 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1264 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
1268 // TextIn I/O Functions
1272 Reset the input device and optionaly run diagnostics
1274 @param This Protocol instance pointer.
1275 @param ExtendedVerification Driver may perform diagnostics on reset.
1277 @retval EFI_SUCCESS The device was reset.
1278 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1284 ConSplitterTextInReset (
1285 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
1286 IN BOOLEAN ExtendedVerification
1290 Reads the next keystroke from the input device. The WaitForKey Event can
1291 be used to test for existance of a keystroke via WaitForEvent () call.
1292 If the ConIn is password locked make it look like no keystroke is availible
1294 @param This Protocol instance pointer.
1295 @param Key Driver may perform diagnostics on reset.
1297 @retval EFI_SUCCESS The keystroke information was returned.
1298 @retval EFI_NOT_READY There was no keystroke data availiable.
1299 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1305 ConSplitterTextInReadKeyStroke (
1306 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
1307 OUT EFI_INPUT_KEY
*Key
1311 Add Text Input Ex Device in Consplitter Text Input Ex list.
1313 @param Private Text In Splitter pointer.
1314 @param TextInEx Simple Text Input Ex Input protocol pointer.
1316 @retval EFI_SUCCESS Text Input Ex Device added successfully.
1317 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1321 ConSplitterTextInExAddDevice (
1322 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1323 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*TextInEx
1327 Remove Text Ex Device from Consplitter Text Input Ex list.
1329 @param Private Text In Splitter pointer.
1330 @param TextInEx Simple Text Ex protocol pointer.
1332 @retval EFI_SUCCESS Simple Text Input Ex Device removed successfully.
1333 @retval EFI_NOT_FOUND No Simple Text Input Ex Device found.
1337 ConSplitterTextInExDeleteDevice (
1338 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1339 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*TextInEx
1343 // Simple Text Input Ex protocol function prototypes
1347 Reset the input device and optionaly run diagnostics
1349 @param This Protocol instance pointer.
1350 @param ExtendedVerification Driver may perform diagnostics on reset.
1352 @retval EFI_SUCCESS The device was reset.
1353 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1359 ConSplitterTextInResetEx (
1360 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1361 IN BOOLEAN ExtendedVerification
1366 Reads the next keystroke from the input device. The WaitForKey Event can
1367 be used to test for existance of a keystroke via WaitForEvent () call.
1369 @param This Protocol instance pointer.
1370 @param KeyData A pointer to a buffer that is filled in with the
1371 keystroke state data for the key that was
1374 @retval EFI_SUCCESS The keystroke information was returned.
1375 @retval EFI_NOT_READY There was no keystroke data availiable.
1376 @retval EFI_DEVICE_ERROR The keystroke information was not returned due
1378 @retval EFI_INVALID_PARAMETER KeyData is NULL.
1383 ConSplitterTextInReadKeyStrokeEx (
1384 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1385 OUT EFI_KEY_DATA
*KeyData
1390 Set certain state for the input device.
1392 @param This Protocol instance pointer.
1393 @param KeyToggleState A pointer to the EFI_KEY_TOGGLE_STATE to set the
1394 state for the input device.
1396 @retval EFI_SUCCESS The device state was set successfully.
1397 @retval EFI_DEVICE_ERROR The device is not functioning correctly and
1398 could not have the setting adjusted.
1399 @retval EFI_UNSUPPORTED The device does not have the ability to set its
1401 @retval EFI_INVALID_PARAMETER KeyToggleState is NULL.
1406 ConSplitterTextInSetState (
1407 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1408 IN EFI_KEY_TOGGLE_STATE
*KeyToggleState
1413 Register a notification function for a particular keystroke for the input device.
1415 @param This Protocol instance pointer.
1416 @param KeyData A pointer to a buffer that is filled in with the
1417 keystroke information data for the key that was
1419 @param KeyNotificationFunction Points to the function to be called when the key
1420 sequence is typed specified by KeyData.
1421 @param NotifyHandle Points to the unique handle assigned to the
1422 registered notification.
1424 @retval EFI_SUCCESS The notification function was registered
1426 @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data
1428 @retval EFI_INVALID_PARAMETER KeyData or KeyNotificationFunction or NotifyHandle is NULL.
1433 ConSplitterTextInRegisterKeyNotify (
1434 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1435 IN EFI_KEY_DATA
*KeyData
,
1436 IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction
,
1437 OUT EFI_HANDLE
*NotifyHandle
1442 Remove a registered notification function from a particular keystroke.
1444 @param This Protocol instance pointer.
1445 @param NotificationHandle The handle of the notification function being
1448 @retval EFI_SUCCESS The notification function was unregistered
1450 @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid.
1451 @retval EFI_NOT_FOUND Can not find the matching entry in database.
1456 ConSplitterTextInUnregisterKeyNotify (
1457 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1458 IN EFI_HANDLE NotificationHandle
1462 This event aggregates all the events of the ConIn devices in the spliter.
1464 If the ConIn is password locked then return.
1465 If any events of physical ConIn devices are signaled, signal the ConIn
1466 spliter event. This will cause the calling code to call
1467 ConSplitterTextInReadKeyStroke ().
1469 @param Event The Event assoicated with callback.
1470 @param Context Context registered when Event was created.
1475 ConSplitterTextInWaitForKey (
1481 Return TRUE if StdIn is locked. The ConIn device on the virtual handle is
1482 the only device locked.
1484 @retval TRUE StdIn locked
1485 @retval FALSE StdIn working normally
1489 ConSpliterConssoleControlStdInLocked (
1494 Record and check key sequence on StdIn.
1496 This timer event will fire when StdIn is locked. It will record the key sequence
1497 on StdIn and also check to see if it matches the password. Any error in the
1498 password will cause the check to reset. As long as a mConIn.PasswordEnabled is
1499 TRUE, the StdIn splitter will not report any input.
1501 @param Event The Event this notify function registered to.
1502 @param Context Pointer to the context data registerd to the
1507 ConSpliterConsoleControlLockStdInEvent (
1513 If Password is NULL unlock the password state variable and set the event
1514 timer. If the Password is too big return an error. If the Password is valid
1515 Copy the Password and enable state variable and then arm the periodic timer
1517 @param This Console Control protocol pointer.
1518 @param Password The password input.
1520 @retval EFI_SUCCESS Lock the StdIn device
1521 @retval EFI_INVALID_PARAMETER Password is NULL
1522 @retval EFI_OUT_OF_RESOURCES Buffer allocation to store the password fails
1527 ConSpliterConsoleControlLockStdIn (
1528 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1533 Reads the next keystroke from the input device. The WaitForKey Event can
1534 be used to test for existance of a keystroke via WaitForEvent () call.
1536 @param Private Protocol instance pointer.
1537 @param Key Driver may perform diagnostics on reset.
1539 @retval EFI_SUCCESS The keystroke information was returned.
1540 @retval EFI_NOT_READY There was no keystroke data availiable.
1541 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1547 ConSplitterTextInPrivateReadKeyStroke (
1548 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1549 OUT EFI_INPUT_KEY
*Key
1553 Reset the input device and optionaly run diagnostics
1555 @param This Protocol instance pointer.
1556 @param ExtendedVerification Driver may perform diagnostics on reset.
1558 @retval EFI_SUCCESS The device was reset.
1559 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1565 ConSplitterSimplePointerReset (
1566 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
1567 IN BOOLEAN ExtendedVerification
1571 Reads the next keystroke from the input device. The WaitForKey Event can
1572 be used to test for existance of a keystroke via WaitForEvent () call.
1573 If the ConIn is password locked make it look like no keystroke is availible
1575 @param This A pointer to protocol instance.
1576 @param State A pointer to state information on the pointer device
1578 @retval EFI_SUCCESS The keystroke information was returned in State.
1579 @retval EFI_NOT_READY There was no keystroke data availiable.
1580 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1586 ConSplitterSimplePointerGetState (
1587 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
1588 IN OUT EFI_SIMPLE_POINTER_STATE
*State
1592 This event agregates all the events of the ConIn devices in the spliter.
1593 If the ConIn is password locked then return.
1594 If any events of physical ConIn devices are signaled, signal the ConIn
1595 spliter event. This will cause the calling code to call
1596 ConSplitterTextInReadKeyStroke ().
1598 @param Event The Event assoicated with callback.
1599 @param Context Context registered when Event was created.
1604 ConSplitterSimplePointerWaitForInput (
1610 // TextOut I/O Functions
1614 Reset the text output device hardware and optionaly run diagnostics
1616 @param This Protocol instance pointer.
1617 @param ExtendedVerification Driver may perform more exhaustive verfication
1618 operation of the device during reset.
1620 @retval EFI_SUCCESS The text output device was reset.
1621 @retval EFI_DEVICE_ERROR The text output device is not functioning
1622 correctly and could not be reset.
1627 ConSplitterTextOutReset (
1628 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1629 IN BOOLEAN ExtendedVerification
1633 Write a Unicode string to the output device.
1635 @param This Protocol instance pointer.
1636 @param WString The NULL-terminated Unicode string to be
1637 displayed on the output device(s). All output
1638 devices must also support the Unicode drawing
1639 defined in this file.
1641 @retval EFI_SUCCESS The string was output to the device.
1642 @retval EFI_DEVICE_ERROR The device reported an error while attempting to
1644 @retval EFI_UNSUPPORTED The output device's mode is not currently in a
1646 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
1647 characters in the Unicode string could not be
1648 rendered and were skipped.
1653 ConSplitterTextOutOutputString (
1654 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1659 Verifies that all characters in a Unicode string can be output to the
1662 @param This Protocol instance pointer.
1663 @param WString The NULL-terminated Unicode string to be
1664 examined for the output device(s).
1666 @retval EFI_SUCCESS The device(s) are capable of rendering the
1668 @retval EFI_UNSUPPORTED Some of the characters in the Unicode string
1669 cannot be rendered by one or more of the output
1670 devices mapped by the EFI handle.
1675 ConSplitterTextOutTestString (
1676 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1681 Returns information for an available text mode that the output device(s)
1684 @param This Protocol instance pointer.
1685 @param ModeNumber The mode number to return information on.
1686 @param Columns Returns the columns of the text output device
1687 for the requested ModeNumber.
1688 @param Rows Returns the rows of the text output device
1689 for the requested ModeNumber.
1691 @retval EFI_SUCCESS The requested mode information was returned.
1692 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1694 @retval EFI_UNSUPPORTED The mode number was not valid.
1699 ConSplitterTextOutQueryMode (
1700 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1701 IN UINTN ModeNumber
,
1707 Sets the output device(s) to a specified mode.
1709 @param This Protocol instance pointer.
1710 @param ModeNumber The mode number to set.
1712 @retval EFI_SUCCESS The requested text mode was set.
1713 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1715 @retval EFI_UNSUPPORTED The mode number was not valid.
1720 ConSplitterTextOutSetMode (
1721 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1726 Sets the background and foreground colors for the OutputString () and
1727 ClearScreen () functions.
1729 @param This Protocol instance pointer.
1730 @param Attribute The attribute to set. Bits 0..3 are the
1731 foreground color, and bits 4..6 are the
1732 background color. All other bits are undefined
1733 and must be zero. The valid Attributes are
1734 defined in this file.
1736 @retval EFI_SUCCESS The attribute was set.
1737 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1739 @retval EFI_UNSUPPORTED The attribute requested is not defined.
1744 ConSplitterTextOutSetAttribute (
1745 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1750 Clears the output device(s) display to the currently selected background
1753 @param This Protocol instance pointer.
1755 @retval EFI_SUCCESS The operation completed successfully.
1756 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1758 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
1763 ConSplitterTextOutClearScreen (
1764 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
1768 Sets the current coordinates of the cursor position
1770 @param This Protocol instance pointer.
1771 @param Column The column position to set the cursor to. Must be
1772 greater than or equal to zero and less than the
1773 number of columns by QueryMode ().
1774 @param Row The row position to set the cursor to. Must be
1775 greater than or equal to zero and less than the
1776 number of rows by QueryMode ().
1778 @retval EFI_SUCCESS The operation completed successfully.
1779 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1781 @retval EFI_UNSUPPORTED The output device is not in a valid text mode,
1782 or the cursor position is invalid for the
1788 ConSplitterTextOutSetCursorPosition (
1789 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1796 Makes the cursor visible or invisible
1798 @param This Protocol instance pointer.
1799 @param Visible If TRUE, the cursor is set to be visible. If
1800 FALSE, the cursor is set to be invisible.
1802 @retval EFI_SUCCESS The operation completed successfully.
1803 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1804 the request, or the device does not support
1805 changing the cursor mode.
1806 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
1811 ConSplitterTextOutEnableCursor (
1812 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1817 Take the passed in Buffer of size SizeOfCount and grow the buffer
1818 by MAX (CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT, MaxGrow) * SizeOfCount
1819 bytes. Copy the current data in Buffer to the new version of Buffer
1820 and free the old version of buffer.
1822 @param SizeOfCount Size of element in array.
1823 @param Count Current number of elements in array.
1824 @param Buffer Bigger version of passed in Buffer with all the
1827 @retval EFI_SUCCESS Buffer size has grown.
1828 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1832 ConSplitterGrowBuffer (
1833 IN UINTN SizeOfCount
,
1835 IN OUT VOID
**Buffer
1839 Return the current video mode information. Also returns info about existence
1840 of Graphics Output devices or UGA Draw devices in system, and if the Std In device is locked. All the
1841 arguments are optional and only returned if a non NULL pointer is passed in.
1843 @param This Protocol instance pointer.
1844 @param Mode Are we in text of grahics mode.
1845 @param GopUgaExists TRUE if Console Spliter has found a GOP or UGA device
1846 @param StdInLocked TRUE if StdIn device is keyboard locked
1848 @retval EFI_SUCCESS Mode information returned.
1849 @retval EFI_INVALID_PARAMETER Invalid parameters.
1854 ConSpliterConsoleControlGetMode (
1855 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1856 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE
*Mode
,
1857 OUT BOOLEAN
*GopUgaExists
,
1858 OUT BOOLEAN
*StdInLocked
1862 Set the current mode to either text or graphics. Graphics is
1865 @param This Console Control Protocol instance pointer.
1866 @param Mode Mode to set.
1868 @retval EFI_SUCCESS Mode information returned.
1869 @retval EFI_INVALID_PARAMETER Invalid parameter.
1870 @retval EFI_UNSUPPORTED Operation unsupported.
1875 ConSpliterConsoleControlSetMode (
1876 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1877 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
1881 Returns information for an available graphics mode that the graphics device
1882 and the set of active video output devices supports.
1884 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.
1885 @param ModeNumber The mode number to return information on.
1886 @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
1887 @param Info A pointer to callee allocated buffer that returns information about ModeNumber.
1889 @retval EFI_SUCCESS Mode information returned.
1890 @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
1891 @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.
1892 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
1893 @retval EFI_INVALID_PARAMETER One of the input args was NULL.
1894 @retval EFI_OUT_OF_RESOURCES No resource available.
1899 ConSpliterGraphicsOutputQueryMode (
1900 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
1901 IN UINT32 ModeNumber
,
1902 OUT UINTN
*SizeOfInfo
,
1903 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
**Info
1907 Set the video device into the specified mode and clears the visible portions of
1908 the output display to black.
1910 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.
1911 @param ModeNumber Abstraction that defines the current video mode.
1913 @retval EFI_SUCCESS The graphics mode specified by ModeNumber was selected.
1914 @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
1915 @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
1916 @retval EFI_OUT_OF_RESOURCES No resource available.
1921 ConSpliterGraphicsOutputSetMode (
1922 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
* This
,
1923 IN UINT32 ModeNumber
1927 The following table defines actions for BltOperations.
1929 EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)
1930 directly to every pixel of the video display rectangle
1931 (DestinationX, DestinationY)
1932 (DestinationX + Width, DestinationY + Height).
1933 Only one pixel will be used from the BltBuffer. Delta is NOT used.
1934 EfiBltVideoToBltBuffer - Read data from the video display rectangle
1935 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
1936 the BltBuffer rectangle (DestinationX, DestinationY )
1937 (DestinationX + Width, DestinationY + Height). If DestinationX or
1938 DestinationY is not zero then Delta must be set to the length in bytes
1939 of a row in the BltBuffer.
1940 EfiBltBufferToVideo - Write data from the BltBuffer rectangle
1941 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
1942 video display rectangle (DestinationX, DestinationY)
1943 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
1944 not zero then Delta must be set to the length in bytes of a row in the
1946 EfiBltVideoToVideo - Copy from the video display rectangle
1947 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .
1948 to the video display rectangle (DestinationX, DestinationY)
1949 (DestinationX + Width, DestinationY + Height).
1950 The BltBuffer and Delta are not used in this mode.
1952 @param This Protocol instance pointer.
1953 @param BltBuffer Buffer containing data to blit into video buffer.
1954 This buffer has a size of
1955 Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
1956 @param BltOperation Operation to perform on BlitBuffer and video
1958 @param SourceX X coordinate of source for the BltBuffer.
1959 @param SourceY Y coordinate of source for the BltBuffer.
1960 @param DestinationX X coordinate of destination for the BltBuffer.
1961 @param DestinationY Y coordinate of destination for the BltBuffer.
1962 @param Width Width of rectangle in BltBuffer in pixels.
1963 @param Height Hight of rectangle in BltBuffer in pixels.
1964 @param Delta OPTIONAL.
1966 @retval EFI_SUCCESS The Blt operation completed.
1967 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
1968 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video
1974 ConSpliterGraphicsOutputBlt (
1975 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
1976 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
, OPTIONAL
1977 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation
,
1980 IN UINTN DestinationX
,
1981 IN UINTN DestinationY
,
1984 IN UINTN Delta OPTIONAL
1988 Write data from the buffer to video display based on Graphics Output setting.
1990 @param Private Consplitter Text Out pointer.
1991 @param GraphicsOutput Graphics Output protocol pointer.
1992 @param UgaDraw UGA Draw protocol pointer.
1994 @retval EFI_UNSUPPORTED No graphics devcie available .
1995 @retval EFI_SUCCESS The Blt operation completed.
1996 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
1997 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
2003 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2004 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
2005 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
2009 Return the current video mode information.
2011 @param This The EFI_UGA_DRAW_PROTOCOL instance.
2012 @param HorizontalResolution The size of video screen in pixels in the X dimension.
2013 @param VerticalResolution The size of video screen in pixels in the Y dimension.
2014 @param ColorDepth Number of bits per pixel, currently defined to be 32.
2015 @param RefreshRate The refresh rate of the monitor in Hertz.
2017 @retval EFI_SUCCESS Mode information returned.
2018 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
2019 @retval EFI_INVALID_PARAMETER One of the input args was NULL.
2024 ConSpliterUgaDrawGetMode (
2025 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2026 OUT UINT32
*HorizontalResolution
,
2027 OUT UINT32
*VerticalResolution
,
2028 OUT UINT32
*ColorDepth
,
2029 OUT UINT32
*RefreshRate
2033 Set the current video mode information.
2035 @param This The EFI_UGA_DRAW_PROTOCOL instance.
2036 @param HorizontalResolution The size of video screen in pixels in the X dimension.
2037 @param VerticalResolution The size of video screen in pixels in the Y dimension.
2038 @param ColorDepth Number of bits per pixel, currently defined to be 32.
2039 @param RefreshRate The refresh rate of the monitor in Hertz.
2041 @retval EFI_SUCCESS Mode information returned.
2042 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
2043 @retval EFI_OUT_OF_RESOURCES Out of resources.
2048 ConSpliterUgaDrawSetMode (
2049 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2050 IN UINT32 HorizontalResolution
,
2051 IN UINT32 VerticalResolution
,
2052 IN UINT32 ColorDepth
,
2053 IN UINT32 RefreshRate
2057 Blt a rectangle of pixels on the graphics screen.
2059 The following table defines actions for BltOperations.
2062 Write data from the BltBuffer pixel (SourceX, SourceY)
2063 directly to every pixel of the video display rectangle
2064 (DestinationX, DestinationY)
2065 (DestinationX + Width, DestinationY + Height).
2066 Only one pixel will be used from the BltBuffer. Delta is NOT used.
2067 EfiUgaVideoToBltBuffer:
2068 Read data from the video display rectangle
2069 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
2070 the BltBuffer rectangle (DestinationX, DestinationY )
2071 (DestinationX + Width, DestinationY + Height). If DestinationX or
2072 DestinationY is not zero then Delta must be set to the length in bytes
2073 of a row in the BltBuffer.
2074 EfiUgaBltBufferToVideo:
2075 Write data from the BltBuffer rectangle
2076 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
2077 video display rectangle (DestinationX, DestinationY)
2078 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
2079 not zero then Delta must be set to the length in bytes of a row in the
2082 Copy from the video display rectangle
2083 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .
2084 to the video display rectangle (DestinationX, DestinationY)
2085 (DestinationX + Width, DestinationY + Height).
2086 The BltBuffer and Delta are not used in this mode.
2088 @param This Protocol instance pointer.
2089 @param BltBuffer Buffer containing data to blit into video buffer. This
2090 buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)
2091 @param BltOperation Operation to perform on BlitBuffer and video memory
2092 @param SourceX X coordinate of source for the BltBuffer.
2093 @param SourceY Y coordinate of source for the BltBuffer.
2094 @param DestinationX X coordinate of destination for the BltBuffer.
2095 @param DestinationY Y coordinate of destination for the BltBuffer.
2096 @param Width Width of rectangle in BltBuffer in pixels.
2097 @param Height Hight of rectangle in BltBuffer in pixels.
2098 @param Delta OPTIONAL
2100 @retval EFI_SUCCESS The Blt operation completed.
2101 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
2102 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
2107 ConSpliterUgaDrawBlt (
2108 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2109 IN EFI_UGA_PIXEL
*BltBuffer
, OPTIONAL
2110 IN EFI_UGA_BLT_OPERATION BltOperation
,
2113 IN UINTN DestinationX
,
2114 IN UINTN DestinationY
,
2117 IN UINTN Delta OPTIONAL
2121 Write data from the buffer to video display based on UGA Draw setting.
2123 @param Private Consplitter Text Out pointer.
2124 @param GraphicsOutput Graphics Output protocol pointer.
2125 @param UgaDraw UGA Draw protocol pointer.
2127 @retval EFI_UNSUPPORTED No graphics devcie available .
2128 @retval EFI_SUCCESS The Blt operation completed.
2129 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
2130 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
2135 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2136 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
2137 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
2141 Write a Unicode string to the output device.
2143 @param Private Pointer to the console output splitter's private
2144 data. It indicates the calling context.
2145 @param WString The NULL-terminated Unicode string to be
2146 displayed on the output device(s). All output
2147 devices must also support the Unicode drawing
2148 defined in this file.
2150 @retval EFI_SUCCESS The string was output to the device.
2151 @retval EFI_DEVICE_ERROR The device reported an error while attempting to
2153 @retval EFI_UNSUPPORTED The output device's mode is not currently in a
2155 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
2156 characters in the Unicode string could not be
2157 rendered and were skipped.
2161 DevNullTextOutOutputString (
2162 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2167 Sets the output device(s) to a specified mode.
2169 @param Private Text Out Splitter pointer.
2170 @param ModeNumber The mode number to set.
2172 @retval EFI_SUCCESS The requested text mode was set.
2173 @retval EFI_DEVICE_ERROR The device had an error and could not complete
2175 @retval EFI_UNSUPPORTED The mode number was not valid.
2176 @retval EFI_OUT_OF_RESOURCES Out of resources.
2180 DevNullTextOutSetMode (
2181 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2186 Clears the output device(s) display to the currently selected background
2189 @param Private Text Out Splitter pointer.
2191 @retval EFI_SUCCESS The operation completed successfully.
2192 @retval EFI_DEVICE_ERROR The device had an error and could not complete
2194 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
2198 DevNullTextOutClearScreen (
2199 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
2203 Sets the current coordinates of the cursor position on NULL device.
2205 @param Private Text Out Splitter pointer.
2206 @param Column The column position to set the cursor to. Must be
2207 greater than or equal to zero and less than the
2208 number of columns by QueryMode ().
2209 @param Row The row position to set the cursor to. Must be
2210 greater than or equal to zero and less than the
2211 number of rows by QueryMode ().
2213 @retval EFI_SUCCESS Always returned.
2217 DevNullTextOutSetCursorPosition (
2218 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2224 Set cursor visibility property on NULL device.
2226 @param Private Text Out Splitter pointer.
2227 @param Visible If TRUE, the cursor is set to be visible, If
2228 FALSE, the cursor is set to be invisible.
2230 @retval EFI_SUCCESS Always returned.
2234 DevNullTextOutEnableCursor (
2235 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2240 Take the DevNull TextOut device and update the Simple Text Out on every
2243 @param Private Text Out Splitter pointer.
2245 @retval EFI_SUCCESS The request is valid.
2246 @retval other Return status of TextOut->OutputString ()
2251 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private