/**@file Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: WinNtThunk.h Abstract: This protocol allows an EFI driver (DLL) in the NT emulation envirnment to make Win32 API calls. NEVER make a Win32 call directly, always make the call via this protocol. There are no This pointers on the protocol member functions as they map exactly into Win32 system calls. YOU MUST include EfiWinNT.h in place of Efi.h to make this file compile. **/ #ifndef __WIN_NT_THUNK_H__ #define __WIN_NT_THUNK_H__ #include #define EFI_WIN_NT_THUNK_PROTOCOL_GUID \ { 0x58c518b1, 0x76f3, 0x11d4, { 0xbc, 0xea, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } } typedef WINBASEAPI VOID (WINAPI *WinNtSleep) ( DWORD Milliseconds ); typedef WINBASEAPI DWORD (WINAPI *WinNtSuspendThread) ( HANDLE hThread ); typedef WINBASEAPI HANDLE (WINAPI *WinNtGetCurrentThread) ( VOID ); typedef WINBASEAPI DWORD (WINAPI *WinNtGetCurrentThreadId) ( VOID ); typedef WINBASEAPI HANDLE (WINAPI *WinNtGetCurrentProcess) ( VOID ); typedef WINBASEAPI HANDLE (WINAPI *WinNtCreateThread) ( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); typedef WINBASEAPI BOOL (WINAPI *WinNtTerminateThread) ( HANDLE hThread, DWORD dwExitCode ); typedef WINBASEAPI BOOL (WINAPI *WinNtSendMessage) ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); typedef WINBASEAPI VOID (WINAPI *WinNtExitThread) ( DWORD dwExitCode ); typedef WINBASEAPI DWORD (WINAPI *WinNtResumeThread) ( HANDLE hThread ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetThreadPriority) ( HANDLE hThread, INTN nPriority ); typedef WINBASEAPI VOID (WINAPI *WinNtInitializeCriticalSection) ( LPCRITICAL_SECTION lpCriticalSection ); typedef WINBASEAPI VOID (WINAPI *WinNtDeleteCriticalSection) ( LPCRITICAL_SECTION lpCriticalSection ); typedef WINBASEAPI VOID (WINAPI *WinNtEnterCriticalSection) ( LPCRITICAL_SECTION lpCriticalSection ); typedef WINBASEAPI VOID (WINAPI *WinNtLeaveCriticalSection) ( LPCRITICAL_SECTION lpCriticalSection ); typedef WINBASEAPI BOOL (WINAPI *WinNtTlsAlloc) ( VOID ); typedef WINBASEAPI LPVOID (WINAPI *WinNtTlsGetValue) ( DWORD dwTlsIndex ); typedef WINBASEAPI BOOL (WINAPI *WinNtTlsSetValue) ( DWORD dwTlsIndex, LPVOID lpTlsValue ); typedef WINBASEAPI BOOL (WINAPI *WinNtTlsFree) ( DWORD dwTlsIndex ); typedef WINBASEAPI HANDLE (WINAPI *WinNtCreateSemaphore) ( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName ); typedef WINBASEAPI DWORD (WINAPI *WinNtWaitForSingleObject) ( HANDLE hHandle, DWORD dwMilliseconds ); typedef WINBASEAPI BOOL (WINAPI *WinNtReleaseSemaphore) ( HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount ); typedef WINBASEAPI BOOL (WINAPI *WinNtDuplicateHandle) ( HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions ); typedef WINBASEAPI HANDLE (WINAPI *WinNtCreateConsoleScreenBuffer) ( DWORD DesiredAccess, DWORD ShareMode, CONST SECURITY_ATTRIBUTES *SecurityAttributes, DWORD Flags, LPVOID ScreenBufferData ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetConsoleScreenBufferSize) ( HANDLE ConsoleOutput, COORD Size ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetConsoleActiveScreenBuffer) ( HANDLE ConsoleOutput ); typedef WINBASEAPI BOOL (WINAPI *WinNtFillConsoleOutputAttribute) ( HANDLE ConsoleOutput, WORD Attribute, DWORD Length, COORD WriteCoord, LPDWORD NumberOfAttrsWritten ); typedef WINBASEAPI BOOL (WINAPI *WinNtFillConsoleOutputCharacter) ( HANDLE ConsoleOutput, TCHAR Character, DWORD Length, COORD WriteCoord, LPDWORD NumberOfCharsWritten ); typedef WINBASEAPI BOOL (WINAPI *WinNtWriteConsoleOutput) ( HANDLE ConsoleOutput, CONST CHAR_INFO *Buffer, COORD BufferSize, COORD BufferCoord, PSMALL_RECT WriteRegion ); typedef WINBASEAPI BOOL (WINAPI *WinNtScrollConsoleScreenBuffer) ( HANDLE ConsoleOutput, CONST SMALL_RECT *ScrollRectangle, CONST SMALL_RECT *ClipRectangle, COORD DestinationOrigin, CONST CHAR_INFO *Fill ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetConsoleTitleW) ( LPCTSTR ConsoleTitle ); typedef WINBASEAPI BOOL (WINAPI *WinNtGetConsoleCursorInfo) ( HANDLE ConsoleOutput, PCONSOLE_CURSOR_INFO ConsoleCursorInfo ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetConsoleCursorInfo) ( HANDLE ConsoleOutput, CONST CONSOLE_CURSOR_INFO *ConsoleCursorInfo ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetPriorityClass) ( HANDLE Process, DWORD PriorityClass ); typedef WINBASEAPI BOOL (WINAPI *WinNtWriteConsoleInput) ( HANDLE ConsoleInput, CONST INPUT_RECORD *Buffer, DWORD Legnth, LPDWORD NumberOfEventsWritten ); typedef WINBASEAPI BOOL (WINAPI *WinNtGetNumberOfConsoleInputEvents) ( HANDLE ConsoleInput, LPDWORD NumberOfEvents ); typedef WINBASEAPI HANDLE (WINAPI *WinNtGetStdHandle) ( DWORD StdHandle ); typedef WINBASEAPI BOOL (WINAPI *WinNtReadConsoleInput) ( HANDLE ConsoleInput, PINPUT_RECORD Buffer, DWORD Length, LPDWORD NumberOfEventsRead ); typedef WINBASEAPI BOOL (WINAPI *WinNtPeekConsoleInput) ( HANDLE ConsoleInput, PINPUT_RECORD Buffer, DWORD Length, LPDWORD NumberOfEventsRead ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetConsoleCursorPosition) ( HANDLE ConsoleInput, COORD CursorPosition ); typedef WINBASEAPI HANDLE (WINAPI *WinNtCreateFile) ( LPCWSTR FileName, DWORD DesiredAccess, DWORD SharedMode, LPSECURITY_ATTRIBUTES SecurityAttributes, DWORD CreationDisposition, DWORD FlagsAndAttributes, HANDLE TemplateFile ); typedef WINBASEAPI BOOL (WINAPI *WinNtDeviceIoControl) ( HANDLE DeviceHandle, DWORD IoControlCode, LPVOID InBuffer, DWORD InBufferSize, LPVOID OutBuffer, DWORD OutBufferSize, LPDWORD BytesReturned, LPOVERLAPPED Overlapped ); typedef WINBASEAPI BOOL (WINAPI *WinNtCreateDirectory) ( LPCWSTR PathName, LPSECURITY_ATTRIBUTES SecurityAttributes ); typedef WINBASEAPI BOOL (WINAPI *WinNtRemoveDirectory) ( LPCWSTR PathName ); typedef WINBASEAPI DWORD (WINAPI *WinNtGetFileAttributes) ( LPCWSTR FileName ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetFileAttributes) ( LPCWSTR FileName, DWORD FileAttributes ); typedef WINBASEAPI HANDLE (WINAPI *WinNtCreateFileMapping) ( HANDLE FileHandle, LPSECURITY_ATTRIBUTES Attributes, DWORD Protect, DWORD MaximumSizeHigh, DWORD MaximumSizeLow, LPCTSTR Name ); typedef WINBASEAPI LPVOID (WINAPI *WinNtMapViewOfFileEx) ( HANDLE FileHandle, DWORD DesiredAccess, DWORD FileOffsetHigh, DWORD FileOffsetLow, DWORD NumberOfBytesToMap, LPVOID BaseAddress ); typedef WINBASEAPI DWORD (WINAPI *WinNtGetEnvironmentVariable) ( LPCTSTR Name, LPTSTR Buffer, DWORD Size ); typedef WINBASEAPI BOOL (WINAPI *WinNtCloseHandle) ( HANDLE Object ); typedef WINBASEAPI DWORD (WINAPI *WinNtSetFilePointer) ( HANDLE FileHandle, LONG DistanceToMove, PLONG DistanceToHoveHigh, DWORD MoveMethod ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetEndOfFile) ( HANDLE FileHandle ); typedef WINBASEAPI BOOL (WINAPI *WinNtReadFile) ( HANDLE FileHandle, LPVOID Buffer, DWORD NumberOfBytesToRead, LPDWORD NumberOfBytesRead, LPOVERLAPPED Overlapped ); typedef WINBASEAPI BOOL (WINAPI *WinNtWriteFile) ( HANDLE FileHandle, LPCVOID Buffer, DWORD NumberOfBytesToWrite, LPDWORD NumberOfBytesWritten, LPOVERLAPPED Overlapped ); typedef WINBASEAPI BOOL (WINAPI *WinNtGetFileInformationByHandle) ( HANDLE FileHandle, BY_HANDLE_FILE_INFORMATION *FileInfo ); typedef WINBASEAPI BOOL (WINAPI *WinNtGetDiskFreeSpace) ( LPCTSTR RootPathName, LPDWORD SectorsPerCluster, LPDWORD BytesPerSector, LPDWORD NumberOfFreeClusters, LPDWORD TotalNumberOfClusters ); typedef WINBASEAPI BOOL (WINAPI *WinNtGetDiskFreeSpaceEx) ( LPCTSTR DirectoryName, PULARGE_INTEGER FreeBytesAvailable, PULARGE_INTEGER TotalNumberOfBytes, PULARGE_INTEGER TotoalNumberOfFreeBytes ); typedef WINBASEAPI BOOL (WINAPI *WinNtMoveFile) ( LPCTSTR ExistingFileName, LPCTSTR NewFileName ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetFileTime) ( HANDLE FileHandle, FILETIME *CreationTime, FILETIME *LastAccessTime, FILETIME *LastWriteTime ); typedef WINBASEAPI BOOL (WINAPI *WinNtSystemTimeToFileTime) ( SYSTEMTIME * SystemTime, FILETIME * FileTime ); typedef WINBASEAPI BOOL (WINAPI *WinNtDeleteFile) ( LPCTSTR FileName ); typedef WINBASEAPI BOOL (WINAPI *WinNtFlushFileBuffers) ( HANDLE ); typedef WINBASEAPI DWORD (WINAPI *WinNtGetLastError) ( VOID ); typedef WINBASEAPI UINT (WINAPI *WinNtSetErrorMode) ( UINT Mode ); typedef WINBASEAPI DWORD (WINAPI *WinNtGetTickCount) ( VOID ); typedef WINBASEAPI HMODULE (WINAPI *WinNtLoadLibraryEx) ( LPCTSTR LibFileName, HANDLE FileHandle, DWORD Flags ); typedef WINBASEAPI FARPROC (WINAPI *WinNtGetProcAddress) ( HMODULE Module, LPCSTR ProcName ); typedef WINBASEAPI DWORD (WINAPI *WinNtGetTimeZoneInformation) ( LPTIME_ZONE_INFORMATION timeZoneInformation ); typedef WINBASEAPI MMRESULT (WINAPI *WinNttimeSetEvent) ( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent ); typedef WINBASEAPI MMRESULT (WINAPI *WinNttimeKillEvent) ( UINT uTimerID ); typedef WINBASEAPI DWORD (WINAPI *WinNtSetTimeZoneInformation) ( LPTIME_ZONE_INFORMATION timeZoneInformation ); typedef WINBASEAPI VOID (WINAPI *WinNtGetSystemTime) ( LPSYSTEMTIME SystemTime ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetSystemTime) ( CONST SYSTEMTIME *SystemTime ); typedef WINBASEAPI VOID (WINAPI *WinNtGetLocalTime) ( LPSYSTEMTIME SystemTime ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetLocalTime) ( CONST SYSTEMTIME *SystemTime ); typedef WINBASEAPI BOOL (WINAPI *WinNtLocalFileTimeToFileTime) ( CONST FILETIME *LocalFileTime, LPFILETIME FileTime ); typedef WINBASEAPI BOOL (WINAPI *WinNtFileTimeToLocalFileTime) ( CONST FILETIME *FileTime, LPFILETIME LocalFileTime ); typedef WINBASEAPI BOOL (WINAPI *WinNtFileTimeToSystemTime) ( CONST FILETIME *FileTime, LPSYSTEMTIME SystemTime ); typedef WINBASEAPI HANDLE (WINAPI *WinNtFindFirstFile) ( LPCTSTR FileName, LPWIN32_FIND_DATA FindFileData ); typedef WINBASEAPI BOOL (WINAPI *WinNtFindNextFile) ( HANDLE FindFile, LPWIN32_FIND_DATA FindFileData ); typedef WINBASEAPI BOOL (WINAPI *WinNtFindClose) ( HANDLE FindFile ); typedef WINBASEAPI BOOL (WINAPI *WinNtGetCommState) ( HANDLE FileHandle, LPDCB DCB ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetCommState) ( HANDLE FileHandle, LPDCB DCB ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetCommState) ( HANDLE FileHandle, LPDCB DCB ); typedef WINBASEAPI BOOL (WINAPI *WinNtSetCommTimeouts) ( HANDLE FileHandle, LPCOMMTIMEOUTS CommTimeouts ); typedef WINBASEAPI VOID (WINAPI *WinNtExitProcess) ( UINT uExitCode // exit code for all threads ); typedef WINBASEAPI BOOL (WINAPI *WinNtPurgeComm) ( HANDLE FileHandle, DWORD Flags ); typedef WINBASEAPI BOOL (WINAPI *WinNtEscapeCommFunction) ( HANDLE FileHandle, DWORD Func ); typedef WINBASEAPI BOOL (WINAPI *WinNtGetCommModemStatus) ( HANDLE FileHandle, LPDWORD ModemStat ); typedef WINBASEAPI BOOL (WINAPI *WinNtClearCommError) ( HANDLE FileHandle, LPDWORD Errors, LPCOMSTAT Stat ); typedef WINUSERAPI INT32 (WINAPIV *WinNtSprintf) ( LPWSTR Buffer, size_t Count, LPCWSTR String, ... ); typedef WINUSERAPI HWND (WINAPI *WinNtGetDesktopWindow) ( VOID ); typedef WINUSERAPI HWND (WINAPI *WinNtGetForegroundWindow) ( VOID ); typedef WINUSERAPI HWND (WINAPI *WinNtCreateWindowEx) ( DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, INT32 x, INT32 y, INT32 nWidth, INT32 nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID *lpParam ); typedef WINUSERAPI BOOL (WINAPI *WinNtUpdateWindow) ( HWND hWnd ); typedef WINUSERAPI BOOL (WINAPI *WinNtShowWindow) ( HWND hWnd, INT32 nCmdShow ); typedef WINGDIAPI BOOL (WINAPI *WinNtDestroyWindow) ( HWND hWnd ); typedef WINUSERAPI HDC (WINAPI *WinNtGetWindowDC) ( HWND hWnd ); typedef WINUSERAPI BOOL (WINAPI *WinNtGetClientRect) ( HWND hWnd, LPRECT lpRect ); typedef WINUSERAPI BOOL (WINAPI *WinNtAdjustWindowRect) ( LPRECT lpRect, DWORD dwStyle, BOOL bMenu ); typedef WINGDIAPI INT32 (WINAPI *WinNtSetDIBitsToDevice) ( HDC, INT32, INT32, DWORD, DWORD, INT32, INT32, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT ); typedef WINGDIAPI BOOL (WINAPI *WinNtBitBlt) ( HDC, INT32, INT32, INT32, INT32, HDC, INT32, INT32, DWORD ); typedef WINUSERAPI BOOL (WINAPI *WinNtInvalidateRect) ( HWND hWnd, CONST RECT *lpRect, BOOL bErase ); typedef WINUSERAPI HDC (WINAPI *WinNtGetDC) ( HWND hWnd ); typedef WINUSERAPI INT32 (WINAPI *WinNtReleaseDC) ( HWND hWnd, HDC hDC ); typedef WINUSERAPI ATOM (WINAPI *WinNtRegisterClassEx) ( CONST WNDCLASSEX * ); typedef WINUSERAPI BOOL (WINAPI *WinNtUnregisterClass) ( LPCTSTR lpClassName, HINSTANCE hInstance ); typedef WINUSERAPI HDC (WINAPI *WinNtBeginPaint) ( HWND hWnd, LPPAINTSTRUCT lpPaint ); typedef WINUSERAPI BOOL (WINAPI *WinNtEndPaint) ( HWND hWnd, CONST PAINTSTRUCT *lpPaint ); typedef WINUSERAPI VOID (WINAPI *WinNtPostQuitMessage) ( INT32 nExitCode ); typedef WINUSERAPI LRESULT (WINAPI *WinNtDefWindowProc) ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); typedef WINUSERAPI HICON (WINAPI *WinNtLoadIcon) ( HINSTANCE hInstance, LPCTSTR lpIconName ); typedef WINUSERAPI HCURSOR (WINAPI *WinNtLoadCursor) ( HINSTANCE hInstance, LPCTSTR lpCursorName ); typedef WINGDIAPI HGDIOBJ (WINAPI *WinNtGetStockObject) ( INT32 ); typedef WINGDIAPI BOOL (WINAPI *WinNtSetViewportOrgEx) ( HDC, INT32, INT32, LPPOINT ); typedef WINGDIAPI BOOL (WINAPI *WinNtSetWindowOrgEx) ( HDC, INT32, INT32, LPPOINT ); typedef WINGDIAPI BOOL (WINAPI *WinNtMoveWindow) ( HWND, INT32, INT32, INT32, INT32, BOOL ); typedef WINGDIAPI BOOL (WINAPI *WinNtGetWindowRect) ( HWND, LPRECT ); typedef WINUSERAPI BOOL (WINAPI *WinNtGetMessage) ( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ); typedef WINUSERAPI BOOL (WINAPI *WinNtTranslateMessage) ( CONST MSG *lpMsg ); typedef WINUSERAPI BOOL (WINAPI *WinNtDispatchMessage) ( CONST MSG *lpMsg ); typedef WINUSERAPI HANDLE (WINAPI *WinNtGetProcessHeap) (); typedef WINUSERAPI LPVOID (WINAPI *WinNtHeapAlloc) ( HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes ); typedef WINUSERAPI BOOL (WINAPI *WinNtHeapFree) ( HANDLE hHeap, DWORD dwFlags, LPVOID lpMem ); typedef WINBASEAPI BOOL (WINAPI *WinNtFreeLibrary) ( HANDLE ModHandle ); typedef WINBASEAPI BOOL (WINAPI *WinNtQueryPerformanceCounter) ( LARGE_INTEGER *PerformanceCount ); typedef WINBASEAPI BOOL (WINAPI *WinNtQueryPerformanceFrequency) ( LARGE_INTEGER *Frequency ); // // // #define EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE SIGNATURE_32 ('N', 'T', 'T', 'T') typedef struct { UINT64 Signature; // // Win32 Process APIs // WinNtGetProcAddress GetProcAddress; WinNtGetTickCount GetTickCount; WinNtLoadLibraryEx LoadLibraryEx; WinNtFreeLibrary FreeLibrary; WinNtSetPriorityClass SetPriorityClass; WinNtSetThreadPriority SetThreadPriority; WinNtSleep Sleep; WinNtSuspendThread SuspendThread; WinNtGetCurrentThread GetCurrentThread; WinNtGetCurrentThreadId GetCurrentThreadId; WinNtGetCurrentProcess GetCurrentProcess; WinNtCreateThread CreateThread; WinNtTerminateThread TerminateThread; WinNtSendMessage SendMessage; WinNtExitThread ExitThread; WinNtResumeThread ResumeThread; WinNtDuplicateHandle DuplicateHandle; // // Wint32 Mutex primitive // WinNtInitializeCriticalSection InitializeCriticalSection; WinNtEnterCriticalSection EnterCriticalSection; WinNtLeaveCriticalSection LeaveCriticalSection; WinNtDeleteCriticalSection DeleteCriticalSection; WinNtTlsAlloc TlsAlloc; WinNtTlsFree TlsFree; WinNtTlsSetValue TlsSetValue; WinNtTlsGetValue TlsGetValue; WinNtCreateSemaphore CreateSemaphore; WinNtWaitForSingleObject WaitForSingleObject; WinNtReleaseSemaphore ReleaseSemaphore; // // Win32 Console APIs // WinNtCreateConsoleScreenBuffer CreateConsoleScreenBuffer; WinNtFillConsoleOutputAttribute FillConsoleOutputAttribute; WinNtFillConsoleOutputCharacter FillConsoleOutputCharacter; WinNtGetConsoleCursorInfo GetConsoleCursorInfo; WinNtGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents; WinNtPeekConsoleInput PeekConsoleInput; WinNtScrollConsoleScreenBuffer ScrollConsoleScreenBuffer; WinNtReadConsoleInput ReadConsoleInput; WinNtSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer; WinNtSetConsoleCursorInfo SetConsoleCursorInfo; WinNtSetConsoleCursorPosition SetConsoleCursorPosition; WinNtSetConsoleScreenBufferSize SetConsoleScreenBufferSize; WinNtSetConsoleTitleW SetConsoleTitleW; WinNtWriteConsoleInput WriteConsoleInput; WinNtWriteConsoleOutput WriteConsoleOutput; // // Win32 File APIs // WinNtCreateFile CreateFile; WinNtDeviceIoControl DeviceIoControl; WinNtCreateDirectory CreateDirectory; WinNtRemoveDirectory RemoveDirectory; WinNtGetFileAttributes GetFileAttributes; WinNtSetFileAttributes SetFileAttributes; WinNtCreateFileMapping CreateFileMapping; WinNtCloseHandle CloseHandle; WinNtDeleteFile DeleteFile; WinNtFindFirstFile FindFirstFile; WinNtFindNextFile FindNextFile; WinNtFindClose FindClose; WinNtFlushFileBuffers FlushFileBuffers; WinNtGetEnvironmentVariable GetEnvironmentVariable; WinNtGetLastError GetLastError; WinNtSetErrorMode SetErrorMode; WinNtGetStdHandle GetStdHandle; WinNtMapViewOfFileEx MapViewOfFileEx; WinNtReadFile ReadFile; WinNtSetEndOfFile SetEndOfFile; WinNtSetFilePointer SetFilePointer; WinNtWriteFile WriteFile; WinNtGetFileInformationByHandle GetFileInformationByHandle; WinNtGetDiskFreeSpace GetDiskFreeSpace; WinNtGetDiskFreeSpaceEx GetDiskFreeSpaceEx; WinNtMoveFile MoveFile; WinNtSetFileTime SetFileTime; WinNtSystemTimeToFileTime SystemTimeToFileTime; // // Win32 Time APIs // WinNtLocalFileTimeToFileTime LocalFileTimeToFileTime; WinNtFileTimeToLocalFileTime FileTimeToLocalFileTime; WinNtFileTimeToSystemTime FileTimeToSystemTime; WinNtGetSystemTime GetSystemTime; WinNtSetSystemTime SetSystemTime; WinNtGetLocalTime GetLocalTime; WinNtSetLocalTime SetLocalTime; WinNtGetTimeZoneInformation GetTimeZoneInformation; WinNtSetTimeZoneInformation SetTimeZoneInformation; WinNttimeSetEvent timeSetEvent; WinNttimeKillEvent timeKillEvent; // // Win32 Serial APIs // WinNtClearCommError ClearCommError; WinNtEscapeCommFunction EscapeCommFunction; WinNtGetCommModemStatus GetCommModemStatus; WinNtGetCommState GetCommState; WinNtSetCommState SetCommState; WinNtPurgeComm PurgeComm; WinNtSetCommTimeouts SetCommTimeouts; WinNtExitProcess ExitProcess; WinNtSprintf SPrintf; WinNtGetDesktopWindow GetDesktopWindow; WinNtGetForegroundWindow GetForegroundWindow; WinNtCreateWindowEx CreateWindowEx; WinNtShowWindow ShowWindow; WinNtUpdateWindow UpdateWindow; WinNtDestroyWindow DestroyWindow; WinNtInvalidateRect InvalidateRect; WinNtGetWindowDC GetWindowDC; WinNtGetClientRect GetClientRect; WinNtAdjustWindowRect AdjustWindowRect; WinNtSetDIBitsToDevice SetDIBitsToDevice; WinNtBitBlt BitBlt; WinNtGetDC GetDC; WinNtReleaseDC ReleaseDC; WinNtRegisterClassEx RegisterClassEx; WinNtUnregisterClass UnregisterClass; WinNtBeginPaint BeginPaint; WinNtEndPaint EndPaint; WinNtPostQuitMessage PostQuitMessage; WinNtDefWindowProc DefWindowProc; WinNtLoadIcon LoadIcon; WinNtLoadCursor LoadCursor; WinNtGetStockObject GetStockObject; WinNtSetViewportOrgEx SetViewportOrgEx; WinNtSetWindowOrgEx SetWindowOrgEx; WinNtMoveWindow MoveWindow; WinNtGetWindowRect GetWindowRect; WinNtGetMessage GetMessage; WinNtTranslateMessage TranslateMessage; WinNtDispatchMessage DispatchMessage; WinNtGetProcessHeap GetProcessHeap; WinNtHeapAlloc HeapAlloc; WinNtHeapFree HeapFree; WinNtQueryPerformanceCounter QueryPerformanceCounter; WinNtQueryPerformanceFrequency QueryPerformanceFrequency; } EFI_WIN_NT_THUNK_PROTOCOL; extern EFI_GUID gEfiWinNtThunkProtocolGuid; #endif