blob: fd7defd2fdb4fefd53dc451b23e3ac96e0a1c4f3 [file] [log] [blame]
/**@file
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
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 <Common/WinNtInclude.h>
#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