winntthunk.h

来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· C头文件 代码 · 共 1,277 行 · 第 1/2 页

H
1,277
字号
/*++

Copyright (c) 2004, 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 \
  }

//
// The following APIs require EfiWinNT.h. In some environmnets the GUID
// definitions are needed but the EfiWinNT.h is not included.
// EfiWinNT.h is needed to support WINDOWS API requirements.
//
#ifdef _EFI_WIN_NT_H_

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,

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?