]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/Include/Protocol/WinNtThunk.h
Add support for the GetTimerValue() to the CPU AP for NT32. This also requires some...
[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
8f2a5f80 4This program and the accompanying materials \r
45a20a7f 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
f515069c
ED
679typedef\r
680WINBASEAPI\r
681BOOL\r
682(WINAPI *WinNtLocalFileTimeToFileTime) (\r
683 CONST FILETIME *LocalFileTime,\r
684 LPFILETIME FileTime\r
685 );\r
686\r
687\r
45a20a7f 688typedef\r
689WINBASEAPI\r
690BOOL\r
691(WINAPI *WinNtFileTimeToLocalFileTime) (\r
692 CONST FILETIME *FileTime,\r
693 LPFILETIME LocalFileTime\r
694 );\r
695\r
696typedef\r
697WINBASEAPI\r
698BOOL\r
699(WINAPI *WinNtFileTimeToSystemTime) (\r
700 CONST FILETIME *FileTime,\r
701 LPSYSTEMTIME SystemTime\r
702 );\r
703\r
704typedef\r
705WINBASEAPI\r
706HANDLE\r
707(WINAPI *WinNtFindFirstFile) (\r
708 LPCTSTR FileName,\r
709 LPWIN32_FIND_DATA FindFileData\r
710 );\r
711\r
712typedef\r
713WINBASEAPI\r
714BOOL\r
715(WINAPI *WinNtFindNextFile) (\r
716 HANDLE FindFile,\r
717 LPWIN32_FIND_DATA FindFileData\r
718 );\r
719\r
720typedef\r
721WINBASEAPI\r
722BOOL\r
723(WINAPI *WinNtFindClose) (\r
724 HANDLE FindFile\r
725 );\r
726\r
727typedef\r
728WINBASEAPI\r
729BOOL\r
730(WINAPI *WinNtGetCommState) (\r
731 HANDLE FileHandle,\r
732 LPDCB DCB\r
733 );\r
734\r
735typedef\r
736WINBASEAPI\r
737BOOL\r
738(WINAPI *WinNtSetCommState) (\r
739 HANDLE FileHandle,\r
740 LPDCB DCB\r
741 );\r
742\r
743typedef\r
744WINBASEAPI\r
745BOOL\r
746(WINAPI *WinNtSetCommState) (\r
747 HANDLE FileHandle,\r
748 LPDCB DCB\r
749 );\r
750\r
751typedef\r
752WINBASEAPI\r
753BOOL\r
754(WINAPI *WinNtSetCommTimeouts) (\r
755 HANDLE FileHandle,\r
756 LPCOMMTIMEOUTS CommTimeouts\r
757 );\r
758\r
759typedef\r
760WINBASEAPI\r
761VOID\r
762(WINAPI *WinNtExitProcess) (\r
763 UINT uExitCode // exit code for all threads\r
764 );\r
765\r
766typedef\r
767WINBASEAPI\r
768BOOL\r
769(WINAPI *WinNtPurgeComm) (\r
770 HANDLE FileHandle,\r
771 DWORD Flags\r
772 );\r
773\r
774typedef\r
775WINBASEAPI\r
776BOOL\r
777(WINAPI *WinNtEscapeCommFunction) (\r
778 HANDLE FileHandle,\r
779 DWORD Func\r
780 );\r
781\r
782typedef\r
783WINBASEAPI\r
784BOOL\r
785(WINAPI *WinNtGetCommModemStatus) (\r
786 HANDLE FileHandle,\r
787 LPDWORD ModemStat\r
788 );\r
789\r
790typedef\r
791WINBASEAPI\r
792BOOL\r
793(WINAPI *WinNtClearCommError) (\r
794 HANDLE FileHandle,\r
795 LPDWORD Errors,\r
796 LPCOMSTAT Stat\r
797 );\r
798\r
799typedef\r
800WINUSERAPI\r
801INT32\r
802(WINAPIV *WinNtSprintf) (\r
803 LPWSTR Buffer,\r
804 size_t Count,\r
805 LPCWSTR String,\r
806 ...\r
807 );\r
808\r
809typedef\r
810WINUSERAPI\r
811HWND\r
812(WINAPI *WinNtGetDesktopWindow) (\r
813 VOID\r
814 );\r
815\r
816typedef\r
817WINUSERAPI\r
818HWND\r
819(WINAPI *WinNtGetForegroundWindow) (\r
820 VOID\r
821 );\r
822\r
823typedef\r
824WINUSERAPI\r
825HWND\r
826(WINAPI *WinNtCreateWindowEx) (\r
827 DWORD dwExStyle,\r
828 LPCTSTR lpClassName,\r
829 LPCTSTR lpWindowName,\r
830 DWORD dwStyle,\r
831 INT32 x,\r
832 INT32 y,\r
833 INT32 nWidth,\r
834 INT32 nHeight,\r
835 HWND hWndParent,\r
836 HMENU hMenu,\r
837 HINSTANCE hInstance,\r
838 LPVOID *lpParam\r
839 );\r
840\r
841typedef\r
842WINUSERAPI\r
843BOOL\r
844(WINAPI *WinNtUpdateWindow) (\r
845 HWND hWnd\r
846 );\r
847\r
848typedef\r
849WINUSERAPI\r
850BOOL\r
851(WINAPI *WinNtShowWindow) (\r
852 HWND hWnd,\r
853 INT32 nCmdShow\r
854 );\r
855\r
856typedef\r
857WINGDIAPI\r
858BOOL\r
859(WINAPI *WinNtDestroyWindow) (\r
860 HWND hWnd\r
861 );\r
862\r
863typedef\r
864WINUSERAPI\r
865HDC\r
866(WINAPI *WinNtGetWindowDC) (\r
867 HWND hWnd\r
868 );\r
869\r
870typedef\r
871WINUSERAPI\r
872BOOL\r
873(WINAPI *WinNtGetClientRect) (\r
874 HWND hWnd,\r
875 LPRECT lpRect\r
876 );\r
877\r
878typedef\r
879WINUSERAPI\r
880BOOL\r
881(WINAPI *WinNtAdjustWindowRect) (\r
882 LPRECT lpRect,\r
883 DWORD dwStyle,\r
884 BOOL bMenu\r
885 );\r
886\r
887typedef\r
888WINGDIAPI\r
889INT32\r
890(WINAPI *WinNtSetDIBitsToDevice) (\r
891 HDC,\r
892 INT32,\r
893 INT32,\r
894 DWORD,\r
895 DWORD,\r
896 INT32,\r
897 INT32,\r
898 UINT,\r
899 UINT,\r
900 CONST VOID *,\r
901 CONST BITMAPINFO *,\r
902 UINT\r
903 );\r
904\r
905typedef\r
906WINGDIAPI\r
907BOOL\r
908(WINAPI *WinNtBitBlt) (\r
909 HDC,\r
910 INT32,\r
911 INT32,\r
912 INT32,\r
913 INT32,\r
914 HDC,\r
915 INT32,\r
916 INT32,\r
917 DWORD\r
918 );\r
919\r
920typedef\r
921WINUSERAPI\r
922BOOL\r
923(WINAPI *WinNtInvalidateRect) (\r
924 HWND hWnd,\r
925 CONST RECT *lpRect,\r
926 BOOL bErase\r
927 );\r
928\r
929typedef\r
930WINUSERAPI\r
931HDC\r
932(WINAPI *WinNtGetDC) (\r
933 HWND hWnd\r
934 );\r
935\r
936typedef\r
937WINUSERAPI\r
938INT32\r
939(WINAPI *WinNtReleaseDC) (\r
940 HWND hWnd,\r
941 HDC hDC\r
942 );\r
943\r
944typedef\r
945WINUSERAPI\r
946ATOM\r
947(WINAPI *WinNtRegisterClassEx) (\r
948 CONST WNDCLASSEX *\r
949 );\r
950\r
951typedef\r
952WINUSERAPI\r
953BOOL\r
954(WINAPI *WinNtUnregisterClass) (\r
955 LPCTSTR lpClassName,\r
956 HINSTANCE hInstance\r
957 );\r
958\r
959typedef\r
960WINUSERAPI\r
961HDC\r
962(WINAPI *WinNtBeginPaint) (\r
963 HWND hWnd,\r
964 LPPAINTSTRUCT lpPaint\r
965 );\r
966\r
967typedef\r
968WINUSERAPI\r
969BOOL\r
970(WINAPI *WinNtEndPaint) (\r
971 HWND hWnd,\r
972 CONST PAINTSTRUCT *lpPaint\r
973 );\r
974\r
975typedef\r
976WINUSERAPI\r
977VOID\r
978(WINAPI *WinNtPostQuitMessage) (\r
979 INT32 nExitCode\r
980 );\r
981\r
982typedef\r
983WINUSERAPI\r
984LRESULT\r
985(WINAPI *WinNtDefWindowProc) (\r
986 HWND hWnd,\r
987 UINT Msg,\r
988 WPARAM wParam,\r
989 LPARAM lParam\r
990 );\r
991\r
992typedef\r
993WINUSERAPI\r
994HICON\r
995(WINAPI *WinNtLoadIcon) (\r
996 HINSTANCE hInstance,\r
997 LPCTSTR lpIconName\r
998 );\r
999\r
1000typedef\r
1001WINUSERAPI\r
1002HCURSOR\r
1003(WINAPI *WinNtLoadCursor) (\r
1004 HINSTANCE hInstance,\r
1005 LPCTSTR lpCursorName\r
1006 );\r
1007\r
1008typedef\r
1009WINGDIAPI\r
1010HGDIOBJ\r
1011(WINAPI *WinNtGetStockObject) (\r
1012 INT32\r
1013 );\r
1014\r
1015typedef\r
1016WINGDIAPI\r
1017BOOL\r
1018(WINAPI *WinNtSetViewportOrgEx) (\r
1019 HDC,\r
1020 INT32,\r
1021 INT32,\r
1022 LPPOINT\r
1023 );\r
1024\r
1025typedef\r
1026WINGDIAPI\r
1027BOOL\r
1028(WINAPI *WinNtSetWindowOrgEx) (\r
1029 HDC,\r
1030 INT32,\r
1031 INT32,\r
1032 LPPOINT\r
1033 );\r
1034typedef\r
1035WINGDIAPI\r
1036BOOL\r
1037(WINAPI *WinNtMoveWindow) (\r
1038 HWND,\r
1039 INT32,\r
1040 INT32,\r
1041 INT32,\r
1042 INT32,\r
1043 BOOL\r
1044 );\r
1045\r
1046typedef\r
1047WINGDIAPI\r
1048BOOL\r
1049(WINAPI *WinNtGetWindowRect) (\r
1050 HWND,\r
1051 LPRECT\r
1052 );\r
1053\r
1054typedef\r
1055WINUSERAPI\r
1056BOOL\r
1057(WINAPI *WinNtGetMessage) (\r
1058 LPMSG lpMsg,\r
1059 HWND hWnd,\r
1060 UINT wMsgFilterMin,\r
1061 UINT wMsgFilterMax\r
1062 );\r
1063\r
1064typedef\r
1065WINUSERAPI\r
1066BOOL\r
1067(WINAPI *WinNtTranslateMessage) (\r
1068 CONST MSG *lpMsg\r
1069 );\r
1070\r
1071typedef\r
1072WINUSERAPI\r
1073BOOL\r
1074(WINAPI *WinNtDispatchMessage) (\r
1075 CONST MSG *lpMsg\r
1076 );\r
1077\r
1078typedef\r
1079WINUSERAPI\r
1080HANDLE\r
1081(WINAPI *WinNtGetProcessHeap) ();\r
1082\r
1083typedef\r
1084WINUSERAPI\r
1085LPVOID\r
1086(WINAPI *WinNtHeapAlloc) (\r
1087 HANDLE hHeap,\r
1088 DWORD dwFlags,\r
1089 SIZE_T dwBytes\r
1090 );\r
1091\r
1092typedef\r
1093WINUSERAPI\r
1094BOOL\r
1095(WINAPI *WinNtHeapFree) (\r
1096 HANDLE hHeap,\r
1097 DWORD dwFlags,\r
1098 LPVOID lpMem\r
1099 );\r
1100\r
1101typedef\r
1102WINBASEAPI\r
1103BOOL\r
1104(WINAPI *WinNtFreeLibrary) (\r
1105 HANDLE ModHandle\r
1106 );\r
831ff057 1107typedef \r
1108WINBASEAPI\r
1109BOOL\r
1110(WINAPI *WinNtQueryPerformanceCounter) (\r
1111 LARGE_INTEGER *PerformanceCount\r
1112 );\r
1113 \r
1114typedef \r
1115WINBASEAPI\r
1116BOOL\r
1117(WINAPI *WinNtQueryPerformanceFrequency) (\r
1118 LARGE_INTEGER *Frequency\r
1119 );\r
45a20a7f 1120//\r
1121//\r
1122//\r
1123\r
99e1dd89 1124#define EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE SIGNATURE_32 ('N', 'T', 'T', 'T')\r
45a20a7f 1125\r
1126typedef struct {\r
1127 UINT64 Signature;\r
1128\r
1129 //\r
1130 // Win32 Process APIs\r
1131 //\r
1132 WinNtGetProcAddress GetProcAddress;\r
1133 WinNtGetTickCount GetTickCount;\r
1134 WinNtLoadLibraryEx LoadLibraryEx;\r
1135 WinNtFreeLibrary FreeLibrary;\r
1136\r
1137 WinNtSetPriorityClass SetPriorityClass;\r
1138 WinNtSetThreadPriority SetThreadPriority;\r
1139 WinNtSleep Sleep;\r
1140\r
1141 WinNtSuspendThread SuspendThread;\r
1142 WinNtGetCurrentThread GetCurrentThread;\r
1143 WinNtGetCurrentThreadId GetCurrentThreadId;\r
1144 WinNtGetCurrentProcess GetCurrentProcess;\r
1145 WinNtCreateThread CreateThread;\r
1146 WinNtTerminateThread TerminateThread;\r
1147 WinNtSendMessage SendMessage;\r
1148 WinNtExitThread ExitThread;\r
1149 WinNtResumeThread ResumeThread;\r
1150 WinNtDuplicateHandle DuplicateHandle;\r
1151\r
1152 //\r
1153 // Wint32 Mutex primitive\r
1154 //\r
1155 WinNtInitializeCriticalSection InitializeCriticalSection;\r
1156 WinNtEnterCriticalSection EnterCriticalSection;\r
1157 WinNtLeaveCriticalSection LeaveCriticalSection;\r
1158 WinNtDeleteCriticalSection DeleteCriticalSection;\r
1159 WinNtTlsAlloc TlsAlloc;\r
1160 WinNtTlsFree TlsFree;\r
1161 WinNtTlsSetValue TlsSetValue;\r
1162 WinNtTlsGetValue TlsGetValue;\r
1163 WinNtCreateSemaphore CreateSemaphore;\r
1164 WinNtWaitForSingleObject WaitForSingleObject;\r
1165 WinNtReleaseSemaphore ReleaseSemaphore;\r
1166\r
1167 //\r
1168 // Win32 Console APIs\r
1169 //\r
1170 WinNtCreateConsoleScreenBuffer CreateConsoleScreenBuffer;\r
1171 WinNtFillConsoleOutputAttribute FillConsoleOutputAttribute;\r
1172 WinNtFillConsoleOutputCharacter FillConsoleOutputCharacter;\r
1173 WinNtGetConsoleCursorInfo GetConsoleCursorInfo;\r
1174 WinNtGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents;\r
1175 WinNtPeekConsoleInput PeekConsoleInput;\r
1176 WinNtScrollConsoleScreenBuffer ScrollConsoleScreenBuffer;\r
1177 WinNtReadConsoleInput ReadConsoleInput;\r
1178\r
1179 WinNtSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer;\r
1180 WinNtSetConsoleCursorInfo SetConsoleCursorInfo;\r
1181 WinNtSetConsoleCursorPosition SetConsoleCursorPosition;\r
1182 WinNtSetConsoleScreenBufferSize SetConsoleScreenBufferSize;\r
1183 WinNtSetConsoleTitleW SetConsoleTitleW;\r
1184 WinNtWriteConsoleInput WriteConsoleInput;\r
1185 WinNtWriteConsoleOutput WriteConsoleOutput;\r
1186\r
1187 //\r
1188 // Win32 File APIs\r
1189 //\r
1190 WinNtCreateFile CreateFile;\r
1191 WinNtDeviceIoControl DeviceIoControl;\r
1192 WinNtCreateDirectory CreateDirectory;\r
1193 WinNtRemoveDirectory RemoveDirectory;\r
1194 WinNtGetFileAttributes GetFileAttributes;\r
1195 WinNtSetFileAttributes SetFileAttributes;\r
1196 WinNtCreateFileMapping CreateFileMapping;\r
1197 WinNtCloseHandle CloseHandle;\r
1198 WinNtDeleteFile DeleteFile;\r
1199 WinNtFindFirstFile FindFirstFile;\r
1200 WinNtFindNextFile FindNextFile;\r
1201 WinNtFindClose FindClose;\r
1202 WinNtFlushFileBuffers FlushFileBuffers;\r
1203 WinNtGetEnvironmentVariable GetEnvironmentVariable;\r
1204 WinNtGetLastError GetLastError;\r
1205 WinNtSetErrorMode SetErrorMode;\r
1206 WinNtGetStdHandle GetStdHandle;\r
1207 WinNtMapViewOfFileEx MapViewOfFileEx;\r
1208 WinNtReadFile ReadFile;\r
1209 WinNtSetEndOfFile SetEndOfFile;\r
1210 WinNtSetFilePointer SetFilePointer;\r
1211 WinNtWriteFile WriteFile;\r
1212 WinNtGetFileInformationByHandle GetFileInformationByHandle;\r
1213 WinNtGetDiskFreeSpace GetDiskFreeSpace;\r
1214 WinNtGetDiskFreeSpaceEx GetDiskFreeSpaceEx;\r
1215 WinNtMoveFile MoveFile;\r
1216 WinNtSetFileTime SetFileTime;\r
1217 WinNtSystemTimeToFileTime SystemTimeToFileTime;\r
1218\r
1219 //\r
1220 // Win32 Time APIs\r
1221 //\r
f515069c 1222 WinNtLocalFileTimeToFileTime LocalFileTimeToFileTime;\r
45a20a7f 1223 WinNtFileTimeToLocalFileTime FileTimeToLocalFileTime;\r
1224 WinNtFileTimeToSystemTime FileTimeToSystemTime;\r
1225 WinNtGetSystemTime GetSystemTime;\r
1226 WinNtSetSystemTime SetSystemTime;\r
1227 WinNtGetLocalTime GetLocalTime;\r
1228 WinNtSetLocalTime SetLocalTime;\r
1229 WinNtGetTimeZoneInformation GetTimeZoneInformation;\r
1230 WinNtSetTimeZoneInformation SetTimeZoneInformation;\r
1231 WinNttimeSetEvent timeSetEvent;\r
1232 WinNttimeKillEvent timeKillEvent;\r
1233\r
1234 //\r
1235 // Win32 Serial APIs\r
1236 //\r
1237 WinNtClearCommError ClearCommError;\r
1238 WinNtEscapeCommFunction EscapeCommFunction;\r
1239 WinNtGetCommModemStatus GetCommModemStatus;\r
1240 WinNtGetCommState GetCommState;\r
1241 WinNtSetCommState SetCommState;\r
1242 WinNtPurgeComm PurgeComm;\r
1243 WinNtSetCommTimeouts SetCommTimeouts;\r
1244\r
1245 WinNtExitProcess ExitProcess;\r
1246\r
1247 WinNtSprintf SPrintf;\r
1248\r
1249 WinNtGetDesktopWindow GetDesktopWindow;\r
1250 WinNtGetForegroundWindow GetForegroundWindow;\r
1251 WinNtCreateWindowEx CreateWindowEx;\r
1252 WinNtShowWindow ShowWindow;\r
1253 WinNtUpdateWindow UpdateWindow;\r
1254 WinNtDestroyWindow DestroyWindow;\r
1255 WinNtInvalidateRect InvalidateRect;\r
1256 WinNtGetWindowDC GetWindowDC;\r
1257 WinNtGetClientRect GetClientRect;\r
1258 WinNtAdjustWindowRect AdjustWindowRect;\r
1259 WinNtSetDIBitsToDevice SetDIBitsToDevice;\r
1260 WinNtBitBlt BitBlt;\r
1261 WinNtGetDC GetDC;\r
1262 WinNtReleaseDC ReleaseDC;\r
1263 WinNtRegisterClassEx RegisterClassEx;\r
1264 WinNtUnregisterClass UnregisterClass;\r
1265\r
1266 WinNtBeginPaint BeginPaint;\r
1267 WinNtEndPaint EndPaint;\r
1268 WinNtPostQuitMessage PostQuitMessage;\r
1269 WinNtDefWindowProc DefWindowProc;\r
1270 WinNtLoadIcon LoadIcon;\r
1271 WinNtLoadCursor LoadCursor;\r
1272 WinNtGetStockObject GetStockObject;\r
1273 WinNtSetViewportOrgEx SetViewportOrgEx;\r
1274 WinNtSetWindowOrgEx SetWindowOrgEx;\r
1275 WinNtMoveWindow MoveWindow;\r
1276 WinNtGetWindowRect GetWindowRect;\r
1277\r
1278 WinNtGetMessage GetMessage;\r
1279 WinNtTranslateMessage TranslateMessage;\r
1280 WinNtDispatchMessage DispatchMessage;\r
1281\r
1282 WinNtGetProcessHeap GetProcessHeap;\r
1283 WinNtHeapAlloc HeapAlloc;\r
1284 WinNtHeapFree HeapFree;\r
831ff057 1285 \r
1286 WinNtQueryPerformanceCounter QueryPerformanceCounter;\r
1287 WinNtQueryPerformanceFrequency QueryPerformanceFrequency;\r
1288 \r
45a20a7f 1289} EFI_WIN_NT_THUNK_PROTOCOL;\r
1290\r
1291extern EFI_GUID gEfiWinNtThunkProtocolGuid;\r
1292\r
1293#endif\r