mirror of https://github.com/acidanthera/audk.git
1265 lines
25 KiB
C
1265 lines
25 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 2006, 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__
|
||
|
|
||
|
#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 *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,
|
||
|
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
|
||
|
);
|
||
|
//
|
||
|
//
|
||
|
//
|
||
|
|
||
|
#define EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE EFI_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
|
||
|
//
|
||
|
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;
|
||
|
|
||
|
} EFI_WIN_NT_THUNK_PROTOCOL;
|
||
|
|
||
|
extern EFI_GUID gEfiWinNtThunkProtocolGuid;
|
||
|
|
||
|
#endif
|