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>
32 #include <Guid/ConsoleInDevice.h>
33 #include <Guid/StandardErrorDevice.h>
34 #include <Guid/ConsoleOutDevice.h>
36 #include <Library/PcdLib.h>
37 #include <Library/DebugLib.h>
38 #include <Library/UefiDriverEntryPoint.h>
39 #include <Library/UefiLib.h>
40 #include <Library/BaseLib.h>
41 #include <Library/BaseMemoryLib.h>
42 #include <Library/MemoryAllocationLib.h>
43 #include <Library/UefiBootServicesTableLib.h>
44 #include <Library/UefiRuntimeServicesTableLib.h>
48 // Driver Binding Externs
50 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding
;
51 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName
;
52 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2
;
53 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding
;
54 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName
;
55 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2
;
56 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding
;
57 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName
;
58 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2
;
59 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding
;
60 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName
;
61 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2
;
62 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding
;
63 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName
;
64 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2
;
68 // These definitions were in the old Hii protocol, but are not in the new UEFI
69 // version. So they are defined locally.
71 #define UNICODE_NARROW_CHAR 0xFFF0
72 #define UNICODE_WIDE_CHAR 0xFFF1
76 // Private Data Structures
78 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32
79 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32
80 #define MAX_STD_IN_PASSWORD 80
91 } TEXT_OUT_SPLITTER_QUERY_DATA
;
94 #define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'n')
97 // Private data for Text In Ex Splitter Notify
99 typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY
{
101 EFI_HANDLE
*NotifyHandleList
;
102 EFI_HANDLE NotifyHandle
;
103 EFI_KEY_DATA KeyData
;
104 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn
;
105 LIST_ENTRY NotifyEntry
;
106 } TEXT_IN_EX_SPLITTER_NOTIFY
;
108 #define TEXT_IN_EX_SPLITTER_NOTIFY_FROM_THIS(a) \
110 TEXT_IN_EX_SPLITTER_NOTIFY, \
112 TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE \
115 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')
118 // Private data for the Console In splitter
122 EFI_HANDLE VirtualHandle
;
124 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn
;
125 UINTN CurrentNumberOfConsoles
;
126 EFI_SIMPLE_TEXT_INPUT_PROTOCOL
**TextInList
;
127 UINTN TextInListCount
;
129 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx
;
130 UINTN CurrentNumberOfExConsoles
;
131 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
**TextInExList
;
132 UINTN TextInExListCount
;
133 LIST_ENTRY NotifyList
;
136 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer
;
137 EFI_SIMPLE_POINTER_MODE SimplePointerMode
;
138 UINTN CurrentNumberOfPointers
;
139 EFI_SIMPLE_POINTER_PROTOCOL
**PointerList
;
140 UINTN PointerListCount
;
142 EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer
;
143 EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode
;
144 UINTN CurrentNumberOfAbsolutePointers
;
145 EFI_ABSOLUTE_POINTER_PROTOCOL
**AbsolutePointerList
;
146 UINTN AbsolutePointerListCount
;
147 BOOLEAN AbsoluteInputEventSignalState
;
149 BOOLEAN PasswordEnabled
;
150 CHAR16 Password
[MAX_STD_IN_PASSWORD
];
152 CHAR16 PwdAttempt
[MAX_STD_IN_PASSWORD
];
155 BOOLEAN KeyEventSignalState
;
156 BOOLEAN InputEventSignalState
;
157 } TEXT_IN_SPLITTER_PRIVATE_DATA
;
159 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
161 TEXT_IN_SPLITTER_PRIVATE_DATA, \
163 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
166 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
168 TEXT_IN_SPLITTER_PRIVATE_DATA, \
170 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
172 #define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
174 TEXT_IN_SPLITTER_PRIVATE_DATA, \
176 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
179 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \
181 TEXT_IN_SPLITTER_PRIVATE_DATA, \
183 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
187 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'o', 'S', 'p')
190 EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
;
191 EFI_UGA_DRAW_PROTOCOL
*UgaDraw
;
192 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
;
193 BOOLEAN TextOutEnabled
;
194 } TEXT_OUT_AND_GOP_DATA
;
197 // Private data for the Console Out splitter
201 EFI_HANDLE VirtualHandle
;
202 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut
;
203 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode
;
205 EFI_UGA_DRAW_PROTOCOL UgaDraw
;
206 UINT32 UgaHorizontalResolution
;
207 UINT32 UgaVerticalResolution
;
208 UINT32 UgaColorDepth
;
209 UINT32 UgaRefreshRate
;
210 EFI_UGA_PIXEL
*UgaBlt
;
212 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput
;
213 EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*GraphicsOutputBlt
;
214 EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
*GraphicsOutputModeBuffer
;
215 UINTN CurrentNumberOfGraphicsOutput
;
216 UINTN CurrentNumberOfUgaDraw
;
217 BOOLEAN HardwareNeedsStarting
;
219 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl
;
221 UINTN CurrentNumberOfConsoles
;
222 TEXT_OUT_AND_GOP_DATA
*TextOutList
;
223 UINTN TextOutListCount
;
224 TEXT_OUT_SPLITTER_QUERY_DATA
*TextOutQueryData
;
225 UINTN TextOutQueryDataCount
;
226 INT32
*TextOutModeMap
;
228 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode
;
230 UINTN DevNullColumns
;
232 CHAR16
*DevNullScreen
;
233 INT32
*DevNullAttributes
;
235 } TEXT_OUT_SPLITTER_PRIVATE_DATA
;
237 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
239 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
241 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
244 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
246 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
248 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
251 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
253 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
255 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
258 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
260 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
262 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
266 // Function Prototypes
270 The user Entry Point for module ConSplitter. The user code starts with this function.
272 Installs driver module protocols and. Creates virtual device handles for ConIn,
273 ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol,
274 Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers.
275 Installs Graphics Output protocol and/or UGA Draw protocol if needed.
277 @param[in] ImageHandle The firmware allocated handle for the EFI image.
278 @param[in] SystemTable A pointer to the EFI System Table.
280 @retval EFI_SUCCESS The entry point is executed successfully.
281 @retval other Some error occurs when executing this entry point.
286 ConSplitterDriverEntry (
287 IN EFI_HANDLE ImageHandle
,
288 IN EFI_SYSTEM_TABLE
*SystemTable
292 Construct console input devices' private data.
294 @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA
297 @retval EFI_OUT_OF_RESOURCES Out of resources.
298 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.
299 @retval other Failed to construct private data.
303 ConSplitterTextInConstructor (
304 TEXT_IN_SPLITTER_PRIVATE_DATA
*ConInPrivate
308 Construct console output devices' private data.
310 @param ConOutPrivate A pointer to the TEXT_OUT_SPLITTER_PRIVATE_DATA
313 @retval EFI_OUT_OF_RESOURCES Out of resources.
314 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.
318 ConSplitterTextOutConstructor (
319 TEXT_OUT_SPLITTER_PRIVATE_DATA
*ConOutPrivate
324 Test to see if Console In Device could be supported on the Controller.
326 @param This Driver Binding protocol instance pointer.
327 @param ControllerHandle Handle of device to test.
328 @param RemainingDevicePath Optional parameter use to pick a specific child
331 @retval EFI_SUCCESS This driver supports this device.
332 @retval other This driver does not support this device.
337 ConSplitterConInDriverBindingSupported (
338 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
339 IN EFI_HANDLE ControllerHandle
,
340 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
344 Test to see if Simple Pointer protocol could be supported on the Controller.
346 @param This Driver Binding protocol instance pointer.
347 @param ControllerHandle Handle of device to test.
348 @param RemainingDevicePath Optional parameter use to pick a specific child
351 @retval EFI_SUCCESS This driver supports this device.
352 @retval other This driver does not support this device.
357 ConSplitterSimplePointerDriverBindingSupported (
358 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
359 IN EFI_HANDLE ControllerHandle
,
360 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
364 Test to see if Console Out Device could be supported on the Controller.
366 @param This Driver Binding protocol instance pointer.
367 @param ControllerHandle Handle of device to test.
368 @param RemainingDevicePath Optional parameter use to pick a specific child
371 @retval EFI_SUCCESS This driver supports this device.
372 @retval other This driver does not support this device.
377 ConSplitterConOutDriverBindingSupported (
378 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
379 IN EFI_HANDLE ControllerHandle
,
380 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
384 Test to see if Standard Error Device could be supported on the Controller.
386 @param This Driver Binding protocol instance pointer.
387 @param ControllerHandle Handle of device to test.
388 @param RemainingDevicePath Optional parameter use to pick a specific child
391 @retval EFI_SUCCESS This driver supports this device.
392 @retval other This driver does not support this device.
397 ConSplitterStdErrDriverBindingSupported (
398 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
399 IN EFI_HANDLE ControllerHandle
,
400 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
404 Start Console In Consplitter on device handle.
406 @param This Driver Binding protocol instance pointer.
407 @param ControllerHandle Handle of device to bind driver to.
408 @param RemainingDevicePath Optional parameter use to pick a specific child
411 @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle.
412 @retval other Console In Consplitter does not support this device.
417 ConSplitterConInDriverBindingStart (
418 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
419 IN EFI_HANDLE ControllerHandle
,
420 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
424 Start Simple Pointer Consplitter on device handle.
426 @param This Driver Binding protocol instance pointer.
427 @param ControllerHandle Handle of device to bind driver to.
428 @param RemainingDevicePath Optional parameter use to pick a specific child
431 @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle.
432 @retval other Simple Pointer Consplitter does not support this device.
437 ConSplitterSimplePointerDriverBindingStart (
438 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
439 IN EFI_HANDLE ControllerHandle
,
440 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
444 Start Console Out Consplitter on device handle.
446 @param This Driver Binding protocol instance pointer.
447 @param ControllerHandle Handle of device to bind driver to.
448 @param RemainingDevicePath Optional parameter use to pick a specific child
451 @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle.
452 @retval other Console Out Consplitter does not support this device.
457 ConSplitterConOutDriverBindingStart (
458 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
459 IN EFI_HANDLE ControllerHandle
,
460 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
464 Start Standard Error Consplitter on device handle.
466 @param This Driver Binding protocol instance pointer.
467 @param ControllerHandle Handle of device to bind driver to.
468 @param RemainingDevicePath Optional parameter use to pick a specific child
471 @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle.
472 @retval other Standard Error Consplitter does not support this device.
477 ConSplitterStdErrDriverBindingStart (
478 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
479 IN EFI_HANDLE ControllerHandle
,
480 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
484 Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID.
486 @param This Driver Binding protocol instance pointer.
487 @param ControllerHandle Handle of device to stop driver on
488 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
489 children is zero stop the entire bus driver.
490 @param ChildHandleBuffer List of Child Handles to Stop.
492 @retval EFI_SUCCESS This driver is removed ControllerHandle
493 @retval other This driver was not removed from this device
498 ConSplitterConInDriverBindingStop (
499 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
500 IN EFI_HANDLE ControllerHandle
,
501 IN UINTN NumberOfChildren
,
502 IN EFI_HANDLE
*ChildHandleBuffer
506 Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing
507 Simple Pointer protocol.
509 @param This Driver Binding protocol instance pointer.
510 @param ControllerHandle Handle of device to stop driver on
511 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
512 children is zero stop the entire bus driver.
513 @param ChildHandleBuffer List of Child Handles to Stop.
515 @retval EFI_SUCCESS This driver is removed ControllerHandle
516 @retval other This driver was not removed from this device
521 ConSplitterSimplePointerDriverBindingStop (
522 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
523 IN EFI_HANDLE ControllerHandle
,
524 IN UINTN NumberOfChildren
,
525 IN EFI_HANDLE
*ChildHandleBuffer
529 Stop Console Out ConSplitter on device handle by closing Console Out Devcice GUID.
531 @param This Driver Binding protocol instance pointer.
532 @param ControllerHandle Handle of device to stop driver on
533 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
534 children is zero stop the entire bus driver.
535 @param ChildHandleBuffer List of Child Handles to Stop.
537 @retval EFI_SUCCESS This driver is removed ControllerHandle
538 @retval other This driver was not removed from this device
543 ConSplitterConOutDriverBindingStop (
544 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
545 IN EFI_HANDLE ControllerHandle
,
546 IN UINTN NumberOfChildren
,
547 IN EFI_HANDLE
*ChildHandleBuffer
551 Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID.
553 @param This Driver Binding protocol instance pointer.
554 @param ControllerHandle Handle of device to stop driver on
555 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
556 children is zero stop the entire bus driver.
557 @param ChildHandleBuffer List of Child Handles to Stop.
559 @retval EFI_SUCCESS This driver is removed ControllerHandle
560 @retval other This driver was not removed from this device
565 ConSplitterStdErrDriverBindingStop (
566 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
567 IN EFI_HANDLE ControllerHandle
,
568 IN UINTN NumberOfChildren
,
569 IN EFI_HANDLE
*ChildHandleBuffer
574 Test to see if Absolute Pointer protocol could be supported on the Controller.
576 @param This Driver Binding protocol instance pointer.
577 @param ControllerHandle Handle of device to test.
578 @param RemainingDevicePath Optional parameter use to pick a specific child
581 @retval EFI_SUCCESS This driver supports this device.
582 @retval other This driver does not support this device.
587 ConSplitterAbsolutePointerDriverBindingSupported (
588 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
589 IN EFI_HANDLE ControllerHandle
,
590 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
594 Start Absolute Pointer Consplitter on device handle.
596 @param This Driver Binding protocol instance pointer.
597 @param ControllerHandle Handle of device to bind driver to.
598 @param RemainingDevicePath Optional parameter use to pick a specific child
601 @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle.
602 @retval other Absolute Pointer Consplitter does not support this device.
607 ConSplitterAbsolutePointerDriverBindingStart (
608 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
609 IN EFI_HANDLE ControllerHandle
,
610 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
614 Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing
615 Absolute Pointer protocol.
617 @param This Driver Binding protocol instance pointer.
618 @param ControllerHandle Handle of device to stop driver on
619 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
620 children is zero stop the entire bus driver.
621 @param ChildHandleBuffer List of Child Handles to Stop.
623 @retval EFI_SUCCESS This driver is removed ControllerHandle
624 @retval other This driver was not removed from this device
629 ConSplitterAbsolutePointerDriverBindingStop (
630 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
631 IN EFI_HANDLE ControllerHandle
,
632 IN UINTN NumberOfChildren
,
633 IN EFI_HANDLE
*ChildHandleBuffer
637 Add Absolute Pointer Device in Consplitter Absolute Pointer list.
639 @param Private Text In Splitter pointer.
640 @param AbsolutePointer Absolute Pointer protocol pointer.
642 @retval EFI_SUCCESS Absolute Pointer Device added successfully.
643 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
647 ConSplitterAbsolutePointerAddDevice (
648 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
649 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*AbsolutePointer
653 Remove Absolute Pointer Device from Consplitter Absolute Pointer list.
655 @param Private Text In Splitter pointer.
656 @param AbsolutePointer Absolute Pointer protocol pointer.
658 @retval EFI_SUCCESS Absolute Pointer Device removed successfully.
659 @retval EFI_NOT_FOUND No Absolute Pointer Device found.
663 ConSplitterAbsolutePointerDeleteDevice (
664 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
665 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*AbsolutePointer
669 // Absolute Pointer protocol interfaces
674 Resets the pointer device hardware.
676 @param This Protocol instance pointer.
677 @param ExtendedVerification Driver may perform diagnostics on reset.
679 @retval EFI_SUCCESS The device was reset.
680 @retval EFI_DEVICE_ERROR The device is not functioning correctly and
686 ConSplitterAbsolutePointerReset (
687 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*This
,
688 IN BOOLEAN ExtendedVerification
693 Retrieves the current state of a pointer device.
695 @param This Protocol instance pointer.
696 @param State A pointer to the state information on the
699 @retval EFI_SUCCESS The state of the pointer device was returned in
701 @retval EFI_NOT_READY The state of the pointer device has not changed
702 since the last call to GetState().
703 @retval EFI_DEVICE_ERROR A device error occurred while attempting to
704 retrieve the pointer device's current state.
709 ConSplitterAbsolutePointerGetState (
710 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*This
,
711 IN OUT EFI_ABSOLUTE_POINTER_STATE
*State
715 This event agregates all the events of the pointer devices in the splitter.
716 If the ConIn is password locked then return.
717 If any events of physical pointer devices are signaled, signal the pointer
718 splitter event. This will cause the calling code to call
719 ConSplitterAbsolutePointerGetState ().
721 @param Event The Event assoicated with callback.
722 @param Context Context registered when Event was created.
727 ConSplitterAbsolutePointerWaitForInput (
733 Retrieves a Unicode string that is the user readable name of the driver.
735 This function retrieves the user readable name of a driver in the form of a
736 Unicode string. If the driver specified by This has a user readable name in
737 the language specified by Language, then a pointer to the driver name is
738 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
739 by This does not support the language specified by Language,
740 then EFI_UNSUPPORTED is returned.
742 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
743 EFI_COMPONENT_NAME_PROTOCOL instance.
745 @param Language[in] A pointer to a Null-terminated ASCII string
746 array indicating the language. This is the
747 language of the driver name that the caller is
748 requesting, and it must match one of the
749 languages specified in SupportedLanguages. The
750 number of languages supported by a driver is up
751 to the driver writer. Language is specified
752 in RFC 3066 or ISO 639-2 language code format.
754 @param DriverName[out] A pointer to the Unicode string to return.
755 This Unicode string is the name of the
756 driver specified by This in the language
757 specified by Language.
759 @retval EFI_SUCCESS The Unicode string for the Driver specified by
760 This and the language specified by Language was
761 returned in DriverName.
763 @retval EFI_INVALID_PARAMETER Language is NULL.
765 @retval EFI_INVALID_PARAMETER DriverName is NULL.
767 @retval EFI_UNSUPPORTED The driver specified by This does not support
768 the language specified by Language.
773 ConSplitterComponentNameGetDriverName (
774 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
776 OUT CHAR16
**DriverName
781 Retrieves a Unicode string that is the user readable name of the controller
782 that is being managed by a driver.
784 This function retrieves the user readable name of the controller specified by
785 ControllerHandle and ChildHandle in the form of a Unicode string. If the
786 driver specified by This has a user readable name in the language specified by
787 Language, then a pointer to the controller name is returned in ControllerName,
788 and EFI_SUCCESS is returned. If the driver specified by This is not currently
789 managing the controller specified by ControllerHandle and ChildHandle,
790 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
791 support the language specified by Language, then EFI_UNSUPPORTED is returned.
793 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
794 EFI_COMPONENT_NAME_PROTOCOL instance.
796 @param ControllerHandle[in] The handle of a controller that the driver
797 specified by This is managing. This handle
798 specifies the controller whose name is to be
801 @param ChildHandle[in] The handle of the child controller to retrieve
802 the name of. This is an optional parameter that
803 may be NULL. It will be NULL for device
804 drivers. It will also be NULL for a bus drivers
805 that wish to retrieve the name of the bus
806 controller. It will not be NULL for a bus
807 driver that wishes to retrieve the name of a
810 @param Language[in] A pointer to a Null-terminated ASCII string
811 array indicating the language. This is the
812 language of the driver name that the caller is
813 requesting, and it must match one of the
814 languages specified in SupportedLanguages. The
815 number of languages supported by a driver is up
816 to the driver writer. Language is specified in
817 RFC 3066 or ISO 639-2 language code format.
819 @param ControllerName[out] A pointer to the Unicode string to return.
820 This Unicode string is the name of the
821 controller specified by ControllerHandle and
822 ChildHandle in the language specified by
823 Language from the point of view of the driver
826 @retval EFI_SUCCESS The Unicode string for the user readable name in
827 the language specified by Language for the
828 driver specified by This was returned in
831 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
833 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
836 @retval EFI_INVALID_PARAMETER Language is NULL.
838 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
840 @retval EFI_UNSUPPORTED The driver specified by This is not currently
841 managing the controller specified by
842 ControllerHandle and ChildHandle.
844 @retval EFI_UNSUPPORTED The driver specified by This does not support
845 the language specified by Language.
850 ConSplitterConInComponentNameGetControllerName (
851 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
852 IN EFI_HANDLE ControllerHandle
,
853 IN EFI_HANDLE ChildHandle OPTIONAL
,
855 OUT CHAR16
**ControllerName
860 Retrieves a Unicode string that is the user readable name of the controller
861 that is being managed by a driver.
863 This function retrieves the user readable name of the controller specified by
864 ControllerHandle and ChildHandle in the form of a Unicode string. If the
865 driver specified by This has a user readable name in the language specified by
866 Language, then a pointer to the controller name is returned in ControllerName,
867 and EFI_SUCCESS is returned. If the driver specified by This is not currently
868 managing the controller specified by ControllerHandle and ChildHandle,
869 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
870 support the language specified by Language, then EFI_UNSUPPORTED is returned.
872 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
873 EFI_COMPONENT_NAME_PROTOCOL instance.
875 @param ControllerHandle[in] The handle of a controller that the driver
876 specified by This is managing. This handle
877 specifies the controller whose name is to be
880 @param ChildHandle[in] The handle of the child controller to retrieve
881 the name of. This is an optional parameter that
882 may be NULL. It will be NULL for device
883 drivers. It will also be NULL for a bus drivers
884 that wish to retrieve the name of the bus
885 controller. It will not be NULL for a bus
886 driver that wishes to retrieve the name of a
889 @param Language[in] A pointer to a Null-terminated ASCII string
890 array indicating the language. This is the
891 language of the driver name that the caller is
892 requesting, and it must match one of the
893 languages specified in SupportedLanguages. The
894 number of languages supported by a driver is up
895 to the driver writer. Language is specified in
896 RFC 3066 or ISO 639-2 language code format.
898 @param ControllerName[out] A pointer to the Unicode string to return.
899 This Unicode string is the name of the
900 controller specified by ControllerHandle and
901 ChildHandle in the language specified by
902 Language from the point of view of the driver
905 @retval EFI_SUCCESS The Unicode string for the user readable name in
906 the language specified by Language for the
907 driver specified by This was returned in
910 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
912 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
915 @retval EFI_INVALID_PARAMETER Language is NULL.
917 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
919 @retval EFI_UNSUPPORTED The driver specified by This is not currently
920 managing the controller specified by
921 ControllerHandle and ChildHandle.
923 @retval EFI_UNSUPPORTED The driver specified by This does not support
924 the language specified by Language.
929 ConSplitterSimplePointerComponentNameGetControllerName (
930 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
931 IN EFI_HANDLE ControllerHandle
,
932 IN EFI_HANDLE ChildHandle OPTIONAL
,
934 OUT CHAR16
**ControllerName
938 Retrieves a Unicode string that is the user readable name of the controller
939 that is being managed by an EFI Driver.
941 @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL
943 @param ControllerHandle The handle of a controller that the driver
944 specified by This is managing. This handle
945 specifies the controller whose name is to be
947 @param ChildHandle The handle of the child controller to retrieve the
948 name of. This is an optional parameter that may
949 be NULL. It will be NULL for device drivers. It
950 will also be NULL for a bus drivers that wish to
951 retrieve the name of the bus controller. It will
952 not be NULL for a bus driver that wishes to
953 retrieve the name of a child controller.
954 @param Language A pointer to RFC3066 language identifier. This is
955 the language of the controller name that that the
956 caller is requesting, and it must match one of the
957 languages specified in SupportedLanguages. The
958 number of languages supported by a driver is up to
960 @param ControllerName A pointer to the Unicode string to return. This
961 Unicode string is the name of the controller
962 specified by ControllerHandle and ChildHandle in
963 the language specified by Language from the point
964 of view of the driver specified by This.
966 @retval EFI_SUCCESS The Unicode string for the user readable name in
967 the language specified by Language for the driver
968 specified by This was returned in DriverName.
969 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
970 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
972 @retval EFI_INVALID_PARAMETER Language is NULL.
973 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
974 @retval EFI_UNSUPPORTED The driver specified by This is not currently
975 managing the controller specified by
976 ControllerHandle and ChildHandle.
977 @retval EFI_UNSUPPORTED The driver specified by This does not support the
978 language specified by Language.
983 ConSplitterAbsolutePointerComponentNameGetControllerName (
984 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
985 IN EFI_HANDLE ControllerHandle
,
986 IN EFI_HANDLE ChildHandle OPTIONAL
,
988 OUT CHAR16
**ControllerName
992 Retrieves a Unicode string that is the user readable name of the controller
993 that is being managed by a driver.
995 This function retrieves the user readable name of the controller specified by
996 ControllerHandle and ChildHandle in the form of a Unicode string. If the
997 driver specified by This has a user readable name in the language specified by
998 Language, then a pointer to the controller name is returned in ControllerName,
999 and EFI_SUCCESS is returned. If the driver specified by This is not currently
1000 managing the controller specified by ControllerHandle and ChildHandle,
1001 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
1002 support the language specified by Language, then EFI_UNSUPPORTED is returned.
1004 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
1005 EFI_COMPONENT_NAME_PROTOCOL instance.
1007 @param ControllerHandle[in] The handle of a controller that the driver
1008 specified by This is managing. This handle
1009 specifies the controller whose name is to be
1012 @param ChildHandle[in] The handle of the child controller to retrieve
1013 the name of. This is an optional parameter that
1014 may be NULL. It will be NULL for device
1015 drivers. It will also be NULL for a bus drivers
1016 that wish to retrieve the name of the bus
1017 controller. It will not be NULL for a bus
1018 driver that wishes to retrieve the name of a
1021 @param Language[in] A pointer to a Null-terminated ASCII string
1022 array indicating the language. This is the
1023 language of the driver name that the caller is
1024 requesting, and it must match one of the
1025 languages specified in SupportedLanguages. The
1026 number of languages supported by a driver is up
1027 to the driver writer. Language is specified in
1028 RFC 3066 or ISO 639-2 language code format.
1030 @param ControllerName[out] A pointer to the Unicode string to return.
1031 This Unicode string is the name of the
1032 controller specified by ControllerHandle and
1033 ChildHandle in the language specified by
1034 Language from the point of view of the driver
1037 @retval EFI_SUCCESS The Unicode string for the user readable name in
1038 the language specified by Language for the
1039 driver specified by This was returned in
1042 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
1044 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1047 @retval EFI_INVALID_PARAMETER Language is NULL.
1049 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1051 @retval EFI_UNSUPPORTED The driver specified by This is not currently
1052 managing the controller specified by
1053 ControllerHandle and ChildHandle.
1055 @retval EFI_UNSUPPORTED The driver specified by This does not support
1056 the language specified by Language.
1061 ConSplitterConOutComponentNameGetControllerName (
1062 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
1063 IN EFI_HANDLE ControllerHandle
,
1064 IN EFI_HANDLE ChildHandle OPTIONAL
,
1066 OUT CHAR16
**ControllerName
1071 Retrieves a Unicode string that is the user readable name of the controller
1072 that is being managed by a driver.
1074 This function retrieves the user readable name of the controller specified by
1075 ControllerHandle and ChildHandle in the form of a Unicode string. If the
1076 driver specified by This has a user readable name in the language specified by
1077 Language, then a pointer to the controller name is returned in ControllerName,
1078 and EFI_SUCCESS is returned. If the driver specified by This is not currently
1079 managing the controller specified by ControllerHandle and ChildHandle,
1080 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
1081 support the language specified by Language, then EFI_UNSUPPORTED is returned.
1083 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
1084 EFI_COMPONENT_NAME_PROTOCOL instance.
1086 @param ControllerHandle[in] The handle of a controller that the driver
1087 specified by This is managing. This handle
1088 specifies the controller whose name is to be
1091 @param ChildHandle[in] The handle of the child controller to retrieve
1092 the name of. This is an optional parameter that
1093 may be NULL. It will be NULL for device
1094 drivers. It will also be NULL for a bus drivers
1095 that wish to retrieve the name of the bus
1096 controller. It will not be NULL for a bus
1097 driver that wishes to retrieve the name of a
1100 @param Language[in] A pointer to a Null-terminated ASCII string
1101 array indicating the language. This is the
1102 language of the driver name that the caller is
1103 requesting, and it must match one of the
1104 languages specified in SupportedLanguages. The
1105 number of languages supported by a driver is up
1106 to the driver writer. Language is specified in
1107 RFC 3066 or ISO 639-2 language code format.
1109 @param ControllerName[out] A pointer to the Unicode string to return.
1110 This Unicode string is the name of the
1111 controller specified by ControllerHandle and
1112 ChildHandle in the language specified by
1113 Language from the point of view of the driver
1116 @retval EFI_SUCCESS The Unicode string for the user readable name in
1117 the language specified by Language for the
1118 driver specified by This was returned in
1121 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
1123 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1126 @retval EFI_INVALID_PARAMETER Language is NULL.
1128 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1130 @retval EFI_UNSUPPORTED The driver specified by This is not currently
1131 managing the controller specified by
1132 ControllerHandle and ChildHandle.
1134 @retval EFI_UNSUPPORTED The driver specified by This does not support
1135 the language specified by Language.
1140 ConSplitterStdErrComponentNameGetControllerName (
1141 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
1142 IN EFI_HANDLE ControllerHandle
,
1143 IN EFI_HANDLE ChildHandle OPTIONAL
,
1145 OUT CHAR16
**ControllerName
1150 // TextIn Constructor/Destructor functions
1154 Add Text Input Device in Consplitter Text Input list.
1156 @param Private Text In Splitter pointer.
1157 @param TextIn Simple Text Input protocol pointer.
1159 @retval EFI_SUCCESS Text Input Device added successfully.
1160 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1164 ConSplitterTextInAddDevice (
1165 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1166 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
1170 Remove Text Input Device from Consplitter Text Input list.
1172 @param Private Text In Splitter pointer.
1173 @param TextIn Simple Text protocol pointer.
1175 @retval EFI_SUCCESS Simple Text Device removed successfully.
1176 @retval EFI_NOT_FOUND No Simple Text Device found.
1180 ConSplitterTextInDeleteDevice (
1181 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1182 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
1186 // SimplePointer Constuctor/Destructor functions
1190 Add Simple Pointer Device in Consplitter Simple Pointer list.
1192 @param Private Text In Splitter pointer.
1193 @param SimplePointer Simple Pointer protocol pointer.
1195 @retval EFI_SUCCESS Simple Pointer Device added successfully.
1196 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1200 ConSplitterSimplePointerAddDevice (
1201 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1202 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
1206 Remove Simple Pointer Device from Consplitter Simple Pointer list.
1208 @param Private Text In Splitter pointer.
1209 @param SimplePointer Simple Pointer protocol pointer.
1211 @retval EFI_SUCCESS Simple Pointer Device removed successfully.
1212 @retval EFI_NOT_FOUND No Simple Pointer Device found.
1216 ConSplitterSimplePointerDeleteDevice (
1217 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1218 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
1222 // TextOut Constuctor/Destructor functions
1226 Add Text Output Device in Consplitter Text Output list.
1228 @param Private Text Out Splitter pointer.
1229 @param TextOut Simple Text Output protocol pointer.
1230 @param GraphicsOutput Graphics Output protocol pointer.
1231 @param UgaDraw UGA Draw protocol pointer.
1233 @retval EFI_SUCCESS Text Output Device added successfully.
1234 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1238 ConSplitterTextOutAddDevice (
1239 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1240 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
,
1241 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
1242 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
1246 Remove Text Out Device in Consplitter Text Out list.
1248 @param Private Text Out Splitter pointer.
1249 @param TextOut Simple Text Output Pointer protocol pointer.
1251 @retval EFI_SUCCESS Text Out Device removed successfully.
1252 @retval EFI_NOT_FOUND No Text Out Device found.
1256 ConSplitterTextOutDeleteDevice (
1257 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1258 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
1262 // TextIn I/O Functions
1266 Reset the input device and optionaly run diagnostics
1268 @param This Protocol instance pointer.
1269 @param ExtendedVerification Driver may perform diagnostics on reset.
1271 @retval EFI_SUCCESS The device was reset.
1272 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1278 ConSplitterTextInReset (
1279 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
1280 IN BOOLEAN ExtendedVerification
1284 Reads the next keystroke from the input device. The WaitForKey Event can
1285 be used to test for existance of a keystroke via WaitForEvent () call.
1286 If the ConIn is password locked make it look like no keystroke is availible
1288 @param This Protocol instance pointer.
1289 @param Key Driver may perform diagnostics on reset.
1291 @retval EFI_SUCCESS The keystroke information was returned.
1292 @retval EFI_NOT_READY There was no keystroke data availiable.
1293 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1299 ConSplitterTextInReadKeyStroke (
1300 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
1301 OUT EFI_INPUT_KEY
*Key
1305 Add Text Input Ex Device in Consplitter Text Input Ex list.
1307 @param Private Text In Splitter pointer.
1308 @param TextInEx Simple Text Input Ex Input protocol pointer.
1310 @retval EFI_SUCCESS Text Input Ex Device added successfully.
1311 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1315 ConSplitterTextInExAddDevice (
1316 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1317 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*TextInEx
1321 Remove Text Ex Device from Consplitter Text Input Ex list.
1323 @param Private Text In Splitter pointer.
1324 @param TextInEx Simple Text Ex protocol pointer.
1326 @retval EFI_SUCCESS Simple Text Input Ex Device removed successfully.
1327 @retval EFI_NOT_FOUND No Simple Text Input Ex Device found.
1331 ConSplitterTextInExDeleteDevice (
1332 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1333 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*TextInEx
1337 // Simple Text Input Ex protocol function prototypes
1341 Reset the input device and optionaly run diagnostics
1343 @param This Protocol instance pointer.
1344 @param ExtendedVerification Driver may perform diagnostics on reset.
1346 @retval EFI_SUCCESS The device was reset.
1347 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1353 ConSplitterTextInResetEx (
1354 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1355 IN BOOLEAN ExtendedVerification
1360 Reads the next keystroke from the input device. The WaitForKey Event can
1361 be used to test for existance of a keystroke via WaitForEvent () call.
1363 @param This Protocol instance pointer.
1364 @param KeyData A pointer to a buffer that is filled in with the
1365 keystroke state data for the key that was
1368 @retval EFI_SUCCESS The keystroke information was returned.
1369 @retval EFI_NOT_READY There was no keystroke data availiable.
1370 @retval EFI_DEVICE_ERROR The keystroke information was not returned due
1372 @retval EFI_INVALID_PARAMETER KeyData is NULL.
1377 ConSplitterTextInReadKeyStrokeEx (
1378 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1379 OUT EFI_KEY_DATA
*KeyData
1384 Set certain state for the input device.
1386 @param This Protocol instance pointer.
1387 @param KeyToggleState A pointer to the EFI_KEY_TOGGLE_STATE to set the
1388 state for the input device.
1390 @retval EFI_SUCCESS The device state was set successfully.
1391 @retval EFI_DEVICE_ERROR The device is not functioning correctly and
1392 could not have the setting adjusted.
1393 @retval EFI_UNSUPPORTED The device does not have the ability to set its
1395 @retval EFI_INVALID_PARAMETER KeyToggleState is NULL.
1400 ConSplitterTextInSetState (
1401 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1402 IN EFI_KEY_TOGGLE_STATE
*KeyToggleState
1407 Register a notification function for a particular keystroke for the input device.
1409 @param This Protocol instance pointer.
1410 @param KeyData A pointer to a buffer that is filled in with the
1411 keystroke information data for the key that was
1413 @param KeyNotificationFunction Points to the function to be called when the key
1414 sequence is typed specified by KeyData.
1415 @param NotifyHandle Points to the unique handle assigned to the
1416 registered notification.
1418 @retval EFI_SUCCESS The notification function was registered
1420 @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data
1422 @retval EFI_INVALID_PARAMETER KeyData or KeyNotificationFunction or NotifyHandle is NULL.
1427 ConSplitterTextInRegisterKeyNotify (
1428 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1429 IN EFI_KEY_DATA
*KeyData
,
1430 IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction
,
1431 OUT EFI_HANDLE
*NotifyHandle
1436 Remove a registered notification function from a particular keystroke.
1438 @param This Protocol instance pointer.
1439 @param NotificationHandle The handle of the notification function being
1442 @retval EFI_SUCCESS The notification function was unregistered
1444 @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid.
1445 @retval EFI_NOT_FOUND Can not find the matching entry in database.
1450 ConSplitterTextInUnregisterKeyNotify (
1451 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1452 IN EFI_HANDLE NotificationHandle
1456 This event aggregates all the events of the ConIn devices in the spliter.
1458 If the ConIn is password locked then return.
1459 If any events of physical ConIn devices are signaled, signal the ConIn
1460 spliter event. This will cause the calling code to call
1461 ConSplitterTextInReadKeyStroke ().
1463 @param Event The Event assoicated with callback.
1464 @param Context Context registered when Event was created.
1469 ConSplitterTextInWaitForKey (
1475 Return TRUE if StdIn is locked. The ConIn device on the virtual handle is
1476 the only device locked.
1478 @retval TRUE StdIn locked
1479 @retval FALSE StdIn working normally
1483 ConSpliterConssoleControlStdInLocked (
1488 Record and check key sequence on StdIn.
1490 This timer event will fire when StdIn is locked. It will record the key sequence
1491 on StdIn and also check to see if it matches the password. Any error in the
1492 password will cause the check to reset. As long as a mConIn.PasswordEnabled is
1493 TRUE, the StdIn splitter will not report any input.
1495 @param Event The Event this notify function registered to.
1496 @param Context Pointer to the context data registerd to the
1501 ConSpliterConsoleControlLockStdInEvent (
1507 If Password is NULL unlock the password state variable and set the event
1508 timer. If the Password is too big return an error. If the Password is valid
1509 Copy the Password and enable state variable and then arm the periodic timer
1511 @param This Console Control protocol pointer.
1512 @param Password The password input.
1514 @retval EFI_SUCCESS Lock the StdIn device
1515 @retval EFI_INVALID_PARAMETER Password is NULL
1516 @retval EFI_OUT_OF_RESOURCES Buffer allocation to store the password fails
1521 ConSpliterConsoleControlLockStdIn (
1522 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1527 Reads the next keystroke from the input device. The WaitForKey Event can
1528 be used to test for existance of a keystroke via WaitForEvent () call.
1530 @param Private Protocol instance pointer.
1531 @param Key Driver may perform diagnostics on reset.
1533 @retval EFI_SUCCESS The keystroke information was returned.
1534 @retval EFI_NOT_READY There was no keystroke data availiable.
1535 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1541 ConSplitterTextInPrivateReadKeyStroke (
1542 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1543 OUT EFI_INPUT_KEY
*Key
1547 Reset the input device and optionaly run diagnostics
1549 @param This Protocol instance pointer.
1550 @param ExtendedVerification Driver may perform diagnostics on reset.
1552 @retval EFI_SUCCESS The device was reset.
1553 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1559 ConSplitterSimplePointerReset (
1560 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
1561 IN BOOLEAN ExtendedVerification
1565 Reads the next keystroke from the input device. The WaitForKey Event can
1566 be used to test for existance of a keystroke via WaitForEvent () call.
1567 If the ConIn is password locked make it look like no keystroke is availible
1569 @param This A pointer to protocol instance.
1570 @param State A pointer to state information on the pointer device
1572 @retval EFI_SUCCESS The keystroke information was returned in State.
1573 @retval EFI_NOT_READY There was no keystroke data availiable.
1574 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1580 ConSplitterSimplePointerGetState (
1581 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
1582 IN OUT EFI_SIMPLE_POINTER_STATE
*State
1586 This event agregates all the events of the ConIn devices in the spliter.
1587 If the ConIn is password locked then return.
1588 If any events of physical ConIn devices are signaled, signal the ConIn
1589 spliter event. This will cause the calling code to call
1590 ConSplitterTextInReadKeyStroke ().
1592 @param Event The Event assoicated with callback.
1593 @param Context Context registered when Event was created.
1598 ConSplitterSimplePointerWaitForInput (
1604 // TextOut I/O Functions
1608 Reset the text output device hardware and optionaly run diagnostics
1610 @param This Protocol instance pointer.
1611 @param ExtendedVerification Driver may perform more exhaustive verfication
1612 operation of the device during reset.
1614 @retval EFI_SUCCESS The text output device was reset.
1615 @retval EFI_DEVICE_ERROR The text output device is not functioning
1616 correctly and could not be reset.
1621 ConSplitterTextOutReset (
1622 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1623 IN BOOLEAN ExtendedVerification
1627 Write a Unicode string to the output device.
1629 @param This Protocol instance pointer.
1630 @param WString The NULL-terminated Unicode string to be
1631 displayed on the output device(s). All output
1632 devices must also support the Unicode drawing
1633 defined in this file.
1635 @retval EFI_SUCCESS The string was output to the device.
1636 @retval EFI_DEVICE_ERROR The device reported an error while attempting to
1638 @retval EFI_UNSUPPORTED The output device's mode is not currently in a
1640 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
1641 characters in the Unicode string could not be
1642 rendered and were skipped.
1647 ConSplitterTextOutOutputString (
1648 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1653 Verifies that all characters in a Unicode string can be output to the
1656 @param This Protocol instance pointer.
1657 @param WString The NULL-terminated Unicode string to be
1658 examined for the output device(s).
1660 @retval EFI_SUCCESS The device(s) are capable of rendering the
1662 @retval EFI_UNSUPPORTED Some of the characters in the Unicode string
1663 cannot be rendered by one or more of the output
1664 devices mapped by the EFI handle.
1669 ConSplitterTextOutTestString (
1670 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1675 Returns information for an available text mode that the output device(s)
1678 @param This Protocol instance pointer.
1679 @param ModeNumber The mode number to return information on.
1680 @param Columns Returns the columns of the text output device
1681 for the requested ModeNumber.
1682 @param Rows Returns the rows of the text output device
1683 for the requested ModeNumber.
1685 @retval EFI_SUCCESS The requested mode information was returned.
1686 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1688 @retval EFI_UNSUPPORTED The mode number was not valid.
1693 ConSplitterTextOutQueryMode (
1694 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1695 IN UINTN ModeNumber
,
1701 Sets the output device(s) to a specified mode.
1703 @param This Protocol instance pointer.
1704 @param ModeNumber The mode number to set.
1706 @retval EFI_SUCCESS The requested text mode was set.
1707 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1709 @retval EFI_UNSUPPORTED The mode number was not valid.
1714 ConSplitterTextOutSetMode (
1715 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1720 Sets the background and foreground colors for the OutputString () and
1721 ClearScreen () functions.
1723 @param This Protocol instance pointer.
1724 @param Attribute The attribute to set. Bits 0..3 are the
1725 foreground color, and bits 4..6 are the
1726 background color. All other bits are undefined
1727 and must be zero. The valid Attributes are
1728 defined in this file.
1730 @retval EFI_SUCCESS The attribute was set.
1731 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1733 @retval EFI_UNSUPPORTED The attribute requested is not defined.
1738 ConSplitterTextOutSetAttribute (
1739 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1744 Clears the output device(s) display to the currently selected background
1747 @param This Protocol instance pointer.
1749 @retval EFI_SUCCESS The operation completed successfully.
1750 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1752 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
1757 ConSplitterTextOutClearScreen (
1758 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
1762 Sets the current coordinates of the cursor position
1764 @param This Protocol instance pointer.
1765 @param Column The column position to set the cursor to. Must be
1766 greater than or equal to zero and less than the
1767 number of columns by QueryMode ().
1768 @param Row The row position to set the cursor to. Must be
1769 greater than or equal to zero and less than the
1770 number of rows by QueryMode ().
1772 @retval EFI_SUCCESS The operation completed successfully.
1773 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1775 @retval EFI_UNSUPPORTED The output device is not in a valid text mode,
1776 or the cursor position is invalid for the
1782 ConSplitterTextOutSetCursorPosition (
1783 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1790 Makes the cursor visible or invisible
1792 @param This Protocol instance pointer.
1793 @param Visible If TRUE, the cursor is set to be visible. If
1794 FALSE, the cursor is set to be invisible.
1796 @retval EFI_SUCCESS The operation completed successfully.
1797 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1798 the request, or the device does not support
1799 changing the cursor mode.
1800 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
1805 ConSplitterTextOutEnableCursor (
1806 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1811 Take the passed in Buffer of size SizeOfCount and grow the buffer
1812 by MAX (CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT, MaxGrow) * SizeOfCount
1813 bytes. Copy the current data in Buffer to the new version of Buffer
1814 and free the old version of buffer.
1816 @param SizeOfCount Size of element in array.
1817 @param Count Current number of elements in array.
1818 @param Buffer Bigger version of passed in Buffer with all the
1821 @retval EFI_SUCCESS Buffer size has grown.
1822 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1826 ConSplitterGrowBuffer (
1827 IN UINTN SizeOfCount
,
1829 IN OUT VOID
**Buffer
1833 Return the current video mode information. Also returns info about existence
1834 of Graphics Output devices or UGA Draw devices in system, and if the Std In device is locked. All the
1835 arguments are optional and only returned if a non NULL pointer is passed in.
1837 @param This Protocol instance pointer.
1838 @param Mode Are we in text of grahics mode.
1839 @param GopUgaExists TRUE if Console Spliter has found a GOP or UGA device
1840 @param StdInLocked TRUE if StdIn device is keyboard locked
1842 @retval EFI_SUCCESS Mode information returned.
1843 @retval EFI_INVALID_PARAMETER Invalid parameters.
1848 ConSpliterConsoleControlGetMode (
1849 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1850 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE
*Mode
,
1851 OUT BOOLEAN
*GopUgaExists
,
1852 OUT BOOLEAN
*StdInLocked
1856 Set the current mode to either text or graphics. Graphics is
1859 @param This Console Control Protocol instance pointer.
1860 @param Mode Mode to set.
1862 @retval EFI_SUCCESS Mode information returned.
1863 @retval EFI_INVALID_PARAMETER Invalid parameter.
1864 @retval EFI_UNSUPPORTED Operation unsupported.
1869 ConSpliterConsoleControlSetMode (
1870 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1871 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
1875 Returns information for an available graphics mode that the graphics device
1876 and the set of active video output devices supports.
1878 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.
1879 @param ModeNumber The mode number to return information on.
1880 @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
1881 @param Info A pointer to callee allocated buffer that returns information about ModeNumber.
1883 @retval EFI_SUCCESS Mode information returned.
1884 @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
1885 @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.
1886 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
1887 @retval EFI_INVALID_PARAMETER One of the input args was NULL.
1888 @retval EFI_OUT_OF_RESOURCES No resource available.
1893 ConSpliterGraphicsOutputQueryMode (
1894 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
1895 IN UINT32 ModeNumber
,
1896 OUT UINTN
*SizeOfInfo
,
1897 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
**Info
1901 Set the video device into the specified mode and clears the visible portions of
1902 the output display to black.
1904 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.
1905 @param ModeNumber Abstraction that defines the current video mode.
1907 @retval EFI_SUCCESS The graphics mode specified by ModeNumber was selected.
1908 @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
1909 @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
1910 @retval EFI_OUT_OF_RESOURCES No resource available.
1915 ConSpliterGraphicsOutputSetMode (
1916 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
* This
,
1917 IN UINT32 ModeNumber
1921 The following table defines actions for BltOperations.
1923 EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)
1924 directly to every pixel of the video display rectangle
1925 (DestinationX, DestinationY)
1926 (DestinationX + Width, DestinationY + Height).
1927 Only one pixel will be used from the BltBuffer. Delta is NOT used.
1928 EfiBltVideoToBltBuffer - Read data from the video display rectangle
1929 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
1930 the BltBuffer rectangle (DestinationX, DestinationY )
1931 (DestinationX + Width, DestinationY + Height). If DestinationX or
1932 DestinationY is not zero then Delta must be set to the length in bytes
1933 of a row in the BltBuffer.
1934 EfiBltBufferToVideo - Write data from the BltBuffer rectangle
1935 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
1936 video display rectangle (DestinationX, DestinationY)
1937 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
1938 not zero then Delta must be set to the length in bytes of a row in the
1940 EfiBltVideoToVideo - Copy from the video display rectangle
1941 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .
1942 to the video display rectangle (DestinationX, DestinationY)
1943 (DestinationX + Width, DestinationY + Height).
1944 The BltBuffer and Delta are not used in this mode.
1946 @param This Protocol instance pointer.
1947 @param BltBuffer Buffer containing data to blit into video buffer.
1948 This buffer has a size of
1949 Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
1950 @param BltOperation Operation to perform on BlitBuffer and video
1952 @param SourceX X coordinate of source for the BltBuffer.
1953 @param SourceY Y coordinate of source for the BltBuffer.
1954 @param DestinationX X coordinate of destination for the BltBuffer.
1955 @param DestinationY Y coordinate of destination for the BltBuffer.
1956 @param Width Width of rectangle in BltBuffer in pixels.
1957 @param Height Hight of rectangle in BltBuffer in pixels.
1958 @param Delta OPTIONAL.
1960 @retval EFI_SUCCESS The Blt operation completed.
1961 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
1962 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video
1968 ConSpliterGraphicsOutputBlt (
1969 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
1970 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
, OPTIONAL
1971 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation
,
1974 IN UINTN DestinationX
,
1975 IN UINTN DestinationY
,
1978 IN UINTN Delta OPTIONAL
1982 Write data from the buffer to video display based on Graphics Output setting.
1984 @param Private Consplitter Text Out pointer.
1985 @param GraphicsOutput Graphics Output protocol pointer.
1986 @param UgaDraw UGA Draw protocol pointer.
1988 @retval EFI_UNSUPPORTED No graphics devcie available .
1989 @retval EFI_SUCCESS The Blt operation completed.
1990 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
1991 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
1997 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1998 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
1999 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
2003 Return the current video mode information.
2005 @param This The EFI_UGA_DRAW_PROTOCOL instance.
2006 @param HorizontalResolution The size of video screen in pixels in the X dimension.
2007 @param VerticalResolution The size of video screen in pixels in the Y dimension.
2008 @param ColorDepth Number of bits per pixel, currently defined to be 32.
2009 @param RefreshRate The refresh rate of the monitor in Hertz.
2011 @retval EFI_SUCCESS Mode information returned.
2012 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
2013 @retval EFI_INVALID_PARAMETER One of the input args was NULL.
2018 ConSpliterUgaDrawGetMode (
2019 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2020 OUT UINT32
*HorizontalResolution
,
2021 OUT UINT32
*VerticalResolution
,
2022 OUT UINT32
*ColorDepth
,
2023 OUT UINT32
*RefreshRate
2027 Set the current video mode information.
2029 @param This The EFI_UGA_DRAW_PROTOCOL instance.
2030 @param HorizontalResolution The size of video screen in pixels in the X dimension.
2031 @param VerticalResolution The size of video screen in pixels in the Y dimension.
2032 @param ColorDepth Number of bits per pixel, currently defined to be 32.
2033 @param RefreshRate The refresh rate of the monitor in Hertz.
2035 @retval EFI_SUCCESS Mode information returned.
2036 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
2037 @retval EFI_OUT_OF_RESOURCES Out of resources.
2042 ConSpliterUgaDrawSetMode (
2043 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2044 IN UINT32 HorizontalResolution
,
2045 IN UINT32 VerticalResolution
,
2046 IN UINT32 ColorDepth
,
2047 IN UINT32 RefreshRate
2051 Blt a rectangle of pixels on the graphics screen.
2053 The following table defines actions for BltOperations.
2056 Write data from the BltBuffer pixel (SourceX, SourceY)
2057 directly to every pixel of the video display rectangle
2058 (DestinationX, DestinationY)
2059 (DestinationX + Width, DestinationY + Height).
2060 Only one pixel will be used from the BltBuffer. Delta is NOT used.
2061 EfiUgaVideoToBltBuffer:
2062 Read data from the video display rectangle
2063 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
2064 the BltBuffer rectangle (DestinationX, DestinationY )
2065 (DestinationX + Width, DestinationY + Height). If DestinationX or
2066 DestinationY is not zero then Delta must be set to the length in bytes
2067 of a row in the BltBuffer.
2068 EfiUgaBltBufferToVideo:
2069 Write data from the BltBuffer rectangle
2070 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
2071 video display rectangle (DestinationX, DestinationY)
2072 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
2073 not zero then Delta must be set to the length in bytes of a row in the
2076 Copy from the video display rectangle
2077 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .
2078 to the video display rectangle (DestinationX, DestinationY)
2079 (DestinationX + Width, DestinationY + Height).
2080 The BltBuffer and Delta are not used in this mode.
2082 @param This Protocol instance pointer.
2083 @param BltBuffer Buffer containing data to blit into video buffer. This
2084 buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)
2085 @param BltOperation Operation to perform on BlitBuffer and video memory
2086 @param SourceX X coordinate of source for the BltBuffer.
2087 @param SourceY Y coordinate of source for the BltBuffer.
2088 @param DestinationX X coordinate of destination for the BltBuffer.
2089 @param DestinationY Y coordinate of destination for the BltBuffer.
2090 @param Width Width of rectangle in BltBuffer in pixels.
2091 @param Height Hight of rectangle in BltBuffer in pixels.
2092 @param Delta OPTIONAL
2094 @retval EFI_SUCCESS The Blt operation completed.
2095 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
2096 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
2101 ConSpliterUgaDrawBlt (
2102 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2103 IN EFI_UGA_PIXEL
*BltBuffer
, OPTIONAL
2104 IN EFI_UGA_BLT_OPERATION BltOperation
,
2107 IN UINTN DestinationX
,
2108 IN UINTN DestinationY
,
2111 IN UINTN Delta OPTIONAL
2115 Write data from the buffer to video display based on UGA Draw setting.
2117 @param Private Consplitter Text Out pointer.
2118 @param GraphicsOutput Graphics Output protocol pointer.
2119 @param UgaDraw UGA Draw protocol pointer.
2121 @retval EFI_UNSUPPORTED No graphics devcie available .
2122 @retval EFI_SUCCESS The Blt operation completed.
2123 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
2124 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
2129 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2130 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
2131 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
2135 Write a Unicode string to the output device.
2137 @param Private Pointer to the console output splitter's private
2138 data. It indicates the calling context.
2139 @param WString The NULL-terminated Unicode string to be
2140 displayed on the output device(s). All output
2141 devices must also support the Unicode drawing
2142 defined in this file.
2144 @retval EFI_SUCCESS The string was output to the device.
2145 @retval EFI_DEVICE_ERROR The device reported an error while attempting to
2147 @retval EFI_UNSUPPORTED The output device's mode is not currently in a
2149 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
2150 characters in the Unicode string could not be
2151 rendered and were skipped.
2155 DevNullTextOutOutputString (
2156 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2161 Sets the output device(s) to a specified mode.
2163 @param Private Text Out Splitter pointer.
2164 @param ModeNumber The mode number to set.
2166 @retval EFI_SUCCESS The requested text mode was set.
2167 @retval EFI_DEVICE_ERROR The device had an error and could not complete
2169 @retval EFI_UNSUPPORTED The mode number was not valid.
2170 @retval EFI_OUT_OF_RESOURCES Out of resources.
2174 DevNullTextOutSetMode (
2175 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2180 Clears the output device(s) display to the currently selected background
2183 @param Private Text Out Splitter pointer.
2185 @retval EFI_SUCCESS The operation completed successfully.
2186 @retval EFI_DEVICE_ERROR The device had an error and could not complete
2188 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
2192 DevNullTextOutClearScreen (
2193 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
2197 Sets the current coordinates of the cursor position on NULL device.
2199 @param Private Text Out Splitter pointer.
2200 @param Column The column position to set the cursor to. Must be
2201 greater than or equal to zero and less than the
2202 number of columns by QueryMode ().
2203 @param Row The row position to set the cursor to. Must be
2204 greater than or equal to zero and less than the
2205 number of rows by QueryMode ().
2207 @retval EFI_SUCCESS Always returned.
2211 DevNullTextOutSetCursorPosition (
2212 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2218 Set cursor visibility property on NULL device.
2220 @param Private Text Out Splitter pointer.
2221 @param Visible If TRUE, the cursor is set to be visible, If
2222 FALSE, the cursor is set to be invisible.
2224 @retval EFI_SUCCESS Always returned.
2228 DevNullTextOutEnableCursor (
2229 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2234 Take the DevNull TextOut device and update the Simple Text Out on every
2237 @param Private Text Out Splitter pointer.
2239 @retval EFI_SUCCESS The request is valid.
2240 @retval other Return status of TextOut->OutputString ()
2245 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private