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