]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.h
GCC Cleanup: GUID initializer.
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Platform / Nt32 / Protocol / WinNtThunk / WinNtThunk.h
CommitLineData
3eb9473e 1/*++\r
2\r
aeef1b2b 3Copyright (c) 2004 - 2008, Intel Corporation \r
3eb9473e 4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 WinNtThunk.h\r
15\r
16Abstract:\r
17\r
18 This protocol allows an EFI driver (DLL) in the NT emulation envirnment\r
19 to make Win32 API calls.\r
20\r
21 NEVER make a Win32 call directly, always make the call via this protocol.\r
22\r
23 There are no This pointers on the protocol member functions as they map\r
24 exactly into Win32 system calls.\r
25\r
26 YOU MUST include EfiWinNT.h in place of Efi.h to make this file compile.\r
27\r
28--*/\r
29\r
30#ifndef _WIN_NT_THUNK_H_\r
31#define _WIN_NT_THUNK_H_\r
32\r
33#define EFI_WIN_NT_THUNK_PROTOCOL_GUID \\r
34 { \\r
aeef1b2b 35 0x58c518b1, 0x76f3, 0x11d4, {0xbc, 0xea, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \\r
3eb9473e 36 }\r
37\r
38//\r
39// The following APIs require EfiWinNT.h. In some environmnets the GUID\r
40// definitions are needed but the EfiWinNT.h is not included.\r
41// EfiWinNT.h is needed to support WINDOWS API requirements.\r
42//\r
43#ifdef _EFI_WIN_NT_H_\r
44\r
45typedef\r
46WINBASEAPI\r
47VOID\r
48(WINAPI *WinNtSleep) (\r
49 DWORD Milliseconds\r
50 );\r
51\r
52typedef\r
53WINBASEAPI\r
54DWORD\r
55(WINAPI *WinNtSuspendThread) (\r
56 HANDLE hThread\r
57 );\r
58\r
59typedef\r
60WINBASEAPI\r
61HANDLE\r
62(WINAPI *WinNtGetCurrentThread) (\r
63 VOID\r
64 );\r
65\r
66typedef\r
67WINBASEAPI\r
68DWORD\r
69(WINAPI *WinNtGetCurrentThreadId) (\r
70 VOID\r
71 );\r
72\r
73typedef\r
74WINBASEAPI\r
75HANDLE\r
76(WINAPI *WinNtGetCurrentProcess) (\r
77 VOID\r
78 );\r
79\r
80typedef\r
81WINBASEAPI\r
82HANDLE\r
83(WINAPI *WinNtCreateThread) (\r
84 LPSECURITY_ATTRIBUTES lpThreadAttributes,\r
85 DWORD dwStackSize,\r
86 LPTHREAD_START_ROUTINE lpStartAddress,\r
87 LPVOID lpParameter,\r
88 DWORD dwCreationFlags,\r
89 LPDWORD lpThreadId\r
90 );\r
91\r
92typedef\r
93WINBASEAPI\r
94BOOL\r
95(WINAPI *WinNtTerminateThread) (\r
96 HANDLE hThread,\r
97 DWORD dwExitCode\r
98 );\r
99\r
100typedef\r
101WINBASEAPI\r
102BOOL\r
103(WINAPI *WinNtSendMessage) (\r
104 HWND hWnd,\r
105 UINT Msg,\r
106 WPARAM wParam,\r
107 LPARAM lParam\r
108 );\r
109\r
110typedef\r
111WINBASEAPI\r
112VOID\r
113(WINAPI *WinNtExitThread) (\r
114 DWORD dwExitCode\r
115 );\r
116\r
117typedef\r
118WINBASEAPI\r
119DWORD\r
120(WINAPI *WinNtResumeThread) (\r
121 HANDLE hThread\r
122 );\r
123\r
124typedef\r
125WINBASEAPI\r
126BOOL\r
127(WINAPI *WinNtSetThreadPriority) (\r
128 HANDLE hThread,\r
129 INTN nPriority\r
130 );\r
131\r
132typedef\r
133WINBASEAPI\r
134VOID\r
135(WINAPI *WinNtInitializeCriticalSection) (\r
136 LPCRITICAL_SECTION lpCriticalSection\r
137 );\r
138\r
139typedef\r
140WINBASEAPI\r
141VOID\r
142(WINAPI *WinNtDeleteCriticalSection) (\r
143 LPCRITICAL_SECTION lpCriticalSection\r
144 );\r
145\r
146typedef\r
147WINBASEAPI\r
148VOID\r
149(WINAPI *WinNtEnterCriticalSection) (\r
150 LPCRITICAL_SECTION lpCriticalSection\r
151 );\r
152\r
153typedef\r
154WINBASEAPI\r
155VOID\r
156(WINAPI *WinNtLeaveCriticalSection) (\r
157 LPCRITICAL_SECTION lpCriticalSection\r
158 );\r
159\r
160typedef\r
161WINBASEAPI\r
162BOOL\r
163(WINAPI *WinNtTlsAlloc) (\r
164 VOID\r
165 );\r
166\r
167typedef\r
168WINBASEAPI\r
169LPVOID\r
170(WINAPI *WinNtTlsGetValue) (\r
171 DWORD dwTlsIndex\r
172 );\r
173\r
174typedef\r
175WINBASEAPI\r
176BOOL\r
177(WINAPI *WinNtTlsSetValue) (\r
178 DWORD dwTlsIndex,\r
179 LPVOID lpTlsValue\r
180 );\r
181\r
182typedef\r
183WINBASEAPI\r
184BOOL\r
185(WINAPI *WinNtTlsFree) (\r
186 DWORD dwTlsIndex\r
187 );\r
188\r
189typedef\r
190WINBASEAPI\r
191HANDLE\r
192(WINAPI *WinNtCreateSemaphore) (\r
193 LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,\r
194 LONG lInitialCount,\r
195 LONG lMaximumCount,\r
196 LPCWSTR lpName\r
197 );\r
198\r
199typedef\r
200WINBASEAPI\r
201DWORD\r
202(WINAPI *WinNtWaitForSingleObject) (\r
203 HANDLE hHandle,\r
204 DWORD dwMilliseconds\r
205 );\r
206\r
207typedef\r
208WINBASEAPI\r
209BOOL\r
210(WINAPI *WinNtReleaseSemaphore) (\r
211 HANDLE hSemaphore,\r
212 LONG lReleaseCount,\r
213 LPLONG lpPreviousCount\r
214 );\r
215\r
216typedef\r
217WINBASEAPI\r
218BOOL\r
219(WINAPI *WinNtDuplicateHandle) (\r
220 HANDLE hSourceProcessHandle,\r
221 HANDLE hSourceHandle,\r
222 HANDLE hTargetProcessHandle,\r
223 LPHANDLE lpTargetHandle,\r
224 DWORD dwDesiredAccess,\r
225 BOOL bInheritHandle,\r
226 DWORD dwOptions\r
227 );\r
228\r
229typedef\r
230WINBASEAPI\r
231HANDLE\r
232(WINAPI *WinNtCreateConsoleScreenBuffer) (\r
233 DWORD DesiredAccess,\r
234 DWORD ShareMode,\r
235 CONST SECURITY_ATTRIBUTES *SecurityAttributes,\r
236 DWORD Flags,\r
237 LPVOID ScreenBufferData\r
238 );\r
239\r
240typedef\r
241WINBASEAPI\r
242BOOL\r
243(WINAPI *WinNtSetConsoleScreenBufferSize) (\r
244 HANDLE ConsoleOutput,\r
245 COORD Size\r
246 );\r
247\r
248typedef\r
249WINBASEAPI\r
250BOOL\r
251(WINAPI *WinNtSetConsoleActiveScreenBuffer) (\r
252 HANDLE ConsoleOutput\r
253 );\r
254\r
255typedef\r
256WINBASEAPI\r
257BOOL\r
258(WINAPI *WinNtFillConsoleOutputAttribute) (\r
259 HANDLE ConsoleOutput,\r
260 WORD Attribute,\r
261 DWORD Length,\r
262 COORD WriteCoord,\r
263 LPDWORD NumberOfAttrsWritten\r
264 );\r
265\r
266typedef\r
267WINBASEAPI\r
268BOOL\r
269(WINAPI *WinNtFillConsoleOutputCharacter) (\r
270 HANDLE ConsoleOutput,\r
271 TCHAR Character,\r
272 DWORD Length,\r
273 COORD WriteCoord,\r
274 LPDWORD NumberOfCharsWritten\r
275 );\r
276\r
277typedef\r
278WINBASEAPI\r
279BOOL\r
280(WINAPI *WinNtWriteConsoleOutput) (\r
281 HANDLE ConsoleOutput,\r
282 CONST CHAR_INFO *Buffer,\r
283 COORD BufferSize,\r
284 COORD BufferCoord,\r
285 PSMALL_RECT WriteRegion\r
286 );\r
287\r
288typedef\r
289WINBASEAPI\r
290BOOL\r
291(WINAPI *WinNtScrollConsoleScreenBuffer) (\r
292 HANDLE ConsoleOutput,\r
293 CONST SMALL_RECT *ScrollRectangle,\r
294 CONST SMALL_RECT *ClipRectangle,\r
295 COORD DestinationOrigin,\r
296 CONST CHAR_INFO *Fill\r
297 );\r
298\r
299typedef\r
300WINBASEAPI\r
301BOOL\r
302(WINAPI *WinNtSetConsoleTitleW) (\r
303 LPCTSTR ConsoleTitle\r
304 );\r
305\r
306typedef\r
307WINBASEAPI\r
308BOOL\r
309(WINAPI *WinNtGetConsoleCursorInfo) (\r
310 HANDLE ConsoleOutput,\r
311 PCONSOLE_CURSOR_INFO ConsoleCursorInfo\r
312 );\r
313\r
314typedef\r
315WINBASEAPI\r
316BOOL\r
317(WINAPI *WinNtSetConsoleCursorInfo) (\r
318 HANDLE ConsoleOutput,\r
319 CONST CONSOLE_CURSOR_INFO *ConsoleCursorInfo\r
320 );\r
321\r
322typedef\r
323WINBASEAPI\r
324BOOL\r
325(WINAPI *WinNtSetPriorityClass) (\r
326 HANDLE Process,\r
327 DWORD PriorityClass\r
328 );\r
329\r
330typedef\r
331WINBASEAPI\r
332BOOL\r
333(WINAPI *WinNtWriteConsoleInput) (\r
334 HANDLE ConsoleInput,\r
335 CONST INPUT_RECORD *Buffer,\r
336 DWORD Legnth,\r
337 LPDWORD NumberOfEventsWritten\r
338 );\r
339\r
340typedef\r
341WINBASEAPI\r
342BOOL\r
343(WINAPI *WinNtGetNumberOfConsoleInputEvents) (\r
344 HANDLE ConsoleInput,\r
345 LPDWORD NumberOfEvents\r
346 );\r
347\r
348typedef\r
349WINBASEAPI\r
350HANDLE\r
351(WINAPI *WinNtGetStdHandle) (\r
352 DWORD StdHandle\r
353 );\r
354\r
355typedef\r
356WINBASEAPI\r
357BOOL\r
358(WINAPI *WinNtReadConsoleInput) (\r
359 HANDLE ConsoleInput,\r
360 PINPUT_RECORD Buffer,\r
361 DWORD Length,\r
362 LPDWORD NumberOfEventsRead\r
363 );\r
364\r
365typedef\r
366WINBASEAPI\r
367BOOL\r
368(WINAPI *WinNtPeekConsoleInput) (\r
369 HANDLE ConsoleInput,\r
370 PINPUT_RECORD Buffer,\r
371 DWORD Length,\r
372 LPDWORD NumberOfEventsRead\r
373 );\r
374\r
375typedef\r
376WINBASEAPI\r
377BOOL\r
378(WINAPI *WinNtSetConsoleCursorPosition) (\r
379 HANDLE ConsoleInput,\r
380 COORD CursorPosition\r
381 );\r
382\r
383typedef\r
384WINBASEAPI\r
385HANDLE\r
386(WINAPI *WinNtCreateFile) (\r
387 LPCWSTR FileName,\r
388 DWORD DesiredAccess,\r
389 DWORD SharedMode,\r
390 LPSECURITY_ATTRIBUTES SecurityAttributes,\r
391 DWORD CreationDisposition,\r
392 DWORD FlagsAndAttributes,\r
393 HANDLE TemplateFile\r
394 );\r
395\r
396typedef\r
397WINBASEAPI\r
398BOOL\r
399(WINAPI *WinNtDeviceIoControl) (\r
400 HANDLE DeviceHandle,\r
401 DWORD IoControlCode,\r
402 LPVOID InBuffer,\r
403 DWORD InBufferSize,\r
404 LPVOID OutBuffer,\r
405 DWORD OutBufferSize,\r
406 LPDWORD BytesReturned,\r
407 LPOVERLAPPED Overlapped\r
408 );\r
409\r
410typedef\r
411WINBASEAPI\r
412BOOL\r
413(WINAPI *WinNtCreateDirectory) (\r
414 LPCWSTR PathName,\r
415 LPSECURITY_ATTRIBUTES SecurityAttributes\r
416 );\r
417\r
418typedef\r
419WINBASEAPI\r
420BOOL\r
421(WINAPI *WinNtRemoveDirectory) (\r
422 LPCWSTR PathName\r
423 );\r
424\r
425typedef\r
426WINBASEAPI\r
427DWORD\r
428(WINAPI *WinNtGetFileAttributes) (\r
429 LPCWSTR FileName\r
430 );\r
431\r
432typedef\r
433WINBASEAPI\r
434BOOL\r
435(WINAPI *WinNtSetFileAttributes) (\r
436 LPCWSTR FileName,\r
437 DWORD FileAttributes\r
438 );\r
439\r
440typedef\r
441WINBASEAPI\r
442HANDLE\r
443(WINAPI *WinNtCreateFileMapping) (\r
444 HANDLE FileHandle,\r
445 LPSECURITY_ATTRIBUTES Attributes,\r
446 DWORD Protect,\r
447 DWORD MaximumSizeHigh,\r
448 DWORD MaximumSizeLow,\r
449 LPCTSTR Name\r
450 );\r
451\r
452typedef\r
453WINBASEAPI\r
454LPVOID\r
455(WINAPI *WinNtMapViewOfFileEx) (\r
456 HANDLE FileHandle,\r
457 DWORD DesiredAccess,\r
458 DWORD FileOffsetHigh,\r
459 DWORD FileOffsetLow,\r
460 DWORD NumberOfBytesToMap,\r
461 LPVOID BaseAddress\r
462 );\r
463\r
464typedef\r
465WINBASEAPI\r
466DWORD\r
467(WINAPI *WinNtGetEnvironmentVariable) (\r
468 LPCTSTR Name,\r
469 LPTSTR Buffer,\r
470 DWORD Size\r
471 );\r
472\r
473typedef\r
474WINBASEAPI\r
475BOOL\r
476(WINAPI *WinNtCloseHandle) (\r
477 HANDLE Object\r
478 );\r
479\r
480typedef\r
481WINBASEAPI\r
482DWORD\r
483(WINAPI *WinNtSetFilePointer) (\r
484 HANDLE FileHandle,\r
485 LONG DistanceToMove,\r
486 PLONG DistanceToHoveHigh,\r
487 DWORD MoveMethod\r
488 );\r
489\r
490typedef\r
491WINBASEAPI\r
492BOOL\r
493(WINAPI *WinNtSetEndOfFile) (\r
494 HANDLE FileHandle\r
495 );\r
496\r
497typedef\r
498WINBASEAPI\r
499BOOL\r
500(WINAPI *WinNtReadFile) (\r
501 HANDLE FileHandle,\r
502 LPVOID Buffer,\r
503 DWORD NumberOfBytesToRead,\r
504 LPDWORD NumberOfBytesRead,\r
505 LPOVERLAPPED Overlapped\r
506 );\r
507\r
508typedef\r
509WINBASEAPI\r
510BOOL\r
511(WINAPI *WinNtWriteFile) (\r
512 HANDLE FileHandle,\r
513 LPCVOID Buffer,\r
514 DWORD NumberOfBytesToWrite,\r
515 LPDWORD NumberOfBytesWritten,\r
516 LPOVERLAPPED Overlapped\r
517 );\r
518\r
519typedef\r
520WINBASEAPI\r
521BOOL\r
522(WINAPI *WinNtGetFileInformationByHandle) (\r
523 HANDLE FileHandle,\r
524 BY_HANDLE_FILE_INFORMATION *FileInfo\r
525 );\r
526\r
527typedef\r
528WINBASEAPI\r
529BOOL\r
530(WINAPI *WinNtGetDiskFreeSpace) (\r
531 LPCTSTR RootPathName,\r
532 LPDWORD SectorsPerCluster,\r
533 LPDWORD BytesPerSector,\r
534 LPDWORD NumberOfFreeClusters,\r
535 LPDWORD TotalNumberOfClusters\r
536 );\r
537\r
538typedef\r
539WINBASEAPI\r
540BOOL\r
541(WINAPI *WinNtGetDiskFreeSpaceEx) (\r
542 LPCTSTR DirectoryName,\r
543 PULARGE_INTEGER FreeBytesAvailable,\r
544 PULARGE_INTEGER TotalNumberOfBytes,\r
545 PULARGE_INTEGER TotoalNumberOfFreeBytes\r
546 );\r
547\r
548typedef\r
549WINBASEAPI\r
550BOOL\r
551(WINAPI *WinNtMoveFile) (\r
552 LPCTSTR ExistingFileName,\r
553 LPCTSTR NewFileName\r
554 );\r
555\r
556typedef\r
557WINBASEAPI\r
558BOOL\r
559(WINAPI *WinNtSetFileTime) (\r
560 HANDLE FileHandle,\r
561 FILETIME *CreationTime,\r
562 FILETIME *LastAccessTime,\r
563 FILETIME *LastWriteTime\r
564 );\r
565\r
566typedef\r
567WINBASEAPI\r
568BOOL\r
569(WINAPI *WinNtSystemTimeToFileTime) (\r
570 SYSTEMTIME * SystemTime,\r
571 FILETIME * FileTime\r
572 );\r
573\r
574typedef\r
575WINBASEAPI\r
576BOOL\r
577(WINAPI *WinNtDeleteFile) (\r
578 LPCTSTR FileName\r
579 );\r
580\r
581typedef\r
582WINBASEAPI\r
583BOOL\r
584(WINAPI *WinNtFlushFileBuffers) (\r
585 HANDLE\r
586 );\r
587\r
588typedef\r
589WINBASEAPI\r
590DWORD\r
591(WINAPI *WinNtGetLastError) (\r
592 VOID\r
593 );\r
594\r
595typedef\r
596WINBASEAPI\r
597UINT\r
598(WINAPI *WinNtSetErrorMode) (\r
599 UINT Mode\r
600 );\r
601\r
602typedef\r
603WINBASEAPI\r
604DWORD\r
605(WINAPI *WinNtGetTickCount) (\r
606 VOID\r
607 );\r
608\r
609typedef\r
610WINBASEAPI\r
611HMODULE\r
612(WINAPI *WinNtLoadLibraryEx) (\r
613 LPCTSTR LibFileName,\r
614 HANDLE FileHandle,\r
615 DWORD Flags\r
616 );\r
617\r
618typedef\r
619WINBASEAPI\r
620FARPROC\r
621(WINAPI *WinNtGetProcAddress) (\r
622 HMODULE Module,\r
623 LPCSTR ProcName\r
624 );\r
625\r
626typedef\r
627WINBASEAPI\r
628DWORD\r
629(WINAPI *WinNtGetTimeZoneInformation) (\r
630 LPTIME_ZONE_INFORMATION timeZoneInformation\r
631 );\r
632\r
633typedef\r
634WINBASEAPI\r
635MMRESULT\r
636(WINAPI *WinNttimeSetEvent) (\r
637 UINT uDelay,\r
638 UINT uResolution,\r
639 LPTIMECALLBACK lpTimeProc,\r
640 DWORD_PTR dwUser,\r
641 UINT fuEvent\r
642 );\r
643\r
644typedef\r
645WINBASEAPI\r
646MMRESULT\r
647(WINAPI *WinNttimeKillEvent) (\r
648 UINT uTimerID\r
649 );\r
650\r
651typedef\r
652WINBASEAPI\r
653DWORD\r
654(WINAPI *WinNtSetTimeZoneInformation) (\r
655 LPTIME_ZONE_INFORMATION timeZoneInformation\r
656 );\r
657\r
658typedef\r
659WINBASEAPI\r
660VOID\r
661(WINAPI *WinNtGetSystemTime) (\r
662 LPSYSTEMTIME SystemTime\r
663 );\r
664\r
665typedef\r
666WINBASEAPI\r
667BOOL\r
668(WINAPI *WinNtSetSystemTime) (\r
669 CONST SYSTEMTIME *SystemTime\r
670 );\r
671\r
672typedef\r
673WINBASEAPI\r
674VOID\r
675(WINAPI *WinNtGetLocalTime) (\r
676 LPSYSTEMTIME SystemTime\r
677 );\r
678\r
679typedef\r
680WINBASEAPI\r
681BOOL\r
682(WINAPI *WinNtSetLocalTime) (\r
683 CONST SYSTEMTIME *SystemTime\r
684 );\r
685\r
686typedef\r
687WINBASEAPI\r
688BOOL\r
689(WINAPI *WinNtFileTimeToLocalFileTime) (\r
690 CONST FILETIME *FileTime,\r
691 LPFILETIME LocalFileTime\r
692 );\r
693\r
694typedef\r
695WINBASEAPI\r
696BOOL\r
697(WINAPI *WinNtFileTimeToSystemTime) (\r
698 CONST FILETIME *FileTime,\r
699 LPSYSTEMTIME SystemTime\r
700 );\r
701\r
702typedef\r
703WINBASEAPI\r
704HANDLE\r
705(WINAPI *WinNtFindFirstFile) (\r
706 LPCTSTR FileName,\r
707 LPWIN32_FIND_DATA FindFileData\r
708 );\r
709\r
710typedef\r
711WINBASEAPI\r
712BOOL\r
713(WINAPI *WinNtFindNextFile) (\r
714 HANDLE FindFile,\r
715 LPWIN32_FIND_DATA FindFileData\r
716 );\r
717\r
718typedef\r
719WINBASEAPI\r
720BOOL\r
721(WINAPI *WinNtFindClose) (\r
722 HANDLE FindFile\r
723 );\r
724\r
725typedef\r
726WINBASEAPI\r
727BOOL\r
728(WINAPI *WinNtGetCommState) (\r
729 HANDLE FileHandle,\r
730 LPDCB DCB\r
731 );\r
732\r
733typedef\r
734WINBASEAPI\r
735BOOL\r
736(WINAPI *WinNtSetCommState) (\r
737 HANDLE FileHandle,\r
738 LPDCB DCB\r
739 );\r
740\r
741typedef\r
742WINBASEAPI\r
743BOOL\r
744(WINAPI *WinNtSetCommState) (\r
745 HANDLE FileHandle,\r
746 LPDCB DCB\r
747 );\r
748\r
749typedef\r
750WINBASEAPI\r
751BOOL\r
752(WINAPI *WinNtSetCommTimeouts) (\r
753 HANDLE FileHandle,\r
754 LPCOMMTIMEOUTS CommTimeouts\r
755 );\r
756\r
757typedef\r
758WINBASEAPI\r
759VOID\r
760(WINAPI *WinNtExitProcess) (\r
761 UINT uExitCode // exit code for all threads\r
762 );\r
763\r
764typedef\r
765WINBASEAPI\r
766BOOL\r
767(WINAPI *WinNtPurgeComm) (\r
768 HANDLE FileHandle,\r
769 DWORD Flags\r
770 );\r
771\r
772typedef\r
773WINBASEAPI\r
774BOOL\r
775(WINAPI *WinNtEscapeCommFunction) (\r
776 HANDLE FileHandle,\r
777 DWORD Func\r
778 );\r
779\r
780typedef\r
781WINBASEAPI\r
782BOOL\r
783(WINAPI *WinNtGetCommModemStatus) (\r
784 HANDLE FileHandle,\r
785 LPDWORD ModemStat\r
786 );\r
787\r
788typedef\r
789WINBASEAPI\r
790BOOL\r
791(WINAPI *WinNtClearCommError) (\r
792 HANDLE FileHandle,\r
793 LPDWORD Errors,\r
794 LPCOMSTAT Stat\r
795 );\r
796\r
797typedef\r
798WINUSERAPI\r
799INT32\r
800(WINAPIV *WinNtSprintf) (\r
801 LPWSTR Buffer,\r
802 LPCWSTR String,\r
803 ...\r
804 );\r
805\r
806typedef\r
807WINUSERAPI\r
808HWND\r
809(WINAPI *WinNtGetDesktopWindow) (\r
810 VOID\r
811 );\r
812\r
813typedef\r
814WINUSERAPI\r
815HWND\r
816(WINAPI *WinNtGetForegroundWindow) (\r
817 VOID\r
818 );\r
819\r
820typedef\r
821WINUSERAPI\r
822HWND\r
823(WINAPI *WinNtCreateWindowEx) (\r
824 DWORD dwExStyle,\r
825 LPCTSTR lpClassName,\r
826 LPCTSTR lpWindowName,\r
827 DWORD dwStyle,\r
828 INT32 x,\r
829 INT32 y,\r
830 INT32 nWidth,\r
831 INT32 nHeight,\r
832 HWND hWndParent,\r
833 HMENU hMenu,\r
834 HINSTANCE hInstance,\r
835 LPVOID *lpParam\r
836 );\r
837\r
838typedef\r
839WINUSERAPI\r
840BOOL\r
841(WINAPI *WinNtUpdateWindow) (\r
842 HWND hWnd\r
843 );\r
844\r
845typedef\r
846WINUSERAPI\r
847BOOL\r
848(WINAPI *WinNtShowWindow) (\r
849 HWND hWnd,\r
850 INT32 nCmdShow\r
851 );\r
852\r
853typedef\r
854WINGDIAPI\r
855BOOL\r
856(WINAPI *WinNtDestroyWindow) (\r
857 HWND hWnd\r
858 );\r
859\r
860typedef\r
861WINUSERAPI\r
862HDC\r
863(WINAPI *WinNtGetWindowDC) (\r
864 HWND hWnd\r
865 );\r
866\r
867typedef\r
868WINUSERAPI\r
869BOOL\r
870(WINAPI *WinNtGetClientRect) (\r
871 HWND hWnd,\r
872 LPRECT lpRect\r
873 );\r
874\r
875typedef\r
876WINUSERAPI\r
877BOOL\r
878(WINAPI *WinNtAdjustWindowRect) (\r
879 LPRECT lpRect,\r
880 DWORD dwStyle,\r
881 BOOL bMenu\r
882 );\r
883\r
884typedef\r
885WINGDIAPI\r
886INT32\r
887(WINAPI *WinNtSetDIBitsToDevice) (\r
888 HDC,\r
889 INT32,\r
890 INT32,\r
891 DWORD,\r
892 DWORD,\r
893 INT32,\r
894 INT32,\r
895 UINT,\r
896 UINT,\r
897 CONST VOID *,\r
898 CONST BITMAPINFO *,\r
899 UINT\r
900 );\r
901\r
902typedef\r
903WINGDIAPI\r
904BOOL\r
905(WINAPI *WinNtBitBlt) (\r
906 HDC,\r
907 INT32,\r
908 INT32,\r
909 INT32,\r
910 INT32,\r
911 HDC,\r
912 INT32,\r
913 INT32,\r
914 DWORD\r
915 );\r
916\r
917typedef\r
918WINUSERAPI\r
919BOOL\r
920(WINAPI *WinNtInvalidateRect) (\r
921 HWND hWnd,\r
922 CONST RECT *lpRect,\r
923 BOOL bErase\r
924 );\r
925\r
926typedef\r
927WINUSERAPI\r
928HDC\r
929(WINAPI *WinNtGetDC) (\r
930 HWND hWnd\r
931 );\r
932\r
933typedef\r
934WINUSERAPI\r
935INT32\r
936(WINAPI *WinNtReleaseDC) (\r
937 HWND hWnd,\r
938 HDC hDC\r
939 );\r
940\r
941typedef\r
942WINUSERAPI\r
943ATOM\r
944(WINAPI *WinNtRegisterClassEx) (\r
945 CONST WNDCLASSEX *\r
946 );\r
947\r
948typedef\r
949WINUSERAPI\r
950BOOL\r
951(WINAPI *WinNtUnregisterClass) (\r
952 LPCTSTR lpClassName,\r
953 HINSTANCE hInstance\r
954 );\r
955\r
956typedef\r
957WINUSERAPI\r
958HDC\r
959(WINAPI *WinNtBeginPaint) (\r
960 HWND hWnd,\r
961 LPPAINTSTRUCT lpPaint\r
962 );\r
963\r
964typedef\r
965WINUSERAPI\r
966BOOL\r
967(WINAPI *WinNtEndPaint) (\r
968 HWND hWnd,\r
969 CONST PAINTSTRUCT *lpPaint\r
970 );\r
971\r
972typedef\r
973WINUSERAPI\r
974VOID\r
975(WINAPI *WinNtPostQuitMessage) (\r
976 INT32 nExitCode\r
977 );\r
978\r
979typedef\r
980WINUSERAPI\r
981LRESULT\r
982(WINAPI *WinNtDefWindowProc) (\r
983 HWND hWnd,\r
984 UINT Msg,\r
985 WPARAM wParam,\r
986 LPARAM lParam\r
987 );\r
988\r
989typedef\r
990WINUSERAPI\r
991HICON\r
992(WINAPI *WinNtLoadIcon) (\r
993 HINSTANCE hInstance,\r
994 LPCTSTR lpIconName\r
995 );\r
996\r
997typedef\r
998WINUSERAPI\r
999HCURSOR\r
1000(WINAPI *WinNtLoadCursor) (\r
1001 HINSTANCE hInstance,\r
1002 LPCTSTR lpCursorName\r
1003 );\r
1004\r
1005typedef\r
1006WINGDIAPI\r
1007HGDIOBJ\r
1008(WINAPI *WinNtGetStockObject) (\r
1009 INT32\r
1010 );\r
1011\r
1012typedef\r
1013WINGDIAPI\r
1014BOOL\r
1015(WINAPI *WinNtSetViewportOrgEx) (\r
1016 HDC,\r
1017 INT32,\r
1018 INT32,\r
1019 LPPOINT\r
1020 );\r
1021\r
1022typedef\r
1023WINGDIAPI\r
1024BOOL\r
1025(WINAPI *WinNtSetWindowOrgEx) (\r
1026 HDC,\r
1027 INT32,\r
1028 INT32,\r
1029 LPPOINT\r
1030 );\r
1031typedef\r
1032WINGDIAPI\r
1033BOOL\r
1034(WINAPI *WinNtMoveWindow) (\r
1035 HWND,\r
1036 INT32,\r
1037 INT32,\r
1038 INT32,\r
1039 INT32,\r
1040 BOOL\r
1041 );\r
1042\r
1043typedef\r
1044WINGDIAPI\r
1045BOOL\r
1046(WINAPI *WinNtGetWindowRect) (\r
1047 HWND,\r
1048 LPRECT\r
1049 );\r
1050\r
1051typedef\r
1052WINUSERAPI\r
1053BOOL\r
1054(WINAPI *WinNtGetMessage) (\r
1055 LPMSG lpMsg,\r
1056 HWND hWnd,\r
1057 UINT wMsgFilterMin,\r
1058 UINT wMsgFilterMax\r
1059 );\r
1060\r
1061typedef\r
1062WINUSERAPI\r
1063BOOL\r
1064(WINAPI *WinNtTranslateMessage) (\r
1065 CONST MSG *lpMsg\r
1066 );\r
1067\r
1068typedef\r
1069WINUSERAPI\r
1070BOOL\r
1071(WINAPI *WinNtDispatchMessage) (\r
1072 CONST MSG *lpMsg\r
1073 );\r
1074\r
1075typedef\r
1076WINUSERAPI\r
1077HANDLE\r
1078(WINAPI *WinNtGetProcessHeap) ();\r
1079\r
1080typedef\r
1081WINUSERAPI\r
1082LPVOID\r
1083(WINAPI *WinNtHeapAlloc) (\r
1084 HANDLE hHeap,\r
1085 DWORD dwFlags,\r
1086 SIZE_T dwBytes\r
1087 );\r
1088\r
1089typedef\r
1090WINUSERAPI\r
1091BOOL\r
1092(WINAPI *WinNtHeapFree) (\r
1093 HANDLE hHeap,\r
1094 DWORD dwFlags,\r
1095 LPVOID lpMem\r
1096 );\r
1097\r
1098typedef\r
1099WINBASEAPI\r
1100BOOL\r
1101(WINAPI *WinNtFreeLibrary) (\r
1102 HANDLE ModHandle\r
1103 );\r
1104//\r
1105//\r
1106//\r
1107EFI_FORWARD_DECLARATION (EFI_WIN_NT_THUNK_PROTOCOL);\r
1108\r
1109#define EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'T', 'T')\r
1110\r
1111typedef struct _EFI_WIN_NT_THUNK_PROTOCOL {\r
1112 UINT64 Signature;\r
1113\r
1114 //\r
1115 // Win32 Process APIs\r
1116 //\r
1117 WinNtGetProcAddress GetProcAddress;\r
1118 WinNtGetTickCount GetTickCount;\r
1119 WinNtLoadLibraryEx LoadLibraryEx;\r
1120 WinNtFreeLibrary FreeLibrary;\r
1121\r
1122 WinNtSetPriorityClass SetPriorityClass;\r
1123 WinNtSetThreadPriority SetThreadPriority;\r
1124 WinNtSleep Sleep;\r
1125\r
1126 WinNtSuspendThread SuspendThread;\r
1127 WinNtGetCurrentThread GetCurrentThread;\r
1128 WinNtGetCurrentThreadId GetCurrentThreadId;\r
1129 WinNtGetCurrentProcess GetCurrentProcess;\r
1130 WinNtCreateThread CreateThread;\r
1131 WinNtTerminateThread TerminateThread;\r
1132 WinNtSendMessage SendMessage;\r
1133 WinNtExitThread ExitThread;\r
1134 WinNtResumeThread ResumeThread;\r
1135 WinNtDuplicateHandle DuplicateHandle;\r
1136\r
1137 //\r
1138 // Wint32 Mutex primitive\r
1139 //\r
1140 WinNtInitializeCriticalSection InitializeCriticalSection;\r
1141 WinNtEnterCriticalSection EnterCriticalSection;\r
1142 WinNtLeaveCriticalSection LeaveCriticalSection;\r
1143 WinNtDeleteCriticalSection DeleteCriticalSection;\r
1144 WinNtTlsAlloc TlsAlloc;\r
1145 WinNtTlsFree TlsFree;\r
1146 WinNtTlsSetValue TlsSetValue;\r
1147 WinNtTlsGetValue TlsGetValue;\r
1148 WinNtCreateSemaphore CreateSemaphore;\r
1149 WinNtWaitForSingleObject WaitForSingleObject;\r
1150 WinNtReleaseSemaphore ReleaseSemaphore;\r
1151\r
1152 //\r
1153 // Win32 Console APIs\r
1154 //\r
1155 WinNtCreateConsoleScreenBuffer CreateConsoleScreenBuffer;\r
1156 WinNtFillConsoleOutputAttribute FillConsoleOutputAttribute;\r
1157 WinNtFillConsoleOutputCharacter FillConsoleOutputCharacter;\r
1158 WinNtGetConsoleCursorInfo GetConsoleCursorInfo;\r
1159 WinNtGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents;\r
1160 WinNtPeekConsoleInput PeekConsoleInput;\r
1161 WinNtScrollConsoleScreenBuffer ScrollConsoleScreenBuffer;\r
1162 WinNtReadConsoleInput ReadConsoleInput;\r
1163\r
1164 WinNtSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer;\r
1165 WinNtSetConsoleCursorInfo SetConsoleCursorInfo;\r
1166 WinNtSetConsoleCursorPosition SetConsoleCursorPosition;\r
1167 WinNtSetConsoleScreenBufferSize SetConsoleScreenBufferSize;\r
1168 WinNtSetConsoleTitleW SetConsoleTitleW;\r
1169 WinNtWriteConsoleInput WriteConsoleInput;\r
1170 WinNtWriteConsoleOutput WriteConsoleOutput;\r
1171\r
1172 //\r
1173 // Win32 File APIs\r
1174 //\r
1175 WinNtCreateFile CreateFile;\r
1176 WinNtDeviceIoControl DeviceIoControl;\r
1177 WinNtCreateDirectory CreateDirectory;\r
1178 WinNtRemoveDirectory RemoveDirectory;\r
1179 WinNtGetFileAttributes GetFileAttributes;\r
1180 WinNtSetFileAttributes SetFileAttributes;\r
1181 WinNtCreateFileMapping CreateFileMapping;\r
1182 WinNtCloseHandle CloseHandle;\r
1183 WinNtDeleteFile DeleteFile;\r
1184 WinNtFindFirstFile FindFirstFile;\r
1185 WinNtFindNextFile FindNextFile;\r
1186 WinNtFindClose FindClose;\r
1187 WinNtFlushFileBuffers FlushFileBuffers;\r
1188 WinNtGetEnvironmentVariable GetEnvironmentVariable;\r
1189 WinNtGetLastError GetLastError;\r
1190 WinNtSetErrorMode SetErrorMode;\r
1191 WinNtGetStdHandle GetStdHandle;\r
1192 WinNtMapViewOfFileEx MapViewOfFileEx;\r
1193 WinNtReadFile ReadFile;\r
1194 WinNtSetEndOfFile SetEndOfFile;\r
1195 WinNtSetFilePointer SetFilePointer;\r
1196 WinNtWriteFile WriteFile;\r
1197 WinNtGetFileInformationByHandle GetFileInformationByHandle;\r
1198 WinNtGetDiskFreeSpace GetDiskFreeSpace;\r
1199 WinNtGetDiskFreeSpaceEx GetDiskFreeSpaceEx;\r
1200 WinNtMoveFile MoveFile;\r
1201 WinNtSetFileTime SetFileTime;\r
1202 WinNtSystemTimeToFileTime SystemTimeToFileTime;\r
1203\r
1204 //\r
1205 // Win32 Time APIs\r
1206 //\r
1207 WinNtFileTimeToLocalFileTime FileTimeToLocalFileTime;\r
1208 WinNtFileTimeToSystemTime FileTimeToSystemTime;\r
1209 WinNtGetSystemTime GetSystemTime;\r
1210 WinNtSetSystemTime SetSystemTime;\r
1211 WinNtGetLocalTime GetLocalTime;\r
1212 WinNtSetLocalTime SetLocalTime;\r
1213 WinNtGetTimeZoneInformation GetTimeZoneInformation;\r
1214 WinNtSetTimeZoneInformation SetTimeZoneInformation;\r
1215 WinNttimeSetEvent timeSetEvent;\r
1216 WinNttimeKillEvent timeKillEvent;\r
1217\r
1218 //\r
1219 // Win32 Serial APIs\r
1220 //\r
1221 WinNtClearCommError ClearCommError;\r
1222 WinNtEscapeCommFunction EscapeCommFunction;\r
1223 WinNtGetCommModemStatus GetCommModemStatus;\r
1224 WinNtGetCommState GetCommState;\r
1225 WinNtSetCommState SetCommState;\r
1226 WinNtPurgeComm PurgeComm;\r
1227 WinNtSetCommTimeouts SetCommTimeouts;\r
1228\r
1229 WinNtExitProcess ExitProcess;\r
1230\r
1231 WinNtSprintf SPrintf;\r
1232\r
1233 WinNtGetDesktopWindow GetDesktopWindow;\r
1234 WinNtGetForegroundWindow GetForegroundWindow;\r
1235 WinNtCreateWindowEx CreateWindowEx;\r
1236 WinNtShowWindow ShowWindow;\r
1237 WinNtUpdateWindow UpdateWindow;\r
1238 WinNtDestroyWindow DestroyWindow;\r
1239 WinNtInvalidateRect InvalidateRect;\r
1240 WinNtGetWindowDC GetWindowDC;\r
1241 WinNtGetClientRect GetClientRect;\r
1242 WinNtAdjustWindowRect AdjustWindowRect;\r
1243 WinNtSetDIBitsToDevice SetDIBitsToDevice;\r
1244 WinNtBitBlt BitBlt;\r
1245 WinNtGetDC GetDC;\r
1246 WinNtReleaseDC ReleaseDC;\r
1247 WinNtRegisterClassEx RegisterClassEx;\r
1248 WinNtUnregisterClass UnregisterClass;\r
1249\r
1250 WinNtBeginPaint BeginPaint;\r
1251 WinNtEndPaint EndPaint;\r
1252 WinNtPostQuitMessage PostQuitMessage;\r
1253 WinNtDefWindowProc DefWindowProc;\r
1254 WinNtLoadIcon LoadIcon;\r
1255 WinNtLoadCursor LoadCursor;\r
1256 WinNtGetStockObject GetStockObject;\r
1257 WinNtSetViewportOrgEx SetViewportOrgEx;\r
1258 WinNtSetWindowOrgEx SetWindowOrgEx;\r
1259 WinNtMoveWindow MoveWindow;\r
1260 WinNtGetWindowRect GetWindowRect;\r
1261\r
1262 WinNtGetMessage GetMessage;\r
1263 WinNtTranslateMessage TranslateMessage;\r
1264 WinNtDispatchMessage DispatchMessage;\r
1265\r
1266 WinNtGetProcessHeap GetProcessHeap;\r
1267 WinNtHeapAlloc HeapAlloc;\r
1268 WinNtHeapFree HeapFree;\r
1269\r
1270} EFI_WIN_NT_THUNK_PROTOCOL;\r
1271\r
1272#endif\r
1273\r
1274extern EFI_GUID gEfiWinNtThunkProtocolGuid;\r
1275\r
1276#endif\r