IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf\r
Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriverDxe.inf\r
Nt32Pkg/WinNtBlockIoDxe/WinNtBlockIoDxe.inf\r
- Nt32Pkg/WinNtConsoleDxe/WinNtConsoleDxe.inf\r
Nt32Pkg/WinNtSerialIoDxe/WinNtSerialIoDxe.inf\r
Nt32Pkg/WinNtGopDxe/WinNtGopDxe.inf\r
Nt32Pkg/WinNtSimpleFileSystemDxe/WinNtSimpleFileSystemDxe.inf\r
INF IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf\r
INF Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriverDxe.inf\r
INF Nt32Pkg/WinNtBlockIoDxe/WinNtBlockIoDxe.inf\r
-INF Nt32Pkg/WinNtConsoleDxe/WinNtConsoleDxe.inf\r
INF Nt32Pkg/WinNtSerialIoDxe/WinNtSerialIoDxe.inf\r
INF Nt32Pkg/WinNtGopDxe/WinNtGopDxe.inf\r
INF Nt32Pkg/WinNtSimpleFileSystemDxe/WinNtSimpleFileSystemDxe.inf\r
+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- ComponentName.c\r
-\r
-Abstract:\r
-\r
---*/\r
-//\r
-// The package level header files this module uses\r
-//\r
-#include <Uefi.h>\r
-#include <WinNtDxe.h>\r
-//\r
-// The protocols, PPI and GUID defintions for this module\r
-//\r
-#include <Protocol/SimpleTextIn.h>\r
-#include <Protocol/WinNtIo.h>\r
-#include <Protocol/SimpleTextOut.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/DriverBinding.h>\r
-//\r
-// The Library classes this module consumes\r
-//\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-\r
-#include "Console.h"\r
-\r
-//\r
-// EFI Component Name Functions\r
-//\r
-/**\r
- Retrieves a Unicode string that is the user readable name of the driver.\r
-\r
- This function retrieves the user readable name of a driver in the form of a\r
- Unicode string. If the driver specified by This has a user readable name in\r
- the language specified by Language, then a pointer to the driver name is\r
- returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
- by This does not support the language specified by Language,\r
- then EFI_UNSUPPORTED is returned.\r
-\r
- @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
- EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
- @param Language[in] A pointer to a Null-terminated ASCII string\r
- array indicating the language. This is the\r
- language of the driver name that the caller is\r
- requesting, and it must match one of the\r
- languages specified in SupportedLanguages. The\r
- number of languages supported by a driver is up\r
- to the driver writer. Language is specified\r
- in RFC 3066 or ISO 639-2 language code format.\r
-\r
- @param DriverName[out] A pointer to the Unicode string to return.\r
- This Unicode string is the name of the\r
- driver specified by This in the language\r
- specified by Language.\r
-\r
- @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
- This and the language specified by Language was\r
- returned in DriverName.\r
-\r
- @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
- @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This does not support\r
- the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleComponentNameGetDriverName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **DriverName\r
- );\r
-\r
-\r
-/**\r
- Retrieves a Unicode string that is the user readable name of the controller\r
- that is being managed by a driver.\r
-\r
- This function retrieves the user readable name of the controller specified by\r
- ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
- driver specified by This has a user readable name in the language specified by\r
- Language, then a pointer to the controller name is returned in ControllerName,\r
- and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
- managing the controller specified by ControllerHandle and ChildHandle,\r
- then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
- support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
-\r
- @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
- EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
- @param ControllerHandle[in] The handle of a controller that the driver\r
- specified by This is managing. This handle\r
- specifies the controller whose name is to be\r
- returned.\r
-\r
- @param ChildHandle[in] The handle of the child controller to retrieve\r
- the name of. This is an optional parameter that\r
- may be NULL. It will be NULL for device\r
- drivers. It will also be NULL for a bus drivers\r
- that wish to retrieve the name of the bus\r
- controller. It will not be NULL for a bus\r
- driver that wishes to retrieve the name of a\r
- child controller.\r
-\r
- @param Language[in] A pointer to a Null-terminated ASCII string\r
- array indicating the language. This is the\r
- language of the driver name that the caller is\r
- requesting, and it must match one of the\r
- languages specified in SupportedLanguages. The\r
- number of languages supported by a driver is up\r
- to the driver writer. Language is specified in\r
- RFC 3066 or ISO 639-2 language code format.\r
-\r
- @param ControllerName[out] A pointer to the Unicode string to return.\r
- This Unicode string is the name of the\r
- controller specified by ControllerHandle and\r
- ChildHandle in the language specified by\r
- Language from the point of view of the driver\r
- specified by This.\r
-\r
- @retval EFI_SUCCESS The Unicode string for the user readable name in\r
- the language specified by Language for the\r
- driver specified by This was returned in\r
- DriverName.\r
-\r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
-\r
- @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
- EFI_HANDLE.\r
-\r
- @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
- @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
- managing the controller specified by\r
- ControllerHandle and ChildHandle.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This does not support\r
- the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleComponentNameGetControllerName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE ChildHandle OPTIONAL,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **ControllerName\r
- );\r
-\r
-\r
-//\r
-// EFI Component Name Protocol\r
-//\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gWinNtConsoleComponentName = {\r
- WinNtConsoleComponentNameGetDriverName,\r
- WinNtConsoleComponentNameGetControllerName,\r
- "eng"\r
-};\r
-\r
-//\r
-// EFI Component Name 2 Protocol\r
-//\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gWinNtConsoleComponentName2 = {\r
- (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) WinNtConsoleComponentNameGetDriverName,\r
- (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) WinNtConsoleComponentNameGetControllerName,\r
- "en"\r
-};\r
-\r
-\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mWinNtConsoleDriverNameTable[] = {\r
- { "eng;en", L"Windows Text Console Driver" },\r
- { NULL , NULL }\r
-};\r
-\r
-/**\r
- Retrieves a Unicode string that is the user readable name of the driver.\r
-\r
- This function retrieves the user readable name of a driver in the form of a\r
- Unicode string. If the driver specified by This has a user readable name in\r
- the language specified by Language, then a pointer to the driver name is\r
- returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
- by This does not support the language specified by Language,\r
- then EFI_UNSUPPORTED is returned.\r
-\r
- @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
- EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
- @param Language[in] A pointer to a Null-terminated ASCII string\r
- array indicating the language. This is the\r
- language of the driver name that the caller is\r
- requesting, and it must match one of the\r
- languages specified in SupportedLanguages. The\r
- number of languages supported by a driver is up\r
- to the driver writer. Language is specified\r
- in RFC 3066 or ISO 639-2 language code format.\r
-\r
- @param DriverName[out] A pointer to the Unicode string to return.\r
- This Unicode string is the name of the\r
- driver specified by This in the language\r
- specified by Language.\r
-\r
- @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
- This and the language specified by Language was\r
- returned in DriverName.\r
-\r
- @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
- @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This does not support\r
- the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleComponentNameGetDriverName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **DriverName\r
- )\r
-{\r
- return LookupUnicodeString2 (\r
- Language,\r
- This->SupportedLanguages,\r
- mWinNtConsoleDriverNameTable,\r
- DriverName,\r
- (BOOLEAN)(This == &gWinNtConsoleComponentName)\r
- );\r
-}\r
-\r
-/**\r
- Retrieves a Unicode string that is the user readable name of the controller\r
- that is being managed by a driver.\r
-\r
- This function retrieves the user readable name of the controller specified by\r
- ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
- driver specified by This has a user readable name in the language specified by\r
- Language, then a pointer to the controller name is returned in ControllerName,\r
- and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
- managing the controller specified by ControllerHandle and ChildHandle,\r
- then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
- support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
-\r
- @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
- EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
- @param ControllerHandle[in] The handle of a controller that the driver\r
- specified by This is managing. This handle\r
- specifies the controller whose name is to be\r
- returned.\r
-\r
- @param ChildHandle[in] The handle of the child controller to retrieve\r
- the name of. This is an optional parameter that\r
- may be NULL. It will be NULL for device\r
- drivers. It will also be NULL for a bus drivers\r
- that wish to retrieve the name of the bus\r
- controller. It will not be NULL for a bus\r
- driver that wishes to retrieve the name of a\r
- child controller.\r
-\r
- @param Language[in] A pointer to a Null-terminated ASCII string\r
- array indicating the language. This is the\r
- language of the driver name that the caller is\r
- requesting, and it must match one of the\r
- languages specified in SupportedLanguages. The\r
- number of languages supported by a driver is up\r
- to the driver writer. Language is specified in\r
- RFC 3066 or ISO 639-2 language code format.\r
-\r
- @param ControllerName[out] A pointer to the Unicode string to return.\r
- This Unicode string is the name of the\r
- controller specified by ControllerHandle and\r
- ChildHandle in the language specified by\r
- Language from the point of view of the driver\r
- specified by This.\r
-\r
- @retval EFI_SUCCESS The Unicode string for the user readable name in\r
- the language specified by Language for the\r
- driver specified by This was returned in\r
- DriverName.\r
-\r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
-\r
- @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
- EFI_HANDLE.\r
-\r
- @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
- @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
- managing the controller specified by\r
- ControllerHandle and ChildHandle.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This does not support\r
- the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleComponentNameGetControllerName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE ChildHandle OPTIONAL,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **ControllerName\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOut;\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- //\r
- // This is a device driver, so ChildHandle must be NULL.\r
- //\r
- if (ChildHandle != NULL) {\r
- return EFI_UNSUPPORTED;\r
- }\r
- //\r
- // Make sure this driver is currently managing ControllerHandle\r
- //\r
- Status = EfiTestManagedDevice (\r
- ControllerHandle,\r
- gWinNtConsoleDriverBinding.DriverBindingHandle,\r
- &gEfiWinNtIoProtocolGuid\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return EFI_UNSUPPORTED;\r
- }\r
- //\r
- // Get out context back\r
- //\r
- Status = gBS->OpenProtocol (\r
- ControllerHandle,\r
- &gEfiSimpleTextOutProtocolGuid,\r
- &SimpleTextOut,\r
- gWinNtConsoleDriverBinding.DriverBindingHandle,\r
- ControllerHandle,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return EFI_UNSUPPORTED;\r
- }\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (SimpleTextOut);\r
-\r
- return LookupUnicodeString2 (\r
- Language,\r
- This->SupportedLanguages,\r
- Private->ControllerNameTable,\r
- ControllerName,\r
- (BOOLEAN)(This == &gWinNtConsoleComponentName)\r
- );\r
-}\r
+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-Module Name:\r
-\r
- Console.c\r
-\r
-Abstract:\r
-\r
- Console based on Win32 APIs.\r
-\r
---*/\r
-\r
-//\r
-// The package level header files this module uses\r
-//\r
-#include <Uefi.h>\r
-#include <WinNtDxe.h>\r
-//\r
-// The protocols, PPI and GUID defintions for this module\r
-//\r
-#include <Protocol/SimpleTextIn.h>\r
-#include <Protocol/WinNtIo.h>\r
-#include <Protocol/SimpleTextOut.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/DriverBinding.h>\r
-//\r
-// The Library classes this module consumes\r
-//\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-\r
-#include "Console.h"\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
- );\r
-\r
-EFI_DRIVER_BINDING_PROTOCOL gWinNtConsoleDriverBinding = {\r
- WinNtConsoleDriverBindingSupported,\r
- WinNtConsoleDriverBindingStart,\r
- WinNtConsoleDriverBindingStop,\r
- 0xa,\r
- NULL,\r
- NULL\r
-};\r
-\r
-/**\r
- The user Entry Point for module WinNtConsole. The user code starts with this function.\r
-\r
- @param[in] ImageHandle The firmware allocated handle for the EFI image. \r
- @param[in] SystemTable A pointer to the EFI System Table.\r
- \r
- @retval EFI_SUCCESS The entry point is executed successfully.\r
- @retval other Some error occurs when executing this entry point.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-InitializeWinNtConsole(\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- //\r
- // Install driver model protocol(s).\r
- //\r
- Status = EfiLibInstallDriverBindingComponentName2 (\r
- ImageHandle,\r
- SystemTable,\r
- &gWinNtConsoleDriverBinding,\r
- ImageHandle,\r
- &gWinNtConsoleComponentName,\r
- &gWinNtConsoleComponentName2\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
-\r
- return Status;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-Arguments:\r
-\r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-// TODO: This - add argument and description to function comment\r
-// TODO: Handle - add argument and description to function comment\r
-// TODO: RemainingDevicePath - add argument and description to function comment\r
-{\r
- EFI_STATUS Status;\r
- EFI_WIN_NT_IO_PROTOCOL *WinNtIo;\r
-\r
- //\r
- // Open the IO Abstraction(s) needed to perform the supported test\r
- //\r
- Status = gBS->OpenProtocol (\r
- Handle,\r
- &gEfiWinNtIoProtocolGuid,\r
- &WinNtIo,\r
- This->DriverBindingHandle,\r
- Handle,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
- //\r
- // Make sure that the WinNt Thunk Protocol is valid\r
- //\r
- Status = EFI_UNSUPPORTED;\r
- if (WinNtIo->WinNtThunk->Signature == EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE) {\r
-\r
- //\r
- // Check the GUID to see if this is a handle type the driver supports\r
- //\r
- if (CompareGuid (WinNtIo->TypeGuid, &gEfiWinNtConsoleGuid)) {\r
- Status = EFI_SUCCESS;\r
- }\r
- }\r
-\r
- //\r
- // Close the I/O Abstraction(s) used to perform the supported test\r
- //\r
- gBS->CloseProtocol (\r
- Handle,\r
- &gEfiWinNtIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Handle\r
- );\r
-\r
- return Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-Arguments:\r
-\r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-// TODO: This - add argument and description to function comment\r
-// TODO: Handle - add argument and description to function comment\r
-// TODO: RemainingDevicePath - add argument and description to function comment\r
-{\r
- EFI_STATUS Status;\r
- EFI_WIN_NT_IO_PROTOCOL *WinNtIo;\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- //\r
- // Grab the IO abstraction we need to get any work done\r
- //\r
- Status = gBS->OpenProtocol (\r
- Handle,\r
- &gEfiWinNtIoProtocolGuid,\r
- &WinNtIo,\r
- This->DriverBindingHandle,\r
- Handle,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
- Private = AllocatePool (sizeof (WIN_NT_SIMPLE_TEXT_PRIVATE_DATA));\r
- if (Private == NULL) {\r
- goto Done;\r
- }\r
-\r
- ZeroMem (Private, sizeof (WIN_NT_SIMPLE_TEXT_PRIVATE_DATA));\r
-\r
- Private->Signature = WIN_NT_SIMPLE_TEXT_PRIVATE_DATA_SIGNATURE;\r
- Private->Handle = Handle;\r
- Private->WinNtIo = WinNtIo;\r
- Private->WinNtThunk = WinNtIo->WinNtThunk;\r
-\r
- WinNtSimpleTextOutOpenWindow (Private);\r
- WinNtSimpleTextInAttachToWindow (Private);\r
-\r
- Status = gBS->InstallMultipleProtocolInterfaces (\r
- &Handle,\r
- &gEfiSimpleTextOutProtocolGuid,\r
- &Private->SimpleTextOut,\r
- &gEfiSimpleTextInProtocolGuid,\r
- &Private->SimpleTextIn,\r
- NULL\r
- );\r
- if (!EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
-Done:\r
- gBS->CloseProtocol (\r
- Handle,\r
- &gEfiWinNtIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Handle\r
- );\r
- if (Private != NULL) {\r
-\r
- FreeUnicodeStringTable (Private->ControllerNameTable);\r
-\r
- if (Private->NtOutHandle != NULL) {\r
- Private->WinNtThunk->CloseHandle (Private->NtOutHandle);\r
- }\r
-\r
- if (Private->SimpleTextIn.WaitForKey != NULL) {\r
- gBS->CloseEvent (Private->SimpleTextIn.WaitForKey);\r
- }\r
-\r
- FreePool (Private);\r
- }\r
-\r
- return Status;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtConsoleDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Handle - TODO: add argument description\r
- NumberOfChildren - TODO: add argument description\r
- ChildHandleBuffer - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_UNSUPPORTED - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOut;\r
- EFI_STATUS Status;\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- //\r
- // Kick people off our interface???\r
- //\r
- Status = gBS->OpenProtocol (\r
- Handle,\r
- &gEfiSimpleTextOutProtocolGuid,\r
- &SimpleTextOut,\r
- This->DriverBindingHandle,\r
- Handle,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return EFI_UNSUPPORTED;\r
- }\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (SimpleTextOut);\r
-\r
- ASSERT (Private->Handle == Handle);\r
-\r
- Status = gBS->UninstallMultipleProtocolInterfaces (\r
- Handle,\r
- &gEfiSimpleTextOutProtocolGuid,\r
- &Private->SimpleTextOut,\r
- &gEfiSimpleTextInProtocolGuid,\r
- &Private->SimpleTextIn,\r
- NULL\r
- );\r
- if (!EFI_ERROR (Status)) {\r
-\r
- //\r
- // Shut down our device\r
- //\r
- Status = gBS->CloseProtocol (\r
- Handle,\r
- &gEfiWinNtIoProtocolGuid,\r
- This->DriverBindingHandle,\r
- Handle\r
- );\r
-\r
- Status = gBS->CloseEvent (Private->SimpleTextIn.WaitForKey);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- Private->WinNtThunk->CloseHandle (Private->NtOutHandle);\r
- //\r
- // DO NOT close Private->NtInHandle. It points to StdIn and not\r
- // the Private->NtOutHandle is StdIn and should not be closed!\r
- //\r
- FreeUnicodeStringTable (Private->ControllerNameTable);\r
-\r
- FreePool (Private);\r
- }\r
-\r
- return Status;\r
-}\r
+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- Console.h\r
-\r
-Abstract:\r
-\r
- Console based on Win32 APIs.\r
-\r
- This file attaches a SimpleTextIn protocol to a previously open window.\r
- \r
- The constructor for this protocol depends on an open window. Currently\r
- the SimpleTextOut protocol creates a window when it's constructor is called.\r
- Thus this code must run after the constructor for the SimpleTextOut \r
- protocol\r
- \r
---*/\r
-\r
-#ifndef _CONSOLE_H_\r
-#define _CONSOLE_H_\r
-\r
-\r
-#define WIN_NT_SIMPLE_TEXT_PRIVATE_DATA_SIGNATURE \\r
- EFI_SIGNATURE_32('N','T','s','c')\r
-\r
-typedef struct {\r
- UINT64 Signature;\r
-\r
- EFI_HANDLE Handle;\r
-\r
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOut;\r
- EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutMode;\r
-\r
- EFI_WIN_NT_IO_PROTOCOL *WinNtIo;\r
- EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
-\r
- //\r
- // SimpleTextOut Private Data including Win32 types.\r
- //\r
- HANDLE NtOutHandle;\r
- HANDLE NtInHandle;\r
-\r
- COORD MaxScreenSize;\r
- COORD Possition;\r
- WORD Attribute;\r
- BOOLEAN CursorEnable;\r
-\r
- EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn;\r
-\r
- EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
-\r
-} WIN_NT_SIMPLE_TEXT_PRIVATE_DATA;\r
-\r
-#define WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS(a) \\r
- CR(a, WIN_NT_SIMPLE_TEXT_PRIVATE_DATA, SimpleTextOut, WIN_NT_SIMPLE_TEXT_PRIVATE_DATA_SIGNATURE)\r
-\r
-#define WIN_NT_SIMPLE_TEXT_IN_PRIVATE_DATA_FROM_THIS(a) \\r
- CR(a, WIN_NT_SIMPLE_TEXT_PRIVATE_DATA, SimpleTextIn, WIN_NT_SIMPLE_TEXT_PRIVATE_DATA_SIGNATURE)\r
-\r
-//\r
-// Console Globale Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gWinNtConsoleDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gWinNtConsoleComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gWinNtConsoleComponentName2;\r
-\r
-typedef struct {\r
- UINTN ColumnsX;\r
- UINTN RowsY;\r
-} WIN_NT_SIMPLE_TEXT_OUT_MODE;\r
-\r
-//\r
-// Simple Text Out protocol member functions\r
-//\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutReset (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ExtendedVerification - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutOutputString (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN CHAR16 *String\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- String - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutTestString (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN CHAR16 *String\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- String - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutQueryMode (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN ModeNumber,\r
- OUT UINTN *Columns,\r
- OUT UINTN *Rows\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ModeNumber - TODO: add argument description\r
- Columns - TODO: add argument description\r
- Rows - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutSetMode (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN ModeNumber\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ModeNumber - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutSetAttribute (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN Attribute\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Attribute - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutClearScreen (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutSetCursorPosition (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN Column,\r
- IN UINTN Row\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Column - TODO: add argument description\r
- Row - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutEnableCursor (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN BOOLEAN Enable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Enable - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-//\r
-// Simple Text Out constructor and destructor.\r
-//\r
-EFI_STATUS\r
-WinNtSimpleTextOutOpenWindow (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WinNtSimpleTextOutCloseWindow (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Console\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Console - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-//\r
-// Simple Text In protocol member functions.\r
-//\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextInReset (\r
- IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ExtendedVerification - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextInReadKeyStroke (\r
- IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
- OUT EFI_INPUT_KEY *Key\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Key - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-STATIC\r
-VOID\r
-EFIAPI\r
-WinNtSimpleTextInWaitForKey (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Event - TODO: add argument description\r
- Context - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-//\r
-// Simple Text In constructor\r
-//\r
-EFI_STATUS\r
-WinNtSimpleTextInAttachToWindow (\r
- IN WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-//\r
-// Main Entry Point\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-InitializeWinNtConsole (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- ImageHandle - TODO: add argument description\r
- SystemTable - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-AppendDevicePathInstanceToVar (\r
- IN CHAR16 *VariableName,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- VariableName - TODO: add argument description\r
- DevicePathInstance - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-#endif\r
+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-Module Name:\r
-\r
- ConsoleIn.c\r
-\r
-Abstract:\r
-\r
- Console based on Win32 APIs.\r
-\r
- This file attaches a SimpleTextIn protocol to a previously open window.\r
-\r
- The constructor for this protocol depends on an open window. Currently\r
- the SimpleTextOut protocol creates a window when it's constructor is called.\r
- Thus this code must run after the constructor for the SimpleTextOut\r
- protocol\r
-\r
---*/\r
-//\r
-// The package level header files this module uses\r
-//\r
-#include <Uefi.h>\r
-#include <WinNtDxe.h>\r
-//\r
-// The protocols, PPI and GUID defintions for this module\r
-//\r
-#include <Protocol/SimpleTextIn.h>\r
-#include <Protocol/WinNtIo.h>\r
-#include <Protocol/SimpleTextOut.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/DriverBinding.h>\r
-//\r
-// The Library classes this module consumes\r
-//\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include "Console.h"\r
-\r
-//\r
-// Private worker functions\r
-//\r
-STATIC\r
-EFI_STATUS\r
-WinNtSimpleTextInCheckKey (\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextInReset (\r
- IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ExtendedVerification - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_IN_PRIVATE_DATA_FROM_THIS (This);\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-WinNtConvertInputRecordToEfiKey (\r
- IN INPUT_RECORD *InputRecord,\r
- OUT EFI_INPUT_KEY *Key\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- InputRecord - TODO: add argument description\r
- Key - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_NOT_READY - TODO: Add description for return value\r
- EFI_NOT_READY - TODO: Add description for return value\r
- EFI_NOT_READY - TODO: Add description for return value\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- //\r
- // Make sure InputRecord is an event that represents a keypress\r
- //\r
- if (InputRecord->EventType == KEY_EVENT) {\r
- if (!InputRecord->Event.KeyEvent.bKeyDown) {\r
- return EFI_NOT_READY;\r
- }\r
- } else {\r
- return EFI_NOT_READY;\r
- }\r
-\r
- //\r
- // Check to see if we should return a scan code in place of Unicode character.\r
- //\r
- Key->ScanCode = 0;\r
- Key->UnicodeChar = 0;\r
- if ((InputRecord->Event.KeyEvent.dwControlKeyState & (NUMLOCK_ON | ENHANCED_KEY)) != NUMLOCK_ON) {\r
- //\r
- // Only check these scan codes if num lock is off.\r
- //\r
- switch (InputRecord->Event.KeyEvent.wVirtualScanCode) {\r
- case 0x48: Key->ScanCode = SCAN_UP; break;\r
- case 0x50: Key->ScanCode = SCAN_DOWN; break;\r
- case 0x4d: Key->ScanCode = SCAN_RIGHT; break;\r
- case 0x4b: Key->ScanCode = SCAN_LEFT; break;\r
- case 0x47: Key->ScanCode = SCAN_HOME; break;\r
- case 0x4F: Key->ScanCode = SCAN_END; break;\r
- case 0x52: Key->ScanCode = SCAN_INSERT; break;\r
- case 0x53: Key->ScanCode = SCAN_DELETE; break;\r
- case 0x49: Key->ScanCode = SCAN_PAGE_UP; break;\r
- case 0x51: Key->ScanCode = SCAN_PAGE_DOWN; break;\r
- }\r
- }\r
-\r
- switch (InputRecord->Event.KeyEvent.wVirtualScanCode) {\r
- case 0x3b: Key->ScanCode = SCAN_F1; break;\r
- case 0x3c: Key->ScanCode = SCAN_F2; break;\r
- case 0x3d: Key->ScanCode = SCAN_F3; break;\r
- case 0x3e: Key->ScanCode = SCAN_F4; break;\r
- case 0x3f: Key->ScanCode = SCAN_F5; break;\r
- case 0x40: Key->ScanCode = SCAN_F6; break;\r
- case 0x41: Key->ScanCode = SCAN_F7; break;\r
- case 0x42: Key->ScanCode = SCAN_F8; break;\r
- case 0x43: Key->ScanCode = SCAN_F9; break;\r
- case 0x44: Key->ScanCode = SCAN_F10; break;\r
- case 0x01: Key->ScanCode = SCAN_ESC; break;\r
- }\r
-\r
- //\r
- // If there's a scan code pass it, and don't pass the char code\r
- //\r
- if (Key->ScanCode == 0) {\r
- Key->UnicodeChar = InputRecord->Event.KeyEvent.uChar.UnicodeChar;\r
- if (Key->UnicodeChar == 0) {\r
- return EFI_NOT_READY;\r
- }\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextInReadKeyStroke (\r
- IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
- OUT EFI_INPUT_KEY *Key\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Key - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_DEVICE_ERROR - TODO: Add description for return value\r
- EFI_NOT_READY - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- EFI_STATUS Status;\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
- INPUT_RECORD InputRecord;\r
- DWORD NtEventCount;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_IN_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- Status = WinNtSimpleTextInCheckKey (Private);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
- do {\r
-\r
- if (!Private->WinNtThunk->ReadConsoleInput (Private->NtInHandle, &InputRecord, 1, &NtEventCount)) {\r
- return EFI_DEVICE_ERROR;\r
- }\r
-\r
- if (NtEventCount == 0) {\r
- return EFI_NOT_READY;\r
- }\r
-\r
- //\r
- // Convert the Input Record to an EFI Keystroke.\r
- //\r
- Status = WinNtConvertInputRecordToEfiKey (&InputRecord, Key);\r
- } while (EFI_ERROR (Status));\r
-\r
- return Status;\r
-}\r
-\r
-STATIC\r
-VOID\r
-EFIAPI\r
-WinNtSimpleTextInWaitForKey (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Event - TODO: add argument description\r
- Context - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
- EFI_STATUS Status;\r
-\r
- Private = (WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *) Context;\r
- Status = WinNtSimpleTextInCheckKey (Private);\r
- if (!EFI_ERROR (Status)) {\r
- gBS->SignalEvent (Event);\r
- }\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-WinNtSimpleTextInCheckKey (\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-{\r
- INPUT_RECORD *InputRecord;\r
- DWORD NtEventCount;\r
- DWORD ActualNtEventCount;\r
- EFI_STATUS Status;\r
- BOOLEAN Success;\r
- UINTN Index;\r
- EFI_INPUT_KEY Key;\r
-\r
- InputRecord = NULL;\r
- NtEventCount = 0;\r
- Private->WinNtThunk->GetNumberOfConsoleInputEvents (Private->NtInHandle, &NtEventCount);\r
- if (NtEventCount == 0) {\r
- Status = EFI_NOT_READY;\r
- goto Done;\r
- }\r
-\r
- InputRecord = AllocatePool (sizeof (INPUT_RECORD) * NtEventCount);\r
- if (InputRecord == NULL) {\r
- Status = EFI_NOT_READY;\r
- goto Done;\r
- }\r
-\r
- Success = (BOOLEAN) Private->WinNtThunk->PeekConsoleInput (\r
- Private->NtInHandle,\r
- InputRecord,\r
- NtEventCount,\r
- &ActualNtEventCount\r
- );\r
- if (!Success) {\r
- Status = EFI_NOT_READY;\r
- goto Done;\r
- }\r
-\r
- Status = EFI_NOT_READY;\r
- for (Index = 0; Index < (UINTN) ActualNtEventCount; Index++) {\r
- //\r
- // Convert the Input Record to an EFI Keystroke.\r
- //\r
- Status = WinNtConvertInputRecordToEfiKey (&InputRecord[Index], &Key);\r
- if (!EFI_ERROR (Status)) {\r
- Status = EFI_SUCCESS;\r
- goto Done;\r
- }\r
- }\r
-\r
-Done:\r
- if (InputRecord != NULL) {\r
- FreePool (InputRecord);\r
- }\r
-\r
- return Status;\r
-}\r
-\r
-EFI_STATUS\r
-WinNtSimpleTextInAttachToWindow (\r
- IN WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-{\r
- EFI_STATUS Status;\r
-\r
- Private->NtInHandle = Private->WinNtThunk->GetStdHandle (STD_INPUT_HANDLE);\r
-\r
- Private->SimpleTextIn.Reset = WinNtSimpleTextInReset;\r
- Private->SimpleTextIn.ReadKeyStroke = WinNtSimpleTextInReadKeyStroke;\r
-\r
- Status = gBS->CreateEvent (\r
- EVT_NOTIFY_WAIT,\r
- TPL_NOTIFY,\r
- WinNtSimpleTextInWaitForKey,\r
- Private,\r
- &Private->SimpleTextIn.WaitForKey\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- return Status;\r
-}\r
+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- ConsoleOut.c\r
-\r
-Abstract:\r
-\r
- Console based on Win32 APIs. \r
-\r
- This file creates an Win32 window and attaches a SimpleTextOut protocol.\r
-\r
---*/\r
-\r
-//\r
-// The package level header files this module uses\r
-//\r
-#include <Uefi.h>\r
-#include <WinNtDxe.h>\r
-//\r
-// The protocols, PPI and GUID defintions for this module\r
-//\r
-#include <Protocol/SimpleTextIn.h>\r
-#include <Protocol/WinNtIo.h>\r
-#include <Protocol/SimpleTextOut.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/DriverBinding.h>\r
-//\r
-// The Library classes this module consumes\r
-//\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-\r
-\r
-#include "Console.h"\r
-//\r
-// Private worker functions.\r
-//\r
-\r
-STATIC\r
-VOID\r
-WinNtSimpleTextOutScrollScreen (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Console\r
- );\r
-\r
-STATIC\r
-VOID\r
-WinNtSimpleTextOutPutChar (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Console,\r
- IN CHAR16 Char\r
- );\r
-\r
-//\r
-// Modeule Global for Simple Text Out Mode.\r
-//\r
-#define MAX_SIMPLE_TEXT_OUT_MODE \\r
- (sizeof(mWinNtSimpleTextOutSupportedModes)/sizeof(WIN_NT_SIMPLE_TEXT_OUT_MODE))\r
-\r
-STATIC WIN_NT_SIMPLE_TEXT_OUT_MODE mWinNtSimpleTextOutSupportedModes[] = {\r
- { 80, 25 }, \r
- { 80, 50 }, \r
- { 80, 43 }, \r
- { 100, 100 }, \r
- { 100, 999 } \r
-};\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutReset (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ExtendedVerification - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- WinNtSimpleTextOutSetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BACKGROUND_BLACK));\r
-\r
- WinNtSimpleTextOutSetMode (This, 0);\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutOutputString (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN CHAR16 *String\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- String - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
- CHAR16 *Str;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- for (Str = String; *Str != '\0'; Str++) {\r
- switch (*Str) {\r
- case '\n':\r
- if (Private->Possition.Y == (Private->MaxScreenSize.Y - 1)) {\r
- WinNtSimpleTextOutScrollScreen (Private);\r
- }\r
-\r
- if (Private->Possition.Y < (Private->MaxScreenSize.Y - 1)) {\r
- Private->Possition.Y++;\r
- This->Mode->CursorRow++;\r
- }\r
- break;\r
-\r
- case '\r':\r
- Private->Possition.X = 0;\r
- This->Mode->CursorColumn = 0;\r
- break;\r
-\r
- case '\b':\r
- if (Private->Possition.X > 0) {\r
- Private->Possition.X--;\r
- This->Mode->CursorColumn--;\r
- }\r
- break;\r
-\r
- default:\r
- WinNtSimpleTextOutPutChar (Private, *Str);\r
- }\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-VOID\r
-WinNtSimpleTextOutPutChar (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Console,\r
- IN CHAR16 Char\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Console - TODO: add argument description\r
- Char - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-{\r
- SMALL_RECT Region;\r
- COORD StrCoordinate;\r
- COORD StrSize;\r
- CHAR_INFO CharInfo;\r
- BOOL Flag;\r
-\r
- CharInfo.Char.UnicodeChar = Char;\r
- CharInfo.Attributes = Console->Attribute;\r
-\r
- StrSize.X = 1;\r
- StrSize.Y = 1;\r
- StrCoordinate.X = 0;\r
- StrCoordinate.Y = 0;\r
-\r
- Region.Left = (INT16) Console->Possition.X;\r
- Region.Top = (INT16) Console->Possition.Y;\r
- Region.Right = (INT16) (Console->Possition.X + 1);\r
- Region.Bottom = (INT16) Console->Possition.Y;\r
-\r
- Console->WinNtThunk->WriteConsoleOutput (\r
- Console->NtOutHandle,\r
- &CharInfo,\r
- StrSize,\r
- StrCoordinate,\r
- &Region\r
- );\r
-\r
- if (Console->Possition.X >= (Console->MaxScreenSize.X - 1)) {\r
- //\r
- // If you print off the end wrap around\r
- //\r
- Console->SimpleTextOut.OutputString (&Console->SimpleTextOut, L"\n\r");\r
- } else {\r
- Console->Possition.X++;\r
- Console->SimpleTextOut.Mode->CursorColumn++;\r
- }\r
-\r
- Flag = Console->WinNtThunk->SetConsoleCursorPosition (Console->NtOutHandle, Console->Possition);\r
-}\r
-\r
-STATIC\r
-VOID\r
-WinNtSimpleTextOutScrollScreen (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Console\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Console - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-{\r
- SMALL_RECT Scroll;\r
- CHAR_INFO CharInfo;\r
- COORD Origin;\r
-\r
- CharInfo.Char.UnicodeChar = ' ';\r
- CharInfo.Attributes = Console->Attribute;\r
-\r
- Origin.X = 0;\r
- Origin.Y = 0;\r
-\r
- Scroll.Top = 1;\r
- Scroll.Left = 0;\r
- Scroll.Right = (INT16) Console->MaxScreenSize.X;\r
- Scroll.Bottom = (INT16) Console->MaxScreenSize.Y;\r
-\r
- Console->WinNtThunk->ScrollConsoleScreenBuffer (\r
- Console->NtOutHandle,\r
- &Scroll,\r
- NULL,\r
- Origin,\r
- &CharInfo\r
- );\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutTestString (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN CHAR16 *String\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- String - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- //\r
- // BugBug: The correct answer would be a function of what code pages\r
- // are currently loaded? For now we will just return success.\r
- //\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutQueryMode (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN ModeNumber,\r
- OUT UINTN *Columns,\r
- OUT UINTN *Rows\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ModeNumber - TODO: add argument description\r
- Columns - TODO: add argument description\r
- Rows - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - TODO: Add description for return value\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- if (ModeNumber > MAX_SIMPLE_TEXT_OUT_MODE) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- *Columns = mWinNtSimpleTextOutSupportedModes[ModeNumber].ColumnsX;\r
- *Rows = mWinNtSimpleTextOutSupportedModes[ModeNumber].RowsY;\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutSetMode (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN ModeNumber\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ModeNumber - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - TODO: Add description for return value\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- if (ModeNumber > MAX_SIMPLE_TEXT_OUT_MODE) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- Private->MaxScreenSize.X = (WORD) mWinNtSimpleTextOutSupportedModes[ModeNumber].ColumnsX;\r
- Private->MaxScreenSize.Y = (WORD) mWinNtSimpleTextOutSupportedModes[ModeNumber].RowsY;\r
-\r
- Private->WinNtThunk->SetConsoleScreenBufferSize (Private->NtOutHandle, Private->MaxScreenSize);\r
- Private->WinNtThunk->SetConsoleActiveScreenBuffer (Private->NtOutHandle);\r
-\r
- This->Mode->Mode = (INT32) ModeNumber;\r
-\r
- This->EnableCursor (This, TRUE);\r
- This->ClearScreen (This);\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutSetAttribute (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN Attribute\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Attribute - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- Private->Attribute = (WORD) Attribute;\r
- This->Mode->Attribute = (INT32) Attribute;\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutClearScreen (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
- DWORD ConsoleWindow;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- This->SetCursorPosition (This, 0, 0);\r
-\r
- Private->WinNtThunk->FillConsoleOutputCharacter (\r
- Private->NtOutHandle,\r
- ' ',\r
- Private->MaxScreenSize.X * Private->MaxScreenSize.Y,\r
- Private->Possition,\r
- &ConsoleWindow\r
- );\r
- Private->WinNtThunk->FillConsoleOutputAttribute (\r
- Private->NtOutHandle,\r
- Private->Attribute,\r
- Private->MaxScreenSize.X * Private->MaxScreenSize.Y,\r
- Private->Possition,\r
- &ConsoleWindow\r
- );\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutSetCursorPosition (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN UINTN Column,\r
- IN UINTN Row\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Column - TODO: add argument description\r
- Row - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
-\r
- Private->Possition.X = (WORD) Column;\r
- This->Mode->CursorColumn = (INT32) Column;\r
-\r
- Private->Possition.Y = (WORD) Row;\r
- This->Mode->CursorRow = (INT32) Row;\r
- Private->WinNtThunk->SetConsoleCursorPosition (Private->NtOutHandle, Private->Possition);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-STATIC\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtSimpleTextOutEnableCursor (\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
- IN BOOLEAN Enable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Enable - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private;\r
- CONSOLE_CURSOR_INFO Info;\r
-\r
- Private = WIN_NT_SIMPLE_TEXT_OUT_PRIVATE_DATA_FROM_THIS (This);\r
- Private->CursorEnable = Enable;\r
- This->Mode->CursorVisible = Enable;\r
-\r
- Private->WinNtThunk->GetConsoleCursorInfo (Private->NtOutHandle, &Info);\r
- Info.bVisible = Enable;\r
- Private->WinNtThunk->SetConsoleCursorInfo (Private->NtOutHandle, &Info);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-WinNtSimpleTextOutOpenWindow (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-{\r
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOut;\r
- CHAR16 *WindowName;\r
-\r
- WindowName = Private->WinNtIo->EnvString;\r
- Private->Attribute = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY;\r
- if (*WindowName == '?') {\r
- Private->Attribute = BACKGROUND_RED | FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN;\r
- WindowName = L"EFI Emulator Error Console";\r
- }\r
-\r
- AddUnicodeString2 (\r
- "eng",\r
- gWinNtConsoleComponentName.SupportedLanguages,\r
- &Private->ControllerNameTable,\r
- WindowName,\r
- TRUE\r
- );\r
- AddUnicodeString2 (\r
- "en",\r
- gWinNtConsoleComponentName2.SupportedLanguages,\r
- &Private->ControllerNameTable,\r
- WindowName,\r
- FALSE\r
- );\r
-\r
-\r
- //\r
- // Fill in protocol member functions\r
- //\r
- SimpleTextOut = &Private->SimpleTextOut;\r
- SimpleTextOut->Reset = WinNtSimpleTextOutReset;\r
- SimpleTextOut->OutputString = WinNtSimpleTextOutOutputString;\r
- SimpleTextOut->TestString = WinNtSimpleTextOutTestString;\r
- SimpleTextOut->QueryMode = WinNtSimpleTextOutQueryMode;\r
- SimpleTextOut->SetMode = WinNtSimpleTextOutSetMode;\r
- SimpleTextOut->SetAttribute = WinNtSimpleTextOutSetAttribute;\r
- SimpleTextOut->ClearScreen = WinNtSimpleTextOutClearScreen;\r
- SimpleTextOut->SetCursorPosition = WinNtSimpleTextOutSetCursorPosition;\r
- SimpleTextOut->EnableCursor = WinNtSimpleTextOutEnableCursor;\r
-\r
- //\r
- // Initialize SimpleTextOut protocol mode structure\r
- //\r
- SimpleTextOut->Mode = &Private->SimpleTextOutMode;\r
- SimpleTextOut->Mode->MaxMode = MAX_SIMPLE_TEXT_OUT_MODE;\r
- SimpleTextOut->Mode->Attribute = (INT32) Private->Attribute;\r
-\r
- //\r
- // Open the window an initialize it!\r
- //\r
- Private->NtOutHandle = Private->WinNtThunk->CreateConsoleScreenBuffer (\r
- GENERIC_WRITE | GENERIC_READ,\r
- FILE_SHARE_WRITE | FILE_SHARE_READ,\r
- NULL,\r
- CONSOLE_TEXTMODE_BUFFER,\r
- NULL\r
- );\r
- Private->WinNtThunk->SetConsoleTitle (WindowName);\r
-\r
- return SimpleTextOut->SetMode (SimpleTextOut, 0);\r
-}\r
-\r
-EFI_STATUS\r
-WinNtSimpleTextOutCloseWindow (\r
- IN OUT WIN_NT_SIMPLE_TEXT_PRIVATE_DATA *Console\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Console - TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - TODO: Add description for return value\r
-\r
---*/\r
-{\r
- Console->WinNtThunk->CloseHandle (Console->NtOutHandle);\r
- return EFI_SUCCESS;\r
-}\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r
- <MsaHeader>\r
- <ModuleName>WinNtConsole</ModuleName>\r
- <ModuleType>UEFI_DRIVER</ModuleType>\r
- <GuidValue>263631d7-5836-4b74-be48-ee22e92ce5d3</GuidValue>\r
- <Version>1.0</Version>\r
- <Abstract>Console Dxe driver</Abstract>\r
- <Description>Simulate console with WinAPI</Description>\r
- <Copyright>Copyright (c) 2006 - 2007, Intel Corporation</Copyright>\r
- <License>All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.</License>\r
- <Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>\r
- </MsaHeader>\r
- <ModuleDefinitions>\r
- <SupportedArchitectures>IA32</SupportedArchitectures>\r
- <BinaryModule>false</BinaryModule>\r
- <OutputFileBasename>WinNtConsole</OutputFileBasename>\r
- </ModuleDefinitions>\r
- <LibraryClassDefinitions>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>DebugLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>BaseLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>UefiDriverModelLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>UefiDriverEntryPoint</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>UefiLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>BaseMemoryLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>UefiBootServicesTableLib</Keyword>\r
- </LibraryClass>\r
- <LibraryClass Usage="ALWAYS_CONSUMED">\r
- <Keyword>MemoryAllocationLib</Keyword>\r
- </LibraryClass>\r
- </LibraryClassDefinitions>\r
- <SourceFiles>\r
- <Filename>Console.h</Filename>\r
- <Filename>Console.c</Filename>\r
- <Filename>ConsoleIn.c</Filename>\r
- <Filename>ConsoleOut.c</Filename>\r
- <Filename>ComponentName.c</Filename>\r
- </SourceFiles>\r
- <PackageDependencies>\r
- <Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>\r
- <Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>\r
- </PackageDependencies>\r
- <Protocols>\r
- <Protocol Usage="TO_START">\r
- <ProtocolCName>gEfiWinNtIoProtocolGuid</ProtocolCName>\r
- </Protocol>\r
- <Protocol Usage="BY_START">\r
- <ProtocolCName>gEfiSimpleTextOutProtocolGuid</ProtocolCName>\r
- </Protocol>\r
- <Protocol Usage="BY_START">\r
- <ProtocolCName>gEfiSimpleTextInProtocolGuid</ProtocolCName>\r
- </Protocol>\r
- </Protocols>\r
- <Guids>\r
- <GuidCNames Usage="ALWAYS_CONSUMED">\r
- <GuidCName>gEfiWinNtConsoleGuid</GuidCName>\r
- </GuidCNames>\r
- </Guids>\r
- <Externs>\r
- <Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>\r
- <Specification>EDK_RELEASE_VERSION 0x00020000</Specification>\r
- <Extern>\r
- <DriverBinding>gWinNtConsoleDriverBinding</DriverBinding>\r
- <ComponentName>gWinNtConsoleComponentName</ComponentName>\r
- </Extern>\r
- </Externs>\r
-</ModuleSurfaceArea>
\ No newline at end of file
+++ /dev/null
-#/** @file\r
-# Console Dxe driver\r
-#\r
-# Simulate console with WinAPI\r
-# Copyright (c) 2006 - 2007, Intel Corporation\r
-#\r
-# All rights reserved. This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution. The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-#\r
-#**/\r
-\r
-[Defines]\r
- INF_VERSION = 0x00010005\r
- BASE_NAME = WinNtConsole\r
- FILE_GUID = 263631d7-5836-4b74-be48-ee22e92ce5d3\r
- MODULE_TYPE = UEFI_DRIVER\r
- VERSION_STRING = 1.0\r
- EDK_RELEASE_VERSION = 0x00020000\r
- EFI_SPECIFICATION_VERSION = 0x00020000\r
-\r
- ENTRY_POINT = InitializeWinNtConsole\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-# VALID_ARCHITECTURES = IA32\r
-#\r
-# DRIVER_BINDING = gWinNtConsoleDriverBinding \r
-# COMPONENT_NAME = gWinNtConsoleComponentName \r
-#\r
-\r
-[Sources.common]\r
- ComponentName.c\r
- ConsoleOut.c\r
- ConsoleIn.c\r
- Console.c\r
- Console.h\r
-\r
-\r
-[Packages]\r
- MdePkg/MdePkg.dec\r
- Nt32Pkg/Nt32Pkg.dec\r
-\r
-\r
-[LibraryClasses]\r
- MemoryAllocationLib\r
- UefiBootServicesTableLib\r
- BaseMemoryLib\r
- UefiLib\r
- UefiDriverEntryPoint\r
- BaseLib\r
- DebugLib\r
-\r
-\r
-[Guids]\r
- gEfiWinNtConsoleGuid # ALWAYS_CONSUMED\r
-\r
-\r
-[Protocols]\r
- gEfiSimpleTextInProtocolGuid # PROTOCOL BY_START\r
- gEfiSimpleTextOutProtocolGuid # PROTOCOL BY_START\r
- gEfiWinNtIoProtocolGuid # PROTOCOL TO_START\r
-\r