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_
19 #include <Guid/PrimaryStandardErrorDevice.h>
20 #include <Guid/PrimaryConsoleOutDevice.h>
21 #include <Protocol/GraphicsOutput.h>
22 #include <Guid/PrimaryConsoleInDevice.h>
23 #include <Guid/GenericPlatformVariable.h>
24 #include <Protocol/SimplePointer.h>
25 #include <Protocol/AbsolutePointer.h>
26 #include <Protocol/SimpleTextOut.h>
27 #include <Guid/ConsoleInDevice.h>
28 #include <Protocol/SimpleTextIn.h>
29 #include <Protocol/SimpleTextInEx.h>
30 #include <Protocol/ConsoleControl.h>
31 #include <Guid/StandardErrorDevice.h>
32 #include <Guid/ConsoleOutDevice.h>
33 #include <Protocol/UgaDraw.h>
34 #include <Library/PcdLib.h>
35 #include <Library/DebugLib.h>
36 #include <Library/UefiDriverEntryPoint.h>
37 #include <Library/UefiLib.h>
38 #include <Library/BaseLib.h>
39 #include <Library/BaseMemoryLib.h>
40 #include <Library/MemoryAllocationLib.h>
41 #include <Library/UefiBootServicesTableLib.h>
42 #include <Library/UefiRuntimeServicesTableLib.h>
46 // Driver Binding Externs
48 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding
;
49 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName
;
50 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2
;
51 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding
;
52 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName
;
53 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2
;
54 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding
;
55 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName
;
56 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2
;
57 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding
;
58 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName
;
59 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2
;
60 extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding
;
61 extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName
;
62 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2
;
64 extern EFI_GUID gSimpleTextInExNotifyGuid
;
66 // These definitions were in the old Hii protocol, but are not in the new UEFI
67 // version. So they are defined locally.
68 #define UNICODE_NARROW_CHAR 0xFFF0
69 #define UNICODE_WIDE_CHAR 0xFFF1
73 // Private Data Structures
75 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32
76 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32
77 #define MAX_STD_IN_PASSWORD 80
79 #define VARCONOUTMODE L"ConOutMode"
89 } TEXT_OUT_SPLITTER_QUERY_DATA
;
92 // Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter
94 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')
96 #define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'n')
98 typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY
{
100 EFI_HANDLE
*NotifyHandleList
;
101 EFI_HANDLE NotifyHandle
;
102 EFI_KEY_DATA KeyData
;
103 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn
;
104 LIST_ENTRY NotifyEntry
;
105 } TEXT_IN_EX_SPLITTER_NOTIFY
;
109 EFI_HANDLE VirtualHandle
;
111 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn
;
112 UINTN CurrentNumberOfConsoles
;
113 EFI_SIMPLE_TEXT_INPUT_PROTOCOL
**TextInList
;
114 UINTN TextInListCount
;
116 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx
;
117 UINTN CurrentNumberOfExConsoles
;
118 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
**TextInExList
;
119 UINTN TextInExListCount
;
120 LIST_ENTRY NotifyList
;
123 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer
;
124 EFI_SIMPLE_POINTER_MODE SimplePointerMode
;
125 UINTN CurrentNumberOfPointers
;
126 EFI_SIMPLE_POINTER_PROTOCOL
**PointerList
;
127 UINTN PointerListCount
;
129 EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer
;
130 EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode
;
131 UINTN CurrentNumberOfAbsolutePointers
;
132 EFI_ABSOLUTE_POINTER_PROTOCOL
**AbsolutePointerList
;
133 UINTN AbsolutePointerListCount
;
134 BOOLEAN AbsoluteInputEventSignalState
;
136 BOOLEAN PasswordEnabled
;
137 CHAR16 Password
[MAX_STD_IN_PASSWORD
];
139 CHAR16 PwdAttempt
[MAX_STD_IN_PASSWORD
];
142 BOOLEAN KeyEventSignalState
;
143 BOOLEAN InputEventSignalState
;
144 } TEXT_IN_SPLITTER_PRIVATE_DATA
;
146 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
148 TEXT_IN_SPLITTER_PRIVATE_DATA, \
150 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
153 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
155 TEXT_IN_SPLITTER_PRIVATE_DATA, \
157 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
159 #define TEXT_IN_EX_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_ABSOLUTE_POINTER_THIS(a) \
168 TEXT_IN_SPLITTER_PRIVATE_DATA, \
170 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
174 // Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter
176 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')
179 EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
;
180 EFI_UGA_DRAW_PROTOCOL
*UgaDraw
;
181 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
;
182 BOOLEAN TextOutEnabled
;
183 } TEXT_OUT_AND_GOP_DATA
;
187 EFI_HANDLE VirtualHandle
;
188 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut
;
189 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode
;
191 EFI_UGA_DRAW_PROTOCOL UgaDraw
;
192 UINT32 UgaHorizontalResolution
;
193 UINT32 UgaVerticalResolution
;
194 UINT32 UgaColorDepth
;
195 UINT32 UgaRefreshRate
;
196 EFI_UGA_PIXEL
*UgaBlt
;
198 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput
;
199 EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*GraphicsOutputBlt
;
200 EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
*GraphicsOutputModeBuffer
;
201 UINTN CurrentNumberOfGraphicsOutput
;
202 UINTN CurrentNumberOfUgaDraw
;
203 BOOLEAN HardwareNeedsStarting
;
205 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl
;
207 UINTN CurrentNumberOfConsoles
;
208 TEXT_OUT_AND_GOP_DATA
*TextOutList
;
209 UINTN TextOutListCount
;
210 TEXT_OUT_SPLITTER_QUERY_DATA
*TextOutQueryData
;
211 UINTN TextOutQueryDataCount
;
212 INT32
*TextOutModeMap
;
214 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode
;
216 UINTN DevNullColumns
;
218 CHAR16
*DevNullScreen
;
219 INT32
*DevNullAttributes
;
221 } TEXT_OUT_SPLITTER_PRIVATE_DATA
;
223 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
225 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
227 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
230 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
232 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
234 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
237 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
239 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
241 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
244 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
246 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
248 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
252 // Function Prototypes
256 The user Entry Point for module ConSplitter. The user code starts with this function.
258 Installs driver module protocols and. Creates virtual device handles for ConIn,
259 ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol,
260 Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers.
261 Installs Graphics Output protocol and/or UGA Draw protocol if needed.
263 @param[in] ImageHandle The firmware allocated handle for the EFI image.
264 @param[in] SystemTable A pointer to the EFI System Table.
266 @retval EFI_SUCCESS The entry point is executed successfully.
267 @retval other Some error occurs when executing this entry point.
272 ConSplitterDriverEntry (
273 IN EFI_HANDLE ImageHandle
,
274 IN EFI_SYSTEM_TABLE
*SystemTable
278 Construct console input devices' private data.
280 @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA
283 @retval EFI_OUT_OF_RESOURCES Out of resources.
284 @retval EFI_SUCCESS Console Input Devcie's private data has been constructed.
285 @retval other Failed to construct private data.
289 ConSplitterTextInConstructor (
290 TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
294 Construct console output devices' private data.
296 @param ConOutPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA
299 @retval EFI_OUT_OF_RESOURCES Out of resources.
300 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.
304 ConSplitterTextOutConstructor (
305 TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
309 // Driver Binding Functions
313 Test to see if Console In Device could be supported on the ControllerHandle.
315 @param This Protocol instance pointer.
316 @param ControllerHandle Handle of device to test.
317 @param RemainingDevicePath Optional parameter use to pick a specific child
320 @retval EFI_SUCCESS This driver supports this device.
321 @retval other This driver does not support this device.
326 ConSplitterConInDriverBindingSupported (
327 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
328 IN EFI_HANDLE ControllerHandle
,
329 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
333 Test to see if Simple Pointer protocol could be supported on the ControllerHandle.
335 @param This Protocol instance pointer.
336 @param ControllerHandle Handle of device to test.
337 @param RemainingDevicePath Optional parameter use to pick a specific child
340 @retval EFI_SUCCESS This driver supports this device.
341 @retval other This driver does not support this device.
346 ConSplitterSimplePointerDriverBindingSupported (
347 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
348 IN EFI_HANDLE ControllerHandle
,
349 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
353 Test to see if Console Out Device could be supported on the ControllerHandle.
355 @param This Protocol instance pointer.
356 @param ControllerHandle Handle of device to test.
357 @param RemainingDevicePath Optional parameter use to pick a specific child
360 @retval EFI_SUCCESS This driver supports this device.
361 @retval other This driver does not support this device.
366 ConSplitterConOutDriverBindingSupported (
367 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
368 IN EFI_HANDLE ControllerHandle
,
369 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
373 Test to see if Standard Error Device could be supported on the ControllerHandle.
375 @param This Protocol instance pointer.
376 @param ControllerHandle Handle of device to test.
377 @param RemainingDevicePath Optional parameter use to pick a specific child
380 @retval EFI_SUCCESS This driver supports this device.
381 @retval other This driver does not support this device.
386 ConSplitterStdErrDriverBindingSupported (
387 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
388 IN EFI_HANDLE ControllerHandle
,
389 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
393 Start Console In Consplitter on device handle.
395 @param This Protocol instance pointer.
396 @param ControllerHandle Handle of device to bind driver to.
397 @param RemainingDevicePath Optional parameter use to pick a specific child
400 @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle.
401 @retval other Console In Consplitter does not support this device.
406 ConSplitterConInDriverBindingStart (
407 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
408 IN EFI_HANDLE ControllerHandle
,
409 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
413 Start Simple Pointer Consplitter on device handle.
415 @param This Protocol instance pointer.
416 @param ControllerHandle Handle of device to bind driver to.
417 @param RemainingDevicePath Optional parameter use to pick a specific child
420 @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle.
421 @retval other Simple Pointer Consplitter does not support this device.
426 ConSplitterSimplePointerDriverBindingStart (
427 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
428 IN EFI_HANDLE ControllerHandle
,
429 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
433 Start Console Out Consplitter on device handle.
435 @param This Protocol instance pointer.
436 @param ControllerHandle Handle of device to bind driver to.
437 @param RemainingDevicePath Optional parameter use to pick a specific child
440 @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle.
441 @retval other Console Out Consplitter does not support this device.
446 ConSplitterConOutDriverBindingStart (
447 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
448 IN EFI_HANDLE ControllerHandle
,
449 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
453 Start Standard Error Consplitter on device handle.
455 @param This Protocol instance pointer.
456 @param ControllerHandle Handle of device to bind driver to.
457 @param RemainingDevicePath Optional parameter use to pick a specific child
460 @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle.
461 @retval other Standard Error Consplitter does not support this device.
466 ConSplitterStdErrDriverBindingStart (
467 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
468 IN EFI_HANDLE ControllerHandle
,
469 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
473 Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID.
475 @param This Protocol instance pointer.
476 @param ControllerHandle Handle of device to stop driver on
477 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
478 children is zero stop the entire bus driver.
479 @param ChildHandleBuffer List of Child Handles to Stop.
481 @retval EFI_SUCCESS This driver is removed ControllerHandle
482 @retval other This driver was not removed from this device
487 ConSplitterConInDriverBindingStop (
488 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
489 IN EFI_HANDLE ControllerHandle
,
490 IN UINTN NumberOfChildren
,
491 IN EFI_HANDLE
*ChildHandleBuffer
495 Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing
496 Simple Pointer protocol.
498 @param This Protocol instance pointer.
499 @param ControllerHandle Handle of device to stop driver on
500 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
501 children is zero stop the entire bus driver.
502 @param ChildHandleBuffer List of Child Handles to Stop.
504 @retval EFI_SUCCESS This driver is removed ControllerHandle
505 @retval other This driver was not removed from this device
510 ConSplitterSimplePointerDriverBindingStop (
511 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
512 IN EFI_HANDLE ControllerHandle
,
513 IN UINTN NumberOfChildren
,
514 IN EFI_HANDLE
*ChildHandleBuffer
518 Stop Console Out ConSplitter on ControllerHandle by closing Console Out Devcice GUID.
520 @param This Protocol instance pointer.
521 @param ControllerHandle Handle of device to stop driver on
522 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
523 children is zero stop the entire bus driver.
524 @param ChildHandleBuffer List of Child Handles to Stop.
526 @retval EFI_SUCCESS This driver is removed ControllerHandle
527 @retval other This driver was not removed from this device
532 ConSplitterConOutDriverBindingStop (
533 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
534 IN EFI_HANDLE ControllerHandle
,
535 IN UINTN NumberOfChildren
,
536 IN EFI_HANDLE
*ChildHandleBuffer
540 Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID.
542 @param This Protocol instance pointer.
543 @param ControllerHandle Handle of device to stop driver on
544 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
545 children is zero stop the entire bus driver.
546 @param ChildHandleBuffer List of Child Handles to Stop.
548 @retval EFI_SUCCESS This driver is removed ControllerHandle
549 @retval other This driver was not removed from this device
554 ConSplitterStdErrDriverBindingStop (
555 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
556 IN EFI_HANDLE ControllerHandle
,
557 IN UINTN NumberOfChildren
,
558 IN EFI_HANDLE
*ChildHandleBuffer
563 Test to see if Absolute Pointer protocol could be supported on the ControllerHandle.
565 @param This Protocol instance pointer.
566 @param ControllerHandle Handle of device to test.
567 @param RemainingDevicePath Optional parameter use to pick a specific child
570 @retval EFI_SUCCESS This driver supports this device.
571 @retval other This driver does not support this device.
576 ConSplitterAbsolutePointerDriverBindingSupported (
577 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
578 IN EFI_HANDLE ControllerHandle
,
579 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
583 Start Absolute Pointer Consplitter on device handle.
585 @param This Protocol instance pointer.
586 @param ControllerHandle Handle of device to bind driver to.
587 @param RemainingDevicePath Optional parameter use to pick a specific child
590 @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle.
591 @retval other Absolute Pointer Consplitter does not support this device.
596 ConSplitterAbsolutePointerDriverBindingStart (
597 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
598 IN EFI_HANDLE ControllerHandle
,
599 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
603 Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing
604 Absolute Pointer protocol.
606 @param This Protocol instance pointer.
607 @param ControllerHandle Handle of device to stop driver on
608 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
609 children is zero stop the entire bus driver.
610 @param ChildHandleBuffer List of Child Handles to Stop.
612 @retval EFI_SUCCESS This driver is removed ControllerHandle
613 @retval other This driver was not removed from this device
618 ConSplitterAbsolutePointerDriverBindingStop (
619 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
620 IN EFI_HANDLE ControllerHandle
,
621 IN UINTN NumberOfChildren
,
622 IN EFI_HANDLE
*ChildHandleBuffer
626 Add Absolute Pointer Device in Consplitter Absolute Pointer list.
628 @param Private Text In Splitter pointer.
629 @param AbsolutePointer Absolute Pointer protocol pointer.
631 @retval EFI_SUCCESS Absolute Pointer Device added successfully.
632 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
636 ConSplitterAbsolutePointerAddDevice (
637 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
638 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*AbsolutePointer
642 Remove Absolute Pointer Device in Consplitter Absolute Pointer list.
644 @param Private Text In Splitter pointer.
645 @param AbsolutePointer Absolute Pointer protocol pointer.
647 @retval EFI_SUCCESS Absolute Pointer Device removed successfully.
648 @retval EFI_NOT_FOUND No Absolute Pointer Device found.
652 ConSplitterAbsolutePointerDeleteDevice (
653 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
654 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*AbsolutePointer
658 // Absolute Pointer protocol interfaces
663 Resets the pointer device hardware.
665 @param This Protocol instance pointer.
666 @param ExtendedVerification Driver may perform diagnostics on reset.
668 @retval EFI_SUCCESS The device was reset.
669 @retval EFI_DEVICE_ERROR The device is not functioning correctly and
675 ConSplitterAbsolutePointerReset (
676 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*This
,
677 IN BOOLEAN ExtendedVerification
682 Retrieves the current state of a pointer device.
684 @param This Protocol instance pointer.
685 @param State A pointer to the state information on the
688 @retval EFI_SUCCESS The state of the pointer device was returned in
690 @retval EFI_NOT_READY The state of the pointer device has not changed
691 since the last call to GetState().
692 @retval EFI_DEVICE_ERROR A device error occurred while attempting to
693 retrieve the pointer device's current state.
698 ConSplitterAbsolutePointerGetState (
699 IN EFI_ABSOLUTE_POINTER_PROTOCOL
*This
,
700 IN OUT EFI_ABSOLUTE_POINTER_STATE
*State
704 This event agregates all the events of the pointer devices in the splitter.
705 If the ConIn is password locked then return.
706 If any events of physical pointer devices are signaled, signal the pointer
707 splitter event. This will cause the calling code to call
708 ConSplitterAbsolutePointerGetState ().
710 @param Event The Event assoicated with callback.
711 @param Context Context registered when Event was created.
718 ConSplitterAbsolutePointerWaitForInput (
724 Retrieves a Unicode string that is the user readable name of the driver.
726 This function retrieves the user readable name of a driver in the form of a
727 Unicode string. If the driver specified by This has a user readable name in
728 the language specified by Language, then a pointer to the driver name is
729 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
730 by This does not support the language specified by Language,
731 then EFI_UNSUPPORTED is returned.
733 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
734 EFI_COMPONENT_NAME_PROTOCOL instance.
736 @param Language[in] A pointer to a Null-terminated ASCII string
737 array indicating the language. This is the
738 language of the driver name that the caller is
739 requesting, and it must match one of the
740 languages specified in SupportedLanguages. The
741 number of languages supported by a driver is up
742 to the driver writer. Language is specified
743 in RFC 3066 or ISO 639-2 language code format.
745 @param DriverName[out] A pointer to the Unicode string to return.
746 This Unicode string is the name of the
747 driver specified by This in the language
748 specified by Language.
750 @retval EFI_SUCCESS The Unicode string for the Driver specified by
751 This and the language specified by Language was
752 returned in DriverName.
754 @retval EFI_INVALID_PARAMETER Language is NULL.
756 @retval EFI_INVALID_PARAMETER DriverName is NULL.
758 @retval EFI_UNSUPPORTED The driver specified by This does not support
759 the language specified by Language.
764 ConSplitterComponentNameGetDriverName (
765 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
767 OUT CHAR16
**DriverName
772 Retrieves a Unicode string that is the user readable name of the controller
773 that is being managed by a driver.
775 This function retrieves the user readable name of the controller specified by
776 ControllerHandle and ChildHandle in the form of a Unicode string. If the
777 driver specified by This has a user readable name in the language specified by
778 Language, then a pointer to the controller name is returned in ControllerName,
779 and EFI_SUCCESS is returned. If the driver specified by This is not currently
780 managing the controller specified by ControllerHandle and ChildHandle,
781 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
782 support the language specified by Language, then EFI_UNSUPPORTED is returned.
784 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
785 EFI_COMPONENT_NAME_PROTOCOL instance.
787 @param ControllerHandle[in] The handle of a controller that the driver
788 specified by This is managing. This handle
789 specifies the controller whose name is to be
792 @param ChildHandle[in] The handle of the child controller to retrieve
793 the name of. This is an optional parameter that
794 may be NULL. It will be NULL for device
795 drivers. It will also be NULL for a bus drivers
796 that wish to retrieve the name of the bus
797 controller. It will not be NULL for a bus
798 driver that wishes to retrieve the name of a
801 @param Language[in] A pointer to a Null-terminated ASCII string
802 array indicating the language. This is the
803 language of the driver name that the caller is
804 requesting, and it must match one of the
805 languages specified in SupportedLanguages. The
806 number of languages supported by a driver is up
807 to the driver writer. Language is specified in
808 RFC 3066 or ISO 639-2 language code format.
810 @param ControllerName[out] A pointer to the Unicode string to return.
811 This Unicode string is the name of the
812 controller specified by ControllerHandle and
813 ChildHandle in the language specified by
814 Language from the point of view of the driver
817 @retval EFI_SUCCESS The Unicode string for the user readable name in
818 the language specified by Language for the
819 driver specified by This was returned in
822 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
824 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
827 @retval EFI_INVALID_PARAMETER Language is NULL.
829 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
831 @retval EFI_UNSUPPORTED The driver specified by This is not currently
832 managing the controller specified by
833 ControllerHandle and ChildHandle.
835 @retval EFI_UNSUPPORTED The driver specified by This does not support
836 the language specified by Language.
841 ConSplitterConInComponentNameGetControllerName (
842 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
843 IN EFI_HANDLE ControllerHandle
,
844 IN EFI_HANDLE ChildHandle OPTIONAL
,
846 OUT CHAR16
**ControllerName
851 Retrieves a Unicode string that is the user readable name of the controller
852 that is being managed by a driver.
854 This function retrieves the user readable name of the controller specified by
855 ControllerHandle and ChildHandle in the form of a Unicode string. If the
856 driver specified by This has a user readable name in the language specified by
857 Language, then a pointer to the controller name is returned in ControllerName,
858 and EFI_SUCCESS is returned. If the driver specified by This is not currently
859 managing the controller specified by ControllerHandle and ChildHandle,
860 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
861 support the language specified by Language, then EFI_UNSUPPORTED is returned.
863 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
864 EFI_COMPONENT_NAME_PROTOCOL instance.
866 @param ControllerHandle[in] The handle of a controller that the driver
867 specified by This is managing. This handle
868 specifies the controller whose name is to be
871 @param ChildHandle[in] The handle of the child controller to retrieve
872 the name of. This is an optional parameter that
873 may be NULL. It will be NULL for device
874 drivers. It will also be NULL for a bus drivers
875 that wish to retrieve the name of the bus
876 controller. It will not be NULL for a bus
877 driver that wishes to retrieve the name of a
880 @param Language[in] A pointer to a Null-terminated ASCII string
881 array indicating the language. This is the
882 language of the driver name that the caller is
883 requesting, and it must match one of the
884 languages specified in SupportedLanguages. The
885 number of languages supported by a driver is up
886 to the driver writer. Language is specified in
887 RFC 3066 or ISO 639-2 language code format.
889 @param ControllerName[out] A pointer to the Unicode string to return.
890 This Unicode string is the name of the
891 controller specified by ControllerHandle and
892 ChildHandle in the language specified by
893 Language from the point of view of the driver
896 @retval EFI_SUCCESS The Unicode string for the user readable name in
897 the language specified by Language for the
898 driver specified by This was returned in
901 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
903 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
906 @retval EFI_INVALID_PARAMETER Language is NULL.
908 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
910 @retval EFI_UNSUPPORTED The driver specified by This is not currently
911 managing the controller specified by
912 ControllerHandle and ChildHandle.
914 @retval EFI_UNSUPPORTED The driver specified by This does not support
915 the language specified by Language.
920 ConSplitterSimplePointerComponentNameGetControllerName (
921 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
922 IN EFI_HANDLE ControllerHandle
,
923 IN EFI_HANDLE ChildHandle OPTIONAL
,
925 OUT CHAR16
**ControllerName
929 Retrieves a Unicode string that is the user readable name of the controller
930 that is being managed by an EFI Driver.
932 @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL
934 @param ControllerHandle The handle of a controller that the driver
935 specified by This is managing. This handle
936 specifies the controller whose name is to be
938 @param ChildHandle The handle of the child controller to retrieve the
939 name of. This is an optional parameter that may
940 be NULL. It will be NULL for device drivers. It
941 will also be NULL for a bus drivers that wish to
942 retrieve the name of the bus controller. It will
943 not be NULL for a bus driver that wishes to
944 retrieve the name of a child controller.
945 @param Language A pointer to RFC3066 language identifier. This is
946 the language of the controller name that that the
947 caller is requesting, and it must match one of the
948 languages specified in SupportedLanguages. The
949 number of languages supported by a driver is up to
951 @param ControllerName A pointer to the Unicode string to return. This
952 Unicode string is the name of the controller
953 specified by ControllerHandle and ChildHandle in
954 the language specified by Language from the point
955 of view of the driver specified by This.
957 @retval EFI_SUCCESS The Unicode string for the user readable name in
958 the language specified by Language for the driver
959 specified by This was returned in DriverName.
960 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
961 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
963 @retval EFI_INVALID_PARAMETER Language is NULL.
964 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
965 @retval EFI_UNSUPPORTED The driver specified by This is not currently
966 managing the controller specified by
967 ControllerHandle and ChildHandle.
968 @retval EFI_UNSUPPORTED The driver specified by This does not support the
969 language specified by Language.
974 ConSplitterAbsolutePointerComponentNameGetControllerName (
975 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
976 IN EFI_HANDLE ControllerHandle
,
977 IN EFI_HANDLE ChildHandle OPTIONAL
,
979 OUT CHAR16
**ControllerName
983 Retrieves a Unicode string that is the user readable name of the controller
984 that is being managed by a driver.
986 This function retrieves the user readable name of the controller specified by
987 ControllerHandle and ChildHandle in the form of a Unicode string. If the
988 driver specified by This has a user readable name in the language specified by
989 Language, then a pointer to the controller name is returned in ControllerName,
990 and EFI_SUCCESS is returned. If the driver specified by This is not currently
991 managing the controller specified by ControllerHandle and ChildHandle,
992 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
993 support the language specified by Language, then EFI_UNSUPPORTED is returned.
995 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
996 EFI_COMPONENT_NAME_PROTOCOL instance.
998 @param ControllerHandle[in] The handle of a controller that the driver
999 specified by This is managing. This handle
1000 specifies the controller whose name is to be
1003 @param ChildHandle[in] The handle of the child controller to retrieve
1004 the name of. This is an optional parameter that
1005 may be NULL. It will be NULL for device
1006 drivers. It will also be NULL for a bus drivers
1007 that wish to retrieve the name of the bus
1008 controller. It will not be NULL for a bus
1009 driver that wishes to retrieve the name of a
1012 @param Language[in] A pointer to a Null-terminated ASCII string
1013 array indicating the language. This is the
1014 language of the driver name that the caller is
1015 requesting, and it must match one of the
1016 languages specified in SupportedLanguages. The
1017 number of languages supported by a driver is up
1018 to the driver writer. Language is specified in
1019 RFC 3066 or ISO 639-2 language code format.
1021 @param ControllerName[out] A pointer to the Unicode string to return.
1022 This Unicode string is the name of the
1023 controller specified by ControllerHandle and
1024 ChildHandle in the language specified by
1025 Language from the point of view of the driver
1028 @retval EFI_SUCCESS The Unicode string for the user readable name in
1029 the language specified by Language for the
1030 driver specified by This was returned in
1033 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
1035 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1038 @retval EFI_INVALID_PARAMETER Language is NULL.
1040 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1042 @retval EFI_UNSUPPORTED The driver specified by This is not currently
1043 managing the controller specified by
1044 ControllerHandle and ChildHandle.
1046 @retval EFI_UNSUPPORTED The driver specified by This does not support
1047 the language specified by Language.
1052 ConSplitterConOutComponentNameGetControllerName (
1053 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
1054 IN EFI_HANDLE ControllerHandle
,
1055 IN EFI_HANDLE ChildHandle OPTIONAL
,
1057 OUT CHAR16
**ControllerName
1062 Retrieves a Unicode string that is the user readable name of the controller
1063 that is being managed by a driver.
1065 This function retrieves the user readable name of the controller specified by
1066 ControllerHandle and ChildHandle in the form of a Unicode string. If the
1067 driver specified by This has a user readable name in the language specified by
1068 Language, then a pointer to the controller name is returned in ControllerName,
1069 and EFI_SUCCESS is returned. If the driver specified by This is not currently
1070 managing the controller specified by ControllerHandle and ChildHandle,
1071 then EFI_UNSUPPORTED is returned. If the driver specified by This does not
1072 support the language specified by Language, then EFI_UNSUPPORTED is returned.
1074 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
1075 EFI_COMPONENT_NAME_PROTOCOL instance.
1077 @param ControllerHandle[in] The handle of a controller that the driver
1078 specified by This is managing. This handle
1079 specifies the controller whose name is to be
1082 @param ChildHandle[in] The handle of the child controller to retrieve
1083 the name of. This is an optional parameter that
1084 may be NULL. It will be NULL for device
1085 drivers. It will also be NULL for a bus drivers
1086 that wish to retrieve the name of the bus
1087 controller. It will not be NULL for a bus
1088 driver that wishes to retrieve the name of a
1091 @param Language[in] A pointer to a Null-terminated ASCII string
1092 array indicating the language. This is the
1093 language of the driver name that the caller is
1094 requesting, and it must match one of the
1095 languages specified in SupportedLanguages. The
1096 number of languages supported by a driver is up
1097 to the driver writer. Language is specified in
1098 RFC 3066 or ISO 639-2 language code format.
1100 @param ControllerName[out] A pointer to the Unicode string to return.
1101 This Unicode string is the name of the
1102 controller specified by ControllerHandle and
1103 ChildHandle in the language specified by
1104 Language from the point of view of the driver
1107 @retval EFI_SUCCESS The Unicode string for the user readable name in
1108 the language specified by Language for the
1109 driver specified by This was returned in
1112 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
1114 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
1117 @retval EFI_INVALID_PARAMETER Language is NULL.
1119 @retval EFI_INVALID_PARAMETER ControllerName is NULL.
1121 @retval EFI_UNSUPPORTED The driver specified by This is not currently
1122 managing the controller specified by
1123 ControllerHandle and ChildHandle.
1125 @retval EFI_UNSUPPORTED The driver specified by This does not support
1126 the language specified by Language.
1131 ConSplitterStdErrComponentNameGetControllerName (
1132 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
1133 IN EFI_HANDLE ControllerHandle
,
1134 IN EFI_HANDLE ChildHandle OPTIONAL
,
1136 OUT CHAR16
**ControllerName
1141 // TextIn Constructor/Destructor functions
1145 Add Text Input Device in Consplitter Text Input list.
1147 @param Private Text In Splitter pointer.
1148 @param TextIn Simple Text Input protocol pointer.
1150 @retval EFI_SUCCESS Text Input Device added successfully.
1151 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1155 ConSplitterTextInAddDevice (
1156 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1157 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
1161 Remove Simple Text Device in Consplitter Absolute Pointer list.
1163 @param Private Text In Splitter pointer.
1164 @param TextIn Simple Text protocol pointer.
1166 @retval EFI_SUCCESS Simple Text Device removed successfully.
1167 @retval EFI_NOT_FOUND No Simple Text Device found.
1171 ConSplitterTextInDeleteDevice (
1172 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1173 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
1177 // SimplePointer Constuctor/Destructor functions
1181 Add Simple Pointer Device in Consplitter Simple Pointer list.
1183 @param Private Text In Splitter pointer.
1184 @param SimplePointer Simple Pointer protocol pointer.
1186 @retval EFI_SUCCESS Simple Pointer Device added successfully.
1187 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1191 ConSplitterSimplePointerAddDevice (
1192 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1193 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
1197 Remove Simple Pointer Device in Consplitter Absolute Pointer list.
1199 @param Private Text In Splitter pointer.
1200 @param SimplePointer Simple Pointer protocol pointer.
1202 @retval EFI_SUCCESS Simple Pointer Device removed successfully.
1203 @retval EFI_NOT_FOUND No Simple Pointer Device found.
1207 ConSplitterSimplePointerDeleteDevice (
1208 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1209 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
1213 // TextOut Constuctor/Destructor functions
1217 Add Text Output Device in Consplitter Text Output list.
1219 @param Private Text Out Splitter pointer.
1220 @param TextOut Simple Text Output protocol pointer.
1221 @param GraphicsOutput Graphics Output protocol pointer.
1222 @param UgaDraw UGA Draw protocol pointer.
1224 @retval EFI_SUCCESS Text Output Device added successfully.
1225 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1229 ConSplitterTextOutAddDevice (
1230 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1231 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
,
1232 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
1233 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
1237 Remove Text Out Device in Consplitter Text Out list.
1239 @param Private Text Out Splitter pointer.
1240 @param TextOut Simple Text Output Pointer protocol pointer.
1242 @retval EFI_SUCCESS Text Out Device removed successfully.
1243 @retval EFI_NOT_FOUND No Text Out Device found.
1247 ConSplitterTextOutDeleteDevice (
1248 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1249 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
1253 // TextIn I/O Functions
1257 Reset the input device and optionaly run diagnostics
1259 @param This Protocol instance pointer.
1260 @param ExtendedVerification Driver may perform diagnostics on reset.
1262 @retval EFI_SUCCESS The device was reset.
1263 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1269 ConSplitterTextInReset (
1270 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
1271 IN BOOLEAN ExtendedVerification
1275 Reads the next keystroke from the input device. The WaitForKey Event can
1276 be used to test for existance of a keystroke via WaitForEvent () call.
1277 If the ConIn is password locked make it look like no keystroke is availible
1279 @param This Protocol instance pointer.
1280 @param Key Driver may perform diagnostics on reset.
1282 @retval EFI_SUCCESS The keystroke information was returned.
1283 @retval EFI_NOT_READY There was no keystroke data availiable.
1284 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1290 ConSplitterTextInReadKeyStroke (
1291 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
1292 OUT EFI_INPUT_KEY
*Key
1296 Add Text Input Ex Device in Consplitter Text Input Ex list.
1298 @param Private Text In Splitter pointer.
1299 @param TextInEx Simple Text Ex Input protocol pointer.
1301 @retval EFI_SUCCESS Text Input Ex Device added successfully.
1302 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1306 ConSplitterTextInExAddDevice (
1307 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1308 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*TextInEx
1312 Remove Simple Text Ex Device in Consplitter Absolute Pointer list.
1314 @param Private Text In Splitter pointer.
1315 @param TextInEx Simple Text Ex protocol pointer.
1317 @retval EFI_SUCCESS Simple Text Ex Device removed successfully.
1318 @retval EFI_NOT_FOUND No Simple Text Ex Device found.
1322 ConSplitterTextInExDeleteDevice (
1323 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1324 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*TextInEx
1328 // Simple Text Input Ex protocol function prototypes
1333 Reset the input device and optionaly run diagnostics
1335 @param This Protocol instance pointer.
1336 @param ExtendedVerification Driver may perform diagnostics on reset.
1338 @retval EFI_SUCCESS The device was reset.
1339 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1345 ConSplitterTextInResetEx (
1346 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1347 IN BOOLEAN ExtendedVerification
1352 Reads the next keystroke from the input device. The WaitForKey Event can
1353 be used to test for existance of a keystroke via WaitForEvent () call.
1355 @param This Protocol instance pointer.
1356 @param KeyData A pointer to a buffer that is filled in with the
1357 keystroke state data for the key that was
1360 @retval EFI_SUCCESS The keystroke information was returned.
1361 @retval EFI_NOT_READY There was no keystroke data availiable.
1362 @retval EFI_DEVICE_ERROR The keystroke information was not returned due
1364 @retval EFI_INVALID_PARAMETER KeyData is NULL.
1369 ConSplitterTextInReadKeyStrokeEx (
1370 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1371 OUT EFI_KEY_DATA
*KeyData
1376 Set certain state for the input device.
1378 @param This Protocol instance pointer.
1379 @param KeyToggleState A pointer to the EFI_KEY_TOGGLE_STATE to set the
1380 state for the input device.
1382 @retval EFI_SUCCESS The device state was set successfully.
1383 @retval EFI_DEVICE_ERROR The device is not functioning correctly and
1384 could not have the setting adjusted.
1385 @retval EFI_UNSUPPORTED The device does not have the ability to set its
1387 @retval EFI_INVALID_PARAMETER KeyToggleState is NULL.
1392 ConSplitterTextInSetState (
1393 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1394 IN EFI_KEY_TOGGLE_STATE
*KeyToggleState
1399 Register a notification function for a particular keystroke for the input device.
1401 @param This Protocol instance pointer.
1402 @param KeyData A pointer to a buffer that is filled in with the
1403 keystroke information data for the key that was
1405 @param KeyNotificationFunction Points to the function to be called when the key
1406 sequence is typed specified by KeyData.
1407 @param NotifyHandle Points to the unique handle assigned to the
1408 registered notification.
1410 @retval EFI_SUCCESS The notification function was registered
1412 @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data
1414 @retval EFI_INVALID_PARAMETER KeyData or NotifyHandle is NULL.
1419 ConSplitterTextInRegisterKeyNotify (
1420 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1421 IN EFI_KEY_DATA
*KeyData
,
1422 IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction
,
1423 OUT EFI_HANDLE
*NotifyHandle
1428 Remove a registered notification function from a particular keystroke.
1430 @param This Protocol instance pointer.
1431 @param NotificationHandle The handle of the notification function being
1434 @retval EFI_SUCCESS The notification function was unregistered
1436 @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid.
1437 @retval EFI_NOT_FOUND Can not find the matching entry in database.
1442 ConSplitterTextInUnregisterKeyNotify (
1443 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL
*This
,
1444 IN EFI_HANDLE NotificationHandle
1448 This event agregates all the events of the ConIn devices in the spliter.
1449 If the ConIn is password locked then return.
1450 If any events of physical ConIn devices are signaled, signal the ConIn
1451 spliter event. This will cause the calling code to call
1452 ConSplitterTextInReadKeyStroke ().
1454 @param Event The Event assoicated with callback.
1455 @param Context Context registered when Event was created.
1462 ConSplitterTextInWaitForKey (
1467 Return TRUE if StdIn is locked. The ConIn device on the virtual handle is
1468 the only device locked.
1472 @retval TRUE StdIn locked
1473 @retval FALSE StdIn working normally
1477 ConSpliterConssoleControlStdInLocked (
1481 This timer event will fire when StdIn is locked. It will check the key
1482 sequence on StdIn to see if it matches the password. Any error in the
1483 password will cause the check to reset. As long a mConIn.PasswordEnabled is
1484 TRUE the StdIn splitter will not report any input.
1486 @param Event The Event this notify function registered to.
1487 @param Context Pointer to the context data registerd to the
1495 ConSpliterConsoleControlLockStdInEvent (
1501 If Password is NULL unlock the password state variable and set the event
1502 timer. If the Password is too big return an error. If the Password is valid
1503 Copy the Password and enable state variable and then arm the periodic timer
1505 @param This Console Control protocol pointer.
1506 @param Password The password input.
1508 @retval EFI_SUCCESS Lock the StdIn device
1509 @retval EFI_INVALID_PARAMETER Password is NULL
1510 @retval EFI_OUT_OF_RESOURCES Buffer allocation to store the password fails
1515 ConSpliterConsoleControlLockStdIn (
1516 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1521 Reads the next keystroke from the input device. The WaitForKey Event can
1522 be used to test for existance of a keystroke via WaitForEvent () call.
1524 @param Private Protocol instance pointer.
1525 @param Key Driver may perform diagnostics on reset.
1527 @retval EFI_SUCCESS The keystroke information was returned.
1528 @retval EFI_NOT_READY There was no keystroke data availiable.
1529 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1535 ConSplitterTextInPrivateReadKeyStroke (
1536 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
1537 OUT EFI_INPUT_KEY
*Key
1541 Reset the input device and optionaly run diagnostics
1543 @param This Protocol instance pointer.
1544 @param ExtendedVerification Driver may perform diagnostics on reset.
1546 @retval EFI_SUCCESS The device was reset.
1547 @retval EFI_DEVICE_ERROR The device is not functioning properly and could
1553 ConSplitterSimplePointerReset (
1554 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
1555 IN BOOLEAN ExtendedVerification
1559 Reads the next keystroke from the input device. The WaitForKey Event can
1560 be used to test for existance of a keystroke via WaitForEvent () call.
1561 If the ConIn is password locked make it look like no keystroke is availible
1563 @param This A pointer to protocol instance.
1564 @param State A pointer to state information on the pointer device
1566 @retval EFI_SUCCESS The keystroke information was returned in State.
1567 @retval EFI_NOT_READY There was no keystroke data availiable.
1568 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due
1574 ConSplitterSimplePointerGetState (
1575 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
1576 IN OUT EFI_SIMPLE_POINTER_STATE
*State
1580 This event agregates all the events of the ConIn devices in the spliter.
1581 If the ConIn is password locked then return.
1582 If any events of physical ConIn devices are signaled, signal the ConIn
1583 spliter event. This will cause the calling code to call
1584 ConSplitterTextInReadKeyStroke ().
1586 @param Event The Event assoicated with callback.
1587 @param Context Context registered when Event was created.
1594 ConSplitterSimplePointerWaitForInput (
1600 // TextOut I/O Functions
1604 Reset the text output device hardware and optionaly run diagnostics
1606 @param This Protocol instance pointer.
1607 @param ExtendedVerification Driver may perform more exhaustive verfication
1608 operation of the device during reset.
1610 @retval EFI_SUCCESS The text output device was reset.
1611 @retval EFI_DEVICE_ERROR The text output device is not functioning
1612 correctly and could not be reset.
1617 ConSplitterTextOutReset (
1618 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1619 IN BOOLEAN ExtendedVerification
1623 Write a Unicode string to the output device.
1625 @param This Protocol instance pointer.
1626 @param WString The NULL-terminated Unicode string to be
1627 displayed on the output device(s). All output
1628 devices must also support the Unicode drawing
1629 defined in this file.
1631 @retval EFI_SUCCESS The string was output to the device.
1632 @retval EFI_DEVICE_ERROR The device reported an error while attempting to
1634 @retval EFI_UNSUPPORTED The output device's mode is not currently in a
1636 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
1637 characters in the Unicode string could not be
1638 rendered and were skipped.
1643 ConSplitterTextOutOutputString (
1644 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1649 Verifies that all characters in a Unicode string can be output to the
1652 @param This Protocol instance pointer.
1653 @param WString The NULL-terminated Unicode string to be
1654 examined for the output device(s).
1656 @retval EFI_SUCCESS The device(s) are capable of rendering the
1658 @retval EFI_UNSUPPORTED Some of the characters in the Unicode string
1659 cannot be rendered by one or more of the output
1660 devices mapped by the EFI handle.
1665 ConSplitterTextOutTestString (
1666 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1671 Returns information for an available text mode that the output device(s)
1674 @param This Protocol instance pointer.
1675 @param ModeNumber The mode number to return information on.
1676 @param Columns Returns the columns of the text output device
1677 for the requested ModeNumber.
1678 @param Rows Returns the rows of the text output device
1679 for the requested ModeNumber.
1681 @retval EFI_SUCCESS The requested mode information was returned.
1682 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1684 @retval EFI_UNSUPPORTED The mode number was not valid.
1689 ConSplitterTextOutQueryMode (
1690 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1691 IN UINTN ModeNumber
,
1697 Sets the output device(s) to a specified mode.
1699 @param This Protocol instance pointer.
1700 @param ModeNumber The mode number to set.
1702 @retval EFI_SUCCESS The requested text mode was set.
1703 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1705 @retval EFI_UNSUPPORTED The mode number was not valid.
1710 ConSplitterTextOutSetMode (
1711 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1716 Sets the background and foreground colors for the OutputString () and
1717 ClearScreen () functions.
1719 @param This Protocol instance pointer.
1720 @param Attribute The attribute to set. Bits 0..3 are the
1721 foreground color, and bits 4..6 are the
1722 background color. All other bits are undefined
1723 and must be zero. The valid Attributes are
1724 defined in this file.
1726 @retval EFI_SUCCESS The attribute was set.
1727 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1729 @retval EFI_UNSUPPORTED The attribute requested is not defined.
1734 ConSplitterTextOutSetAttribute (
1735 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1740 Clears the output device(s) display to the currently selected background
1743 @param This Protocol instance pointer.
1745 @retval EFI_SUCCESS The operation completed successfully.
1746 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1748 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
1753 ConSplitterTextOutClearScreen (
1754 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
1758 Sets the current coordinates of the cursor position
1760 @param This Protocol instance pointer.
1761 @param Column The column position to set the cursor to. Must be
1762 greater than or equal to zero and less than the
1763 number of columns by QueryMode ().
1764 @param Row The row position to set the cursor to. Must be
1765 greater than or equal to zero and less than the
1766 number of rows by QueryMode ().
1768 @retval EFI_SUCCESS The operation completed successfully.
1769 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1771 @retval EFI_UNSUPPORTED The output device is not in a valid text mode,
1772 or the cursor position is invalid for the
1778 ConSplitterTextOutSetCursorPosition (
1779 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1786 Makes the cursor visible or invisible
1788 @param This Protocol instance pointer.
1789 @param Visible If TRUE, the cursor is set to be visible. If
1790 FALSE, the cursor is set to be invisible.
1792 @retval EFI_SUCCESS The operation completed successfully.
1793 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1794 the request, or the device does not support
1795 changing the cursor mode.
1796 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
1801 ConSplitterTextOutEnableCursor (
1802 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
1807 Take the passed in Buffer of size SizeOfCount and grow the buffer
1808 by MAX (CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT, MaxGrow) * SizeOfCount
1809 bytes. Copy the current data in Buffer to the new version of Buffer
1810 and free the old version of buffer.
1812 @param SizeOfCount Size of element in array
1813 @param Count Current number of elements in array
1814 @param Buffer Bigger version of passed in Buffer with all the
1817 @retval EFI_SUCCESS Buffer size has grown
1818 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.
1822 ConSplitterGrowBuffer (
1823 IN UINTN SizeOfCount
,
1825 IN OUT VOID
**Buffer
1829 Return the current video mode information. Also returns info about existence
1830 of Graphics Output devices or UGA Draw devices in system, and if the Std In device is locked. All the
1831 arguments are optional and only returned if a non NULL pointer is passed in.
1833 @param This Protocol instance pointer.
1834 @param Mode Are we in text of grahics mode.
1835 @param GopExists TRUE if GOP Spliter has found a GOP/UGA device
1836 @param StdInLocked TRUE if StdIn device is keyboard locked
1838 @retval EFI_SUCCESS Mode information returned.
1839 @retval EFI_INVALID_PARAMETER Invalid parameters.
1844 ConSpliterConsoleControlGetMode (
1845 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1846 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE
*Mode
,
1847 OUT BOOLEAN
*GopExists
,
1848 OUT BOOLEAN
*StdInLocked
1852 Set the current mode to either text or graphics. Graphics is
1855 @param This Protocol instance pointer.
1856 @param Mode Mode to set the
1858 @retval EFI_SUCCESS Mode information returned.
1859 @retval EFI_INVALID_PARAMETER Invalid parameter.
1860 @retval EFI_UNSUPPORTED Operation unsupported.
1865 ConSpliterConsoleControlSetMode (
1866 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
1867 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
1871 Return the current video mode information.
1873 @param This Protocol instance pointer.
1874 @param ModeNumber The mode number to return information on.
1875 @param SizeOfInfo A pointer to the size, in bytes, of the Info
1877 @param Info Caller allocated buffer that returns information
1880 @retval EFI_SUCCESS Mode information returned.
1881 @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
1882 @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the
1884 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
1885 @retval EFI_INVALID_PARAMETER One of the input args was NULL.
1890 ConSpliterGraphicsOutputQueryMode (
1891 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
1892 IN UINT32 ModeNumber
,
1893 OUT UINTN
*SizeOfInfo
,
1894 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
**Info
1898 Graphics output protocol interface to set video mode.
1900 @param This Protocol instance pointer.
1901 @param ModeNumber The mode number to be set.
1903 @retval EFI_SUCCESS Graphics mode was changed.
1904 @retval EFI_DEVICE_ERROR The device had an error and could not complete
1906 @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
1911 ConSpliterGraphicsOutputSetMode (
1912 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
* This
,
1913 IN UINT32 ModeNumber
1917 The following table defines actions for BltOperations.
1919 EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)
1920 directly to every pixel of the video display rectangle
1921 (DestinationX, DestinationY)
1922 (DestinationX + Width, DestinationY + Height).
1923 Only one pixel will be used from the BltBuffer. Delta is NOT used.
1924 EfiBltVideoToBltBuffer - Read data from the video display rectangle
1925 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
1926 the BltBuffer rectangle (DestinationX, DestinationY )
1927 (DestinationX + Width, DestinationY + Height). If DestinationX or
1928 DestinationY is not zero then Delta must be set to the length in bytes
1929 of a row in the BltBuffer.
1930 EfiBltBufferToVideo - Write data from the BltBuffer rectangle
1931 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
1932 video display rectangle (DestinationX, DestinationY)
1933 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
1934 not zero then Delta must be set to the length in bytes of a row in the
1936 EfiBltVideoToVideo - Copy from the video display rectangle
1937 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .
1938 to the video display rectangle (DestinationX, DestinationY)
1939 (DestinationX + Width, DestinationY + Height).
1940 The BltBuffer and Delta are not used in this mode.
1942 @param This Protocol instance pointer.
1943 @param BltBuffer Buffer containing data to blit into video buffer.
1944 This buffer has a size of
1945 Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
1946 @param BltOperation Operation to perform on BlitBuffer and video
1948 @param SourceX X coordinate of source for the BltBuffer.
1949 @param SourceY Y coordinate of source for the BltBuffer.
1950 @param DestinationX X coordinate of destination for the BltBuffer.
1951 @param DestinationY Y coordinate of destination for the BltBuffer.
1952 @param Width Width of rectangle in BltBuffer in pixels.
1953 @param Height Hight of rectangle in BltBuffer in pixels.
1954 @param Delta OPTIONAL.
1956 @retval EFI_SUCCESS The Blt operation completed.
1957 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
1958 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video
1964 ConSpliterGraphicsOutputBlt (
1965 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
1966 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
, OPTIONAL
1967 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation
,
1970 IN UINTN DestinationX
,
1971 IN UINTN DestinationY
,
1974 IN UINTN Delta OPTIONAL
1978 Write data from the buffer to video display based on Graphics Output setting.
1980 @param Private Consplitter Text Out pointer.
1981 @param GraphicsOutput Graphics Output protocol pointer.
1982 @param UgaDraw UGA Draw protocol pointer.
1984 @retval EFI_UNSUPPORTED No graphics devcie available .
1985 @retval EFI_SUCCESS The Blt operation completed.
1986 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
1987 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
1993 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
1994 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
1995 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
1999 Return the current video mode information.
2001 @param This Protocol instance pointer.
2002 @param HorizontalResolution Current video horizontal resolution in pixels
2003 @param VerticalResolution Current video vertical resolution in pixels
2004 @param ColorDepth Current video color depth in bits per pixel
2005 @param RefreshRate Current video refresh rate in Hz.
2007 @retval EFI_SUCCESS Mode information returned.
2008 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
2009 @retval EFI_INVALID_PARAMETER One of the input args was NULL.
2014 ConSpliterUgaDrawGetMode (
2015 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2016 OUT UINT32
*HorizontalResolution
,
2017 OUT UINT32
*VerticalResolution
,
2018 OUT UINT32
*ColorDepth
,
2019 OUT UINT32
*RefreshRate
2023 Return the current video mode information.
2025 @param This Protocol instance pointer.
2026 @param HorizontalResolution Current video horizontal resolution in pixels
2027 @param VerticalResolution Current video vertical resolution in pixels
2028 @param ColorDepth Current video color depth in bits per pixel
2029 @param RefreshRate Current video refresh rate in Hz.
2031 @retval EFI_SUCCESS Mode information returned.
2032 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
2033 @retval EFI_OUT_OF_RESOURCES Out of resources.
2038 ConSpliterUgaDrawSetMode (
2039 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2040 IN UINT32 HorizontalResolution
,
2041 IN UINT32 VerticalResolution
,
2042 IN UINT32 ColorDepth
,
2043 IN UINT32 RefreshRate
2047 The following table defines actions for BltOperations.
2049 EfiUgaVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)
2050 directly to every pixel of the video display rectangle
2051 (DestinationX, DestinationY)
2052 (DestinationX + Width, DestinationY + Height).
2053 Only one pixel will be used from the BltBuffer. Delta is NOT used.
2054 EfiUgaVideoToBltBuffer - Read data from the video display rectangle
2055 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
2056 the BltBuffer rectangle (DestinationX, DestinationY )
2057 (DestinationX + Width, DestinationY + Height). If DestinationX or
2058 DestinationY is not zero then Delta must be set to the length in bytes
2059 of a row in the BltBuffer.
2060 EfiUgaBltBufferToVideo - Write data from the BltBuffer rectangle
2061 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
2062 video display rectangle (DestinationX, DestinationY)
2063 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
2064 not zero then Delta must be set to the length in bytes of a row in the
2066 EfiUgaVideoToVideo - Copy from the video display rectangle
2067 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .
2068 to the video display rectangle (DestinationX, DestinationY)
2069 (DestinationX + Width, DestinationY + Height).
2070 The BltBuffer and Delta are not used in this mode.
2072 @param This Protocol instance pointer.
2073 @param BltBuffer Buffer containing data to blit into video buffer.
2074 This buffer has a size of
2075 Width*Height*sizeof(EFI_UGA_PIXEL)
2076 @param BltOperation Operation to perform on BlitBuffer and video
2078 @param SourceX X coordinate of source for the BltBuffer.
2079 @param SourceY Y coordinate of source for the BltBuffer.
2080 @param DestinationX X coordinate of destination for the BltBuffer.
2081 @param DestinationY Y coordinate of destination for the BltBuffer.
2082 @param Width Width of rectangle in BltBuffer in pixels.
2083 @param Height Hight of rectangle in BltBuffer in pixels.
2084 @param Delta OPTIONAL.
2086 @retval EFI_SUCCESS The Blt operation completed.
2087 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
2088 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video
2094 ConSpliterUgaDrawBlt (
2095 IN EFI_UGA_DRAW_PROTOCOL
*This
,
2096 IN EFI_UGA_PIXEL
*BltBuffer
, OPTIONAL
2097 IN EFI_UGA_BLT_OPERATION BltOperation
,
2100 IN UINTN DestinationX
,
2101 IN UINTN DestinationY
,
2104 IN UINTN Delta OPTIONAL
2108 Write data from the buffer to video display based on UGA Draw setting.
2110 @param Private Consplitter Text Out pointer.
2111 @param GraphicsOutput Graphics Output protocol pointer.
2112 @param UgaDraw UGA Draw protocol pointer.
2114 @retval EFI_UNSUPPORTED No graphics devcie available .
2115 @retval EFI_SUCCESS The Blt operation completed.
2116 @retval EFI_INVALID_PARAMETER BltOperation is not valid.
2117 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
2122 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2123 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
2124 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
2128 Write a Unicode string to the output device.
2130 @param Private Pointer to the console output splitter's private
2131 data. It indicates the calling context.
2132 @param WString The NULL-terminated Unicode string to be
2133 displayed on the output device(s). All output
2134 devices must also support the Unicode drawing
2135 defined in this file.
2137 @retval EFI_SUCCESS The string was output to the device.
2138 @retval EFI_DEVICE_ERROR The device reported an error while attempting to
2140 @retval EFI_UNSUPPORTED The output device's mode is not currently in a
2142 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
2143 characters in the Unicode string could not be
2144 rendered and were skipped.
2148 DevNullTextOutOutputString (
2149 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2154 Sets the output device(s) to a specified mode.
2156 @param Private Private data structure pointer.
2157 @param ModeNumber The mode number to set.
2159 @retval EFI_SUCCESS The requested text mode was set.
2160 @retval EFI_DEVICE_ERROR The device had an error and could not complete
2162 @retval EFI_UNSUPPORTED The mode number was not valid.
2163 @retval EFI_OUT_OF_RESOURCES Out of resources.
2167 DevNullTextOutSetMode (
2168 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2173 Clears the output device(s) display to the currently selected background
2176 @param Private Protocol instance pointer.
2178 @retval EFI_SUCCESS The operation completed successfully.
2179 @retval EFI_DEVICE_ERROR The device had an error and could not complete
2181 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.
2185 DevNullTextOutClearScreen (
2186 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
2190 Sets the current coordinates of the cursor position.
2192 @param Private Protocol instance pointer.
2194 @param Row the position to set the cursor to. Must be
2195 greater than or equal to zero and less than the
2196 number of columns and rows by QueryMode ().
2198 @retval EFI_SUCCESS The operation completed successfully.
2199 @retval EFI_DEVICE_ERROR The device had an error and could not complete
2201 @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or
2202 the cursor position is invalid for the current
2207 DevNullTextOutSetCursorPosition (
2208 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2214 Implements SIMPLE_TEXT_OUTPUT.EnableCursor().
2215 In this driver, the cursor cannot be hidden.
2217 @param Private Indicates the calling context.
2218 @param Visible If TRUE, the cursor is set to be visible, If
2219 FALSE, the cursor is set to be invisible.
2221 @retval EFI_SUCCESS The request is valid.
2225 DevNullTextOutEnableCursor (
2226 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
2231 Take the DevNull TextOut device and update the Simple Text Out on every
2234 @param Private Indicates the calling context.
2236 @retval EFI_SUCCESS The request is valid.
2237 @retval other Return status of TextOut->OutputString ()
2242 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private