+++ /dev/null
-/** @file\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
- WinNtGop.h\r
-\r
-Abstract:\r
-\r
- Private data for the Gop driver that is bound to the WinNt Thunk protocol\r
-\r
-\r
-**/\r
-\r
-#ifndef _WIN_NT_GOP_H_\r
-#define _WIN_NT_GOP_H_\r
-\r
-\r
-#include <Uefi.h>\r
-#include <WinNtDxe.h>\r
-\r
-#include <Guid/EventGroup.h>\r
-#include <Protocol/WinNtIo.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/SimpleTextIn.h>\r
-#include <Protocol/SimpleTextInEx.h>\r
-#include <Protocol/DriverBinding.h>\r
-#include <Protocol/GraphicsOutput.h>\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
-// WM_SYSKEYDOWN/WM_SYSKEYUP Notification\r
-// lParam\r
-// bit 24: Specifies whether the key is an extended key, \r
-// such as the right-hand ALT and CTRL keys that appear on \r
-// an enhanced 101- or 102-key keyboard. \r
-// The value is 1 if it is an extended key; otherwise, it is 0.\r
-// bit 29:Specifies the context code. \r
-// The value is 1 if the ALT key is down while the key is pressed/released; \r
-// it is 0 if the WM_SYSKEYDOWN message is posted to the active window \r
-// because no window has the keyboard focus.\r
-#define GOP_EXTENDED_KEY (0x1 << 24)\r
-#define GOP_ALT_KEY_PRESSED (0x1 << 29)\r
-\r
-\r
-#define MAX_Q 256\r
-\r
-typedef struct {\r
- UINTN Front;\r
- UINTN Rear;\r
- UINTN Count;\r
- EFI_INPUT_KEY Q[MAX_Q];\r
-} GOP_QUEUE_FIXED;\r
-\r
-#define WIN_NT_GOP_CLASS_NAME L"WinNtGopWindow"\r
-\r
-#define GOP_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('S', 'g', 'o', 'N')\r
-\r
-#define WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('W', 'g', 'S', 'n')\r
-\r
-typedef struct _WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY {\r
- UINTN Signature;\r
- EFI_HANDLE NotifyHandle;\r
- EFI_KEY_DATA KeyData;\r
- EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
- LIST_ENTRY NotifyEntry;\r
-} WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY;\r
-\r
-#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff\r
-\r
-typedef struct {\r
- UINT32 HorizontalResolution;\r
- UINT32 VerticalResolution;\r
- UINT32 ColorDepth;\r
- UINT32 RefreshRate;\r
-} GOP_MODE_DATA;\r
-\r
-typedef struct {\r
- UINT64 Signature;\r
-\r
- EFI_HANDLE Handle;\r
- EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
- EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn;\r
-\r
- EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
-\r
- EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
-\r
- //\r
- // GOP Private Data for QueryMode ()\r
- //\r
- GOP_MODE_DATA *ModeData;\r
-\r
- //\r
- // GOP Private Data knowing when to start hardware\r
- //\r
- BOOLEAN HardwareNeedsStarting;\r
-\r
- CHAR16 *WindowName;\r
- CHAR16 Buffer[160];\r
-\r
- HANDLE ThreadInited; // Semaphore\r
- HANDLE ThreadHandle; // Thread\r
- DWORD ThreadId;\r
-\r
- HWND WindowHandle;\r
- WNDCLASSEX WindowsClass;\r
-\r
- //\r
- // This screen is used to redraw the scree when windows events happen. It's\r
- // updated in the main thread and displayed in the windows thread.\r
- //\r
- BITMAPV4HEADER *VirtualScreenInfo;\r
- RGBQUAD *VirtualScreen;\r
-\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FillLine;\r
-\r
- //\r
- // Keyboard Queue used by Simple Text In. WinProc thread adds, and main\r
- // thread removes.\r
- //\r
- CRITICAL_SECTION QCriticalSection;\r
- GOP_QUEUE_FIXED Queue;\r
-\r
- EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInEx;\r
- EFI_KEY_STATE KeyState;\r
- LIST_ENTRY NotifyList;\r
- BOOLEAN LeftShift;\r
- BOOLEAN RightShift; \r
- BOOLEAN LeftAlt;\r
- BOOLEAN RightAlt;\r
- BOOLEAN LeftCtrl;\r
- BOOLEAN RightCtrl;\r
- BOOLEAN LeftLogo;\r
- BOOLEAN RightLogo;\r
- BOOLEAN Menu;\r
- BOOLEAN SysReq; \r
- BOOLEAN NumLock;\r
- BOOLEAN ScrollLock;\r
- BOOLEAN CapsLock; \r
-} GOP_PRIVATE_DATA;\r
-\r
-#define GOP_PRIVATE_DATA_FROM_THIS(a) \\r
- CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE)\r
-\r
-#define GOP_PRIVATE_DATA_FROM_TEXT_IN_THIS(a) \\r
- CR(a, GOP_PRIVATE_DATA, SimpleTextIn, GOP_PRIVATE_DATA_SIGNATURE)\r
-\r
-#define GOP_PRIVATE_DATA_FROM_TEXT_IN_EX_THIS(a) \\r
- CR(a, GOP_PRIVATE_DATA, SimpleTextInEx, GOP_PRIVATE_DATA_SIGNATURE)\r
-\r
-//\r
-// Global Protocol Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gWinNtGopDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gWinNtGopComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gWinNtGopComponentName2;\r
-\r
-\r
-//\r
-// Gop Hardware abstraction internal worker functions\r
-//\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param WinNtIo TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-WinNtGopSupported (\r
- IN EFI_WIN_NT_IO_PROTOCOL *WinNtIo\r
- );\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param Private TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-WinNtGopConstructor (\r
- IN GOP_PRIVATE_DATA *Private\r
- );\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param Private TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-WinNtGopDestructor (\r
- IN GOP_PRIVATE_DATA *Private\r
- );\r
-\r
-//\r
-// UEFI 2.0 driver model prototypes for Win NT GOP\r
-//\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param ImageHandle TODO: add argument description\r
- @param SystemTable TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtGopInitialize (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- );\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param This TODO: add argument description\r
- @param Handle TODO: add argument description\r
- @param RemainingDevicePath TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtGopDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- );\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param This TODO: add argument description\r
- @param Handle TODO: add argument description\r
- @param RemainingDevicePath TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtGopDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- );\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param This TODO: add argument description\r
- @param Handle TODO: add argument description\r
- @param NumberOfChildren TODO: add argument description\r
- @param ChildHandleBuffer TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtGopDriverBindingStop (\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
-/**\r
- TODO: Add function description\r
-\r
- @param Private TODO: add argument description\r
- @param Key TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-GopPrivateAddQ (\r
- IN GOP_PRIVATE_DATA *Private,\r
- IN EFI_INPUT_KEY Key\r
- );\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param Private TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-WinNtGopInitializeSimpleTextInForWindow (\r
- IN GOP_PRIVATE_DATA *Private\r
- );\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param Private TODO: add argument description\r
-\r
- @return TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-WinNtGopDestroySimpleTextInForWindow (\r
- IN GOP_PRIVATE_DATA *Private\r
- );\r
-\r
-\r
-\r
-#endif\r