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