]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/Include/Protocol/WinNtThunk.h
Fixed update file time error problem.
[mirror_edk2.git] / Nt32Pkg / Include / Protocol / WinNtThunk.h
CommitLineData
6ae81428 1/**@file\r
45a20a7f 2\r
f515069c 3Copyright (c) 2006 - 2010, 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
1107//\r
1108//\r
1109//\r
1110\r
99e1dd89 1111#define EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE SIGNATURE_32 ('N', 'T', 'T', 'T')\r
45a20a7f 1112\r
1113typedef struct {\r
1114 UINT64 Signature;\r
1115\r
1116 //\r
1117 // Win32 Process APIs\r
1118 //\r
1119 WinNtGetProcAddress GetProcAddress;\r
1120 WinNtGetTickCount GetTickCount;\r
1121 WinNtLoadLibraryEx LoadLibraryEx;\r
1122 WinNtFreeLibrary FreeLibrary;\r
1123\r
1124 WinNtSetPriorityClass SetPriorityClass;\r
1125 WinNtSetThreadPriority SetThreadPriority;\r
1126 WinNtSleep Sleep;\r
1127\r
1128 WinNtSuspendThread SuspendThread;\r
1129 WinNtGetCurrentThread GetCurrentThread;\r
1130 WinNtGetCurrentThreadId GetCurrentThreadId;\r
1131 WinNtGetCurrentProcess GetCurrentProcess;\r
1132 WinNtCreateThread CreateThread;\r
1133 WinNtTerminateThread TerminateThread;\r
1134 WinNtSendMessage SendMessage;\r
1135 WinNtExitThread ExitThread;\r
1136 WinNtResumeThread ResumeThread;\r
1137 WinNtDuplicateHandle DuplicateHandle;\r
1138\r
1139 //\r
1140 // Wint32 Mutex primitive\r
1141 //\r
1142 WinNtInitializeCriticalSection InitializeCriticalSection;\r
1143 WinNtEnterCriticalSection EnterCriticalSection;\r
1144 WinNtLeaveCriticalSection LeaveCriticalSection;\r
1145 WinNtDeleteCriticalSection DeleteCriticalSection;\r
1146 WinNtTlsAlloc TlsAlloc;\r
1147 WinNtTlsFree TlsFree;\r
1148 WinNtTlsSetValue TlsSetValue;\r
1149 WinNtTlsGetValue TlsGetValue;\r
1150 WinNtCreateSemaphore CreateSemaphore;\r
1151 WinNtWaitForSingleObject WaitForSingleObject;\r
1152 WinNtReleaseSemaphore ReleaseSemaphore;\r
1153\r
1154 //\r
1155 // Win32 Console APIs\r
1156 //\r
1157 WinNtCreateConsoleScreenBuffer CreateConsoleScreenBuffer;\r
1158 WinNtFillConsoleOutputAttribute FillConsoleOutputAttribute;\r
1159 WinNtFillConsoleOutputCharacter FillConsoleOutputCharacter;\r
1160 WinNtGetConsoleCursorInfo GetConsoleCursorInfo;\r
1161 WinNtGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents;\r
1162 WinNtPeekConsoleInput PeekConsoleInput;\r
1163 WinNtScrollConsoleScreenBuffer ScrollConsoleScreenBuffer;\r
1164 WinNtReadConsoleInput ReadConsoleInput;\r
1165\r
1166 WinNtSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer;\r
1167 WinNtSetConsoleCursorInfo SetConsoleCursorInfo;\r
1168 WinNtSetConsoleCursorPosition SetConsoleCursorPosition;\r
1169 WinNtSetConsoleScreenBufferSize SetConsoleScreenBufferSize;\r
1170 WinNtSetConsoleTitleW SetConsoleTitleW;\r
1171 WinNtWriteConsoleInput WriteConsoleInput;\r
1172 WinNtWriteConsoleOutput WriteConsoleOutput;\r
1173\r
1174 //\r
1175 // Win32 File APIs\r
1176 //\r
1177 WinNtCreateFile CreateFile;\r
1178 WinNtDeviceIoControl DeviceIoControl;\r
1179 WinNtCreateDirectory CreateDirectory;\r
1180 WinNtRemoveDirectory RemoveDirectory;\r
1181 WinNtGetFileAttributes GetFileAttributes;\r
1182 WinNtSetFileAttributes SetFileAttributes;\r
1183 WinNtCreateFileMapping CreateFileMapping;\r
1184 WinNtCloseHandle CloseHandle;\r
1185 WinNtDeleteFile DeleteFile;\r
1186 WinNtFindFirstFile FindFirstFile;\r
1187 WinNtFindNextFile FindNextFile;\r
1188 WinNtFindClose FindClose;\r
1189 WinNtFlushFileBuffers FlushFileBuffers;\r
1190 WinNtGetEnvironmentVariable GetEnvironmentVariable;\r
1191 WinNtGetLastError GetLastError;\r
1192 WinNtSetErrorMode SetErrorMode;\r
1193 WinNtGetStdHandle GetStdHandle;\r
1194 WinNtMapViewOfFileEx MapViewOfFileEx;\r
1195 WinNtReadFile ReadFile;\r
1196 WinNtSetEndOfFile SetEndOfFile;\r
1197 WinNtSetFilePointer SetFilePointer;\r
1198 WinNtWriteFile WriteFile;\r
1199 WinNtGetFileInformationByHandle GetFileInformationByHandle;\r
1200 WinNtGetDiskFreeSpace GetDiskFreeSpace;\r
1201 WinNtGetDiskFreeSpaceEx GetDiskFreeSpaceEx;\r
1202 WinNtMoveFile MoveFile;\r
1203 WinNtSetFileTime SetFileTime;\r
1204 WinNtSystemTimeToFileTime SystemTimeToFileTime;\r
1205\r
1206 //\r
1207 // Win32 Time APIs\r
1208 //\r
f515069c 1209 WinNtLocalFileTimeToFileTime LocalFileTimeToFileTime;\r
45a20a7f 1210 WinNtFileTimeToLocalFileTime FileTimeToLocalFileTime;\r
1211 WinNtFileTimeToSystemTime FileTimeToSystemTime;\r
1212 WinNtGetSystemTime GetSystemTime;\r
1213 WinNtSetSystemTime SetSystemTime;\r
1214 WinNtGetLocalTime GetLocalTime;\r
1215 WinNtSetLocalTime SetLocalTime;\r
1216 WinNtGetTimeZoneInformation GetTimeZoneInformation;\r
1217 WinNtSetTimeZoneInformation SetTimeZoneInformation;\r
1218 WinNttimeSetEvent timeSetEvent;\r
1219 WinNttimeKillEvent timeKillEvent;\r
1220\r
1221 //\r
1222 // Win32 Serial APIs\r
1223 //\r
1224 WinNtClearCommError ClearCommError;\r
1225 WinNtEscapeCommFunction EscapeCommFunction;\r
1226 WinNtGetCommModemStatus GetCommModemStatus;\r
1227 WinNtGetCommState GetCommState;\r
1228 WinNtSetCommState SetCommState;\r
1229 WinNtPurgeComm PurgeComm;\r
1230 WinNtSetCommTimeouts SetCommTimeouts;\r
1231\r
1232 WinNtExitProcess ExitProcess;\r
1233\r
1234 WinNtSprintf SPrintf;\r
1235\r
1236 WinNtGetDesktopWindow GetDesktopWindow;\r
1237 WinNtGetForegroundWindow GetForegroundWindow;\r
1238 WinNtCreateWindowEx CreateWindowEx;\r
1239 WinNtShowWindow ShowWindow;\r
1240 WinNtUpdateWindow UpdateWindow;\r
1241 WinNtDestroyWindow DestroyWindow;\r
1242 WinNtInvalidateRect InvalidateRect;\r
1243 WinNtGetWindowDC GetWindowDC;\r
1244 WinNtGetClientRect GetClientRect;\r
1245 WinNtAdjustWindowRect AdjustWindowRect;\r
1246 WinNtSetDIBitsToDevice SetDIBitsToDevice;\r
1247 WinNtBitBlt BitBlt;\r
1248 WinNtGetDC GetDC;\r
1249 WinNtReleaseDC ReleaseDC;\r
1250 WinNtRegisterClassEx RegisterClassEx;\r
1251 WinNtUnregisterClass UnregisterClass;\r
1252\r
1253 WinNtBeginPaint BeginPaint;\r
1254 WinNtEndPaint EndPaint;\r
1255 WinNtPostQuitMessage PostQuitMessage;\r
1256 WinNtDefWindowProc DefWindowProc;\r
1257 WinNtLoadIcon LoadIcon;\r
1258 WinNtLoadCursor LoadCursor;\r
1259 WinNtGetStockObject GetStockObject;\r
1260 WinNtSetViewportOrgEx SetViewportOrgEx;\r
1261 WinNtSetWindowOrgEx SetWindowOrgEx;\r
1262 WinNtMoveWindow MoveWindow;\r
1263 WinNtGetWindowRect GetWindowRect;\r
1264\r
1265 WinNtGetMessage GetMessage;\r
1266 WinNtTranslateMessage TranslateMessage;\r
1267 WinNtDispatchMessage DispatchMessage;\r
1268\r
1269 WinNtGetProcessHeap GetProcessHeap;\r
1270 WinNtHeapAlloc HeapAlloc;\r
1271 WinNtHeapFree HeapFree;\r
1272\r
1273} EFI_WIN_NT_THUNK_PROTOCOL;\r
1274\r
1275extern EFI_GUID gEfiWinNtThunkProtocolGuid;\r
1276\r
1277#endif\r