]> git.proxmox.com Git - mirror_edk2.git/blob - Nt32Pkg/WinNtGopDxe/WinNtGop.h
clean up the un-suitable ';' location when declaring the functions.
[mirror_edk2.git] / Nt32Pkg / WinNtGopDxe / WinNtGop.h
1 /** @file
2
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
8
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.
11
12 Module Name:
13
14 WinNtGop.h
15
16 Abstract:
17
18 Private data for the Gop driver that is bound to the WinNt Thunk protocol
19
20
21 **/
22
23 #ifndef _WIN_NT_GOP_H_
24 #define _WIN_NT_GOP_H_
25
26
27 #include <Uefi.h>
28 #include <WinNtDxe.h>
29
30 #include <Guid/EventGroup.h>
31 #include <Protocol/WinNtIo.h>
32 #include <Protocol/ComponentName.h>
33 #include <Protocol/SimpleTextIn.h>
34 #include <Protocol/SimpleTextInEx.h>
35 #include <Protocol/DriverBinding.h>
36 #include <Protocol/GraphicsOutput.h>
37
38 #include <Library/DebugLib.h>
39 #include <Library/BaseLib.h>
40 #include <Library/UefiDriverEntryPoint.h>
41 #include <Library/UefiLib.h>
42 #include <Library/BaseMemoryLib.h>
43 #include <Library/UefiBootServicesTableLib.h>
44 #include <Library/MemoryAllocationLib.h>
45
46 //
47 // WM_SYSKEYDOWN/WM_SYSKEYUP Notification
48 // lParam
49 // bit 24: Specifies whether the key is an extended key,
50 // such as the right-hand ALT and CTRL keys that appear on
51 // an enhanced 101- or 102-key keyboard.
52 // The value is 1 if it is an extended key; otherwise, it is 0.
53 // bit 29:Specifies the context code.
54 // The value is 1 if the ALT key is down while the key is pressed/released;
55 // it is 0 if the WM_SYSKEYDOWN message is posted to the active window
56 // because no window has the keyboard focus.
57 #define GOP_EXTENDED_KEY (0x1 << 24)
58 #define GOP_ALT_KEY_PRESSED (0x1 << 29)
59
60
61 #define MAX_Q 256
62
63 typedef struct {
64 UINTN Front;
65 UINTN Rear;
66 UINTN Count;
67 EFI_INPUT_KEY Q[MAX_Q];
68 } GOP_QUEUE_FIXED;
69
70 #define WIN_NT_GOP_CLASS_NAME L"WinNtGopWindow"
71
72 #define GOP_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('S', 'g', 'o', 'N')
73
74 #define WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE EFI_SIGNATURE_32 ('W', 'g', 'S', 'n')
75
76 typedef struct _WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY {
77 UINTN Signature;
78 EFI_HANDLE NotifyHandle;
79 EFI_KEY_DATA KeyData;
80 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
81 LIST_ENTRY NotifyEntry;
82 } WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY;
83
84 #define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff
85
86 typedef struct {
87 UINT32 HorizontalResolution;
88 UINT32 VerticalResolution;
89 UINT32 ColorDepth;
90 UINT32 RefreshRate;
91 } GOP_MODE_DATA;
92
93 typedef struct {
94 UINT64 Signature;
95
96 EFI_HANDLE Handle;
97 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
98 EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn;
99
100 EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;
101
102 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
103
104 //
105 // GOP Private Data for QueryMode ()
106 //
107 GOP_MODE_DATA *ModeData;
108
109 //
110 // GOP Private Data knowing when to start hardware
111 //
112 BOOLEAN HardwareNeedsStarting;
113
114 CHAR16 *WindowName;
115 CHAR16 Buffer[160];
116
117 HANDLE ThreadInited; // Semaphore
118 HANDLE ThreadHandle; // Thread
119 DWORD ThreadId;
120
121 HWND WindowHandle;
122 WNDCLASSEX WindowsClass;
123
124 //
125 // This screen is used to redraw the scree when windows events happen. It's
126 // updated in the main thread and displayed in the windows thread.
127 //
128 BITMAPV4HEADER *VirtualScreenInfo;
129 RGBQUAD *VirtualScreen;
130
131 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FillLine;
132
133 //
134 // Keyboard Queue used by Simple Text In. WinProc thread adds, and main
135 // thread removes.
136 //
137 CRITICAL_SECTION QCriticalSection;
138 GOP_QUEUE_FIXED Queue;
139
140 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInEx;
141 EFI_KEY_STATE KeyState;
142 LIST_ENTRY NotifyList;
143 BOOLEAN LeftShift;
144 BOOLEAN RightShift;
145 BOOLEAN LeftAlt;
146 BOOLEAN RightAlt;
147 BOOLEAN LeftCtrl;
148 BOOLEAN RightCtrl;
149 BOOLEAN LeftLogo;
150 BOOLEAN RightLogo;
151 BOOLEAN Menu;
152 BOOLEAN SysReq;
153 BOOLEAN NumLock;
154 BOOLEAN ScrollLock;
155 BOOLEAN CapsLock;
156 } GOP_PRIVATE_DATA;
157
158 #define GOP_PRIVATE_DATA_FROM_THIS(a) \
159 CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE)
160
161 #define GOP_PRIVATE_DATA_FROM_TEXT_IN_THIS(a) \
162 CR(a, GOP_PRIVATE_DATA, SimpleTextIn, GOP_PRIVATE_DATA_SIGNATURE)
163
164 #define GOP_PRIVATE_DATA_FROM_TEXT_IN_EX_THIS(a) \
165 CR(a, GOP_PRIVATE_DATA, SimpleTextInEx, GOP_PRIVATE_DATA_SIGNATURE)
166
167 //
168 // Global Protocol Variables
169 //
170 extern EFI_DRIVER_BINDING_PROTOCOL gWinNtGopDriverBinding;
171 extern EFI_COMPONENT_NAME_PROTOCOL gWinNtGopComponentName;
172 extern EFI_COMPONENT_NAME2_PROTOCOL gWinNtGopComponentName2;
173
174 extern EFI_GUID gSimpleTextInExNotifyGuid;
175
176 //
177 // Gop Hardware abstraction internal worker functions
178 //
179
180 /**
181 TODO: Add function description
182
183 @param WinNtIo TODO: add argument description
184
185 @return TODO: add return values
186
187 **/
188 EFI_STATUS
189 WinNtGopSupported (
190 IN EFI_WIN_NT_IO_PROTOCOL *WinNtIo
191 );
192
193
194 /**
195 TODO: Add function description
196
197 @param Private TODO: add argument description
198
199 @return TODO: add return values
200
201 **/
202 EFI_STATUS
203 WinNtGopConstructor (
204 IN GOP_PRIVATE_DATA *Private
205 );
206
207
208 /**
209 TODO: Add function description
210
211 @param Private TODO: add argument description
212
213 @return TODO: add return values
214
215 **/
216 EFI_STATUS
217 WinNtGopDestructor (
218 IN GOP_PRIVATE_DATA *Private
219 );
220
221 //
222 // UEFI 2.0 driver model prototypes for Win NT GOP
223 //
224
225
226 /**
227 TODO: Add function description
228
229 @param ImageHandle TODO: add argument description
230 @param SystemTable TODO: add argument description
231
232 @return TODO: add return values
233
234 **/
235 EFI_STATUS
236 EFIAPI
237 WinNtGopInitialize (
238 IN EFI_HANDLE ImageHandle,
239 IN EFI_SYSTEM_TABLE *SystemTable
240 );
241
242
243 /**
244 TODO: Add function description
245
246 @param This TODO: add argument description
247 @param Handle TODO: add argument description
248 @param RemainingDevicePath TODO: add argument description
249
250 @return TODO: add return values
251
252 **/
253 EFI_STATUS
254 EFIAPI
255 WinNtGopDriverBindingSupported (
256 IN EFI_DRIVER_BINDING_PROTOCOL *This,
257 IN EFI_HANDLE Handle,
258 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
259 );
260
261
262 /**
263 TODO: Add function description
264
265 @param This TODO: add argument description
266 @param Handle TODO: add argument description
267 @param RemainingDevicePath TODO: add argument description
268
269 @return TODO: add return values
270
271 **/
272 EFI_STATUS
273 EFIAPI
274 WinNtGopDriverBindingStart (
275 IN EFI_DRIVER_BINDING_PROTOCOL *This,
276 IN EFI_HANDLE Handle,
277 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
278 );
279
280
281 /**
282 TODO: Add function description
283
284 @param This TODO: add argument description
285 @param Handle TODO: add argument description
286 @param NumberOfChildren TODO: add argument description
287 @param ChildHandleBuffer TODO: add argument description
288
289 @return TODO: add return values
290
291 **/
292 EFI_STATUS
293 EFIAPI
294 WinNtGopDriverBindingStop (
295 IN EFI_DRIVER_BINDING_PROTOCOL *This,
296 IN EFI_HANDLE Handle,
297 IN UINTN NumberOfChildren,
298 IN EFI_HANDLE *ChildHandleBuffer
299 );
300
301
302 /**
303 TODO: Add function description
304
305 @param Private TODO: add argument description
306 @param Key TODO: add argument description
307
308 @return TODO: add return values
309
310 **/
311 EFI_STATUS
312 GopPrivateAddQ (
313 IN GOP_PRIVATE_DATA *Private,
314 IN EFI_INPUT_KEY Key
315 );
316
317
318 /**
319 TODO: Add function description
320
321 @param Private TODO: add argument description
322
323 @return TODO: add return values
324
325 **/
326 EFI_STATUS
327 WinNtGopInitializeSimpleTextInForWindow (
328 IN GOP_PRIVATE_DATA *Private
329 );
330
331
332 /**
333 TODO: Add function description
334
335 @param Private TODO: add argument description
336
337 @return TODO: add return values
338
339 **/
340 EFI_STATUS
341 WinNtGopDestroySimpleTextInForWindow (
342 IN GOP_PRIVATE_DATA *Private
343 );
344
345
346
347 #endif