3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Private data for the Gop driver that is bound to the WinNt Thunk protocol
23 #ifndef _WIN_NT_GOP_H_
24 #define _WIN_NT_GOP_H_
27 // Include common header file for this module.
29 #include "CommonHeader.h"
31 //@MT:#include "EfiWinNT.h"
32 //@MT:#include "Tiano.h"
33 //@MT:#include "EfiDriverLib.h"
36 // Driver Consumed Protocols
38 //@MT:#include EFI_PROTOCOL_DEFINITION (DevicePath)
39 //@MT:#include EFI_PROTOCOL_DEFINITION (WinNtIo)
42 // Driver Produced Protocols
44 //@MT:#include EFI_PROTOCOL_DEFINITION (DriverBinding)
45 //@MT:#include EFI_PROTOCOL_DEFINITION (ComponentName)
46 //@MT:#include EFI_PROTOCOL_DEFINITION (GraphicsOutput)
47 //@MT:#include "LinkedList.h"
55 EFI_INPUT_KEY Q
[MAX_Q
];
58 #define WIN_NT_GOP_CLASS_NAME L"WinNtGopWindow"
60 #define GOP_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('S', 'g', 'o', 'N')
62 #define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff
65 UINT32 HorizontalResolution
;
66 UINT32 VerticalResolution
;
75 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput
;
76 EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn
;
78 EFI_WIN_NT_THUNK_PROTOCOL
*WinNtThunk
;
80 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
83 // GOP Private Data for QueryMode ()
85 GOP_MODE_DATA
*ModeData
;
88 // GOP Private Data knowing when to start hardware
90 BOOLEAN HardwareNeedsStarting
;
95 HANDLE ThreadInited
; // Semaphore
96 HANDLE ThreadHandle
; // Thread
100 WNDCLASSEX WindowsClass
;
103 // This screen is used to redraw the scree when windows events happen. It's
104 // updated in the main thread and displayed in the windows thread.
106 BITMAPV4HEADER
*VirtualScreenInfo
;
107 RGBQUAD
*VirtualScreen
;
109 EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*FillLine
;
112 // Keyboard Queue used by Simple Text In. WinProc thread adds, and main
115 CRITICAL_SECTION QCriticalSection
;
116 GOP_QUEUE_FIXED Queue
;
120 #define GOP_PRIVATE_DATA_FROM_THIS(a) \
121 CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE)
123 #define GOP_PRIVATE_DATA_FROM_TEXT_IN_THIS(a) \
124 CR(a, GOP_PRIVATE_DATA, SimpleTextIn, GOP_PRIVATE_DATA_SIGNATURE)
127 // Global Protocol Variables
129 extern EFI_DRIVER_BINDING_PROTOCOL gWinNtGopDriverBinding
;
130 extern EFI_COMPONENT_NAME_PROTOCOL gWinNtGopComponentName
;
133 // Gop Hardware abstraction internal worker functions
137 TODO: Add function description
139 @param WinNtIo TODO: add argument description
141 @return TODO: add return values
146 IN EFI_WIN_NT_IO_PROTOCOL
*WinNtIo
152 TODO: Add function description
154 @param Private TODO: add argument description
156 @return TODO: add return values
160 WinNtGopConstructor (
161 IN GOP_PRIVATE_DATA
*Private
167 TODO: Add function description
169 @param Private TODO: add argument description
171 @return TODO: add return values
176 IN GOP_PRIVATE_DATA
*Private
181 // EFI 1.1 driver model prototypes for Win NT GOP
186 TODO: Add function description
188 @param ImageHandle TODO: add argument description
189 @param SystemTable TODO: add argument description
191 @return TODO: add return values
197 IN EFI_HANDLE ImageHandle
,
198 IN EFI_SYSTEM_TABLE
*SystemTable
204 TODO: Add function description
206 @param This TODO: add argument description
207 @param Handle TODO: add argument description
208 @param RemainingDevicePath TODO: add argument description
210 @return TODO: add return values
215 WinNtGopDriverBindingSupported (
216 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
217 IN EFI_HANDLE Handle
,
218 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
224 TODO: Add function description
226 @param This TODO: add argument description
227 @param Handle TODO: add argument description
228 @param RemainingDevicePath TODO: add argument description
230 @return TODO: add return values
235 WinNtGopDriverBindingStart (
236 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
237 IN EFI_HANDLE Handle
,
238 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
244 TODO: Add function description
246 @param This TODO: add argument description
247 @param Handle TODO: add argument description
248 @param NumberOfChildren TODO: add argument description
249 @param ChildHandleBuffer TODO: add argument description
251 @return TODO: add return values
256 WinNtGopDriverBindingStop (
257 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
258 IN EFI_HANDLE Handle
,
259 IN UINTN NumberOfChildren
,
260 IN EFI_HANDLE
*ChildHandleBuffer
266 TODO: Add function description
268 @param Private TODO: add argument description
269 @param Key TODO: add argument description
271 @return TODO: add return values
276 IN GOP_PRIVATE_DATA
*Private
,
283 TODO: Add function description
285 @param Private TODO: add argument description
287 @return TODO: add return values
291 WinNtGopInitializeSimpleTextInForWindow (
292 IN GOP_PRIVATE_DATA
*Private
298 TODO: Add function description
300 @param Private TODO: add argument description
302 @return TODO: add return values
306 WinNtGopDestroySimpleTextInForWindow (
307 IN GOP_PRIVATE_DATA
*Private
313 TODO: Add function description
315 @param String TODO: add argument description
317 @return TODO: add return values