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