--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+Module Name:\r
+ WinNtLib.h\r
+\r
+Abstract:\r
+ Public include file for the WinNt Library\r
+\r
+--*/\r
+\r
+#ifndef __WIN_NT_INCLUDE_H__\r
+#define __WIN_NT_INCLUDE_H__\r
+\r
+//\r
+// Win32 include files do not compile clean with /W4, so we use the warning\r
+// pragma to suppress the warnings for Win32 only. This way our code can stil\r
+// compile at /W4 (highest warning level) with /WX (warnings cause build\r
+// errors).\r
+//\r
+#pragma warning(disable : 4115)\r
+#pragma warning(disable : 4201)\r
+#pragma warning(disable : 4214)\r
+#pragma warning(disable : 4028)\r
+#pragma warning(disable : 4133)\r
+\r
+#define GUID _WINNT_DUP_GUID_____\r
+#define _LIST_ENTRY _WINNT_DUP_LIST_ENTRY_FORWARD\r
+#define LIST_ENTRY _WINNT_DUP_LIST_ENTRY\r
+#define InterlockedIncrement _WINNT_DUP_InterlockedIncrement\r
+#define InterlockedDecrement _WINNT_DUP_InterlockedDecrement\r
+#define InterlockedCompareExchange64 _WINNT_DUP_InterlockedCompareExchange64\r
+#undef UNALIGNED\r
+#undef CONST\r
+#undef VOID\r
+\r
+#include "windows.h"\r
+\r
+#undef GUID\r
+#undef _LIST_ENTRY\r
+#undef LIST_ENTRY\r
+#undef InterlockedIncrement\r
+#undef InterlockedDecrement\r
+#undef InterlockedCompareExchange64\r
+#undef InterlockedCompareExchangePointer\r
+\r
+#define VOID void\r
+\r
+//\r
+// Prevent collisions with Windows API name macros that deal with Unicode/Not issues\r
+//\r
+#undef LoadImage\r
+#undef CreateEvent\r
+\r
+//\r
+// Set the warnings back on as the EFI code must be /W4.\r
+//\r
+#pragma warning(default : 4115)\r
+#pragma warning(default : 4201)\r
+#pragma warning(default : 4214)\r
+\r
+\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ FlashLayout.h\r
+ \r
+Abstract:\r
+\r
+ Platform specific flash layout\r
+\r
+ BugBug: We need a better way\r
+\r
+--*/\r
+\r
+#ifndef __EFI_FLASH_LAYOUT__\r
+#define __EFI_FLASH_LAYOUT__\r
+\r
+//\r
+// Firmware Volume Information for Nt32\r
+// adding one working block before FFS FV,\r
+// and another one for spare block behind FFS FV\r
+//\r
+//\r
+// Note: When block number is changed in .dsc file,\r
+// this value should be changed accordingly!!!\r
+//\r
+#define FIRMWARE_BLOCK_NUMBER 0x28\r
+\r
+#define EFI_WINNT_FIRMWARE_OFFSET 0x0\r
+#define EFI_WINNT_FIRMWARE_LENGTH (0x10000 * FIRMWARE_BLOCK_NUMBER)\r
+\r
+#define EFI_WINNT_RUNTIME_UPDATABLE_OFFSET (EFI_WINNT_FIRMWARE_OFFSET + EFI_WINNT_FIRMWARE_LENGTH)\r
+\r
+#define EFI_WINNT_RUNTIME_UPDATABLE_LENGTH 0x10000\r
+\r
+#define EFI_WINNT_FTW_SPARE_BLOCK_OFFSET (EFI_WINNT_RUNTIME_UPDATABLE_OFFSET + EFI_WINNT_RUNTIME_UPDATABLE_LENGTH)\r
+\r
+#define EFI_WINNT_FTW_SPARE_BLOCK_LENGTH 0x10000\r
+\r
+#define EFI_WINNT_RUNTIME_UPDATABLE_FV_HEADER_LENGTH 0x48\r
+\r
+#define EFI_VARIABLE_STORE_OFFSET EFI_WINNT_RUNTIME_UPDATABLE_OFFSET\r
+\r
+#define EFI_VARIABLE_STORE_LENGTH 0x00C000\r
+\r
+#define EFI_EVENT_LOG_OFFSET (EFI_VARIABLE_STORE_OFFSET + EFI_VARIABLE_STORE_LENGTH)\r
+\r
+#define EFI_EVENT_LOG_LENGTH 0x002000\r
+\r
+#define EFI_FTW_WORKING_OFFSET (EFI_EVENT_LOG_OFFSET + EFI_EVENT_LOG_LENGTH)\r
+\r
+#define EFI_FTW_WORKING_LENGTH 0x002000\r
+\r
+#endif\r
+\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006 - 2007, Intel Corporation\r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ BdsLib.h\r
+\r
+Abstract:\r
+\r
+ BDS library definition, include the file and data structure\r
+\r
+--*/\r
+\r
+#ifndef _BDS_LIB_H_\r
+#define _BDS_LIB_H_\r
+\r
+extern EFI_HANDLE mBdsImageHandle;\r
+\r
+//\r
+// Constants which are variable names used to access variables\r
+//\r
+#define VarLegacyDevOrder L"LegacyDevOrder"\r
+\r
+//\r
+// Data structures and defines\r
+//\r
+#define FRONT_PAGE_QUESTION_ID 0x0000\r
+#define FRONT_PAGE_DATA_WIDTH 0x01\r
+\r
+//\r
+// ConnectType\r
+//\r
+#define CONSOLE_OUT 0x00000001\r
+#define STD_ERROR 0x00000002\r
+#define CONSOLE_IN 0x00000004\r
+#define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)\r
+\r
+//\r
+// Load Option Attributes defined in EFI Specification\r
+//\r
+#define LOAD_OPTION_ACTIVE 0x00000001\r
+#define LOAD_OPTION_FORCE_RECONNECT 0x00000002\r
+#define IS_LOAD_OPTION_TYPE(_c, _Mask) (BOOLEAN) (((_c) & (_Mask)) != 0)\r
+\r
+//\r
+// Define Maxmim characters that will be accepted\r
+//\r
+#define MAX_CHAR 480\r
+#define MAX_CHAR_SIZE (MAX_CHAR * 2)\r
+\r
+#define MIN_ALIGNMENT_SIZE 4\r
+#define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0)\r
+\r
+//\r
+// Define maximum characters for boot option variable "BootXXXX"\r
+//\r
+#define BOOT_OPTION_MAX_CHAR 10\r
+\r
+//\r
+// This data structure is the part of BDS_CONNECT_ENTRY that we can hard code.\r
+//\r
+#define BDS_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('B', 'd', 'C', 'O')\r
+\r
+typedef struct {\r
+\r
+ UINTN Signature;\r
+ LIST_ENTRY Link;\r
+\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+\r
+ CHAR16 *OptionName;\r
+ UINTN OptionNumber;\r
+ UINT16 BootCurrent;\r
+ UINT32 Attribute;\r
+ CHAR16 *Description;\r
+ VOID *LoadOptions;\r
+ UINT32 LoadOptionsSize;\r
+\r
+} BDS_COMMON_OPTION;\r
+\r
+typedef struct {\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ UINTN ConnectType;\r
+} BDS_CONSOLE_CONNECT_ENTRY;\r
+\r
+//\r
+// Lib Functions\r
+//\r
+\r
+//\r
+// Bds boot relate lib functions\r
+//\r
+EFI_STATUS\r
+BdsLibUpdateBootOrderList (\r
+ IN LIST_ENTRY *BdsOptionList,\r
+ IN CHAR16 *VariableName\r
+ );\r
+\r
+VOID\r
+BdsLibBootNext (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibBootViaBootOption (\r
+ IN BDS_COMMON_OPTION * Option,\r
+ IN EFI_DEVICE_PATH_PROTOCOL * DevicePath,\r
+ OUT UINTN *ExitDataSize,\r
+ OUT CHAR16 **ExitData OPTIONAL\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibEnumerateAllBootOption (\r
+ IN OUT LIST_ENTRY *BdsBootOptionList\r
+ );\r
+\r
+VOID\r
+BdsLibBuildOptionFromHandle (\r
+ IN EFI_HANDLE Handle,\r
+ IN LIST_ENTRY *BdsBootOptionList\r
+ );\r
+\r
+VOID\r
+BdsLibBuildOptionFromShell (\r
+ IN EFI_HANDLE Handle,\r
+ IN LIST_ENTRY *BdsBootOptionList\r
+ );\r
+\r
+//\r
+// Bds misc lib functions\r
+//\r
+UINT16\r
+BdsLibGetTimeout (\r
+ VOID\r
+ );\r
+\r
+VOID\r
+BdsLibLoadDrivers (\r
+ IN LIST_ENTRY *BdsDriverLists\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibBuildOptionFromVar (\r
+ IN LIST_ENTRY *BdsCommonOptionList,\r
+ IN CHAR16 *VariableName\r
+ );\r
+\r
+VOID *\r
+BdsLibGetVariableAndSize (\r
+ IN CHAR16 *Name,\r
+ IN EFI_GUID *VendorGuid,\r
+ OUT UINTN *VariableSize\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibOutputStrings (\r
+ IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *ConOut,\r
+ ...\r
+ );\r
+\r
+BDS_COMMON_OPTION *\r
+BdsLibVariableToOption (\r
+ IN OUT LIST_ENTRY *BdsCommonOptionList,\r
+ IN CHAR16 *VariableName\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibRegisterNewOption (\r
+ IN LIST_ENTRY *BdsOptionList,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ IN CHAR16 *String,\r
+ IN CHAR16 *VariableName\r
+ );\r
+\r
+//\r
+// Bds connect or disconnect driver lib funcion\r
+//\r
+VOID\r
+BdsLibConnectAllDriversToAllControllers (\r
+ VOID\r
+ );\r
+\r
+VOID\r
+BdsLibConnectAll (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibConnectDevicePath (\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibConnectAllEfi (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibDisconnectAllEfi (\r
+ VOID\r
+ );\r
+\r
+//\r
+// Bds console relate lib functions\r
+//\r
+VOID\r
+BdsLibConnectAllConsoles (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibConnectAllDefaultConsoles (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibUpdateConsoleVariable (\r
+ IN CHAR16 *ConVarName,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath\r
+ );\r
+\r
+EFI_STATUS\r
+BdsLibConnectConsoleVariable (\r
+ IN CHAR16 *ConVarName\r
+ );\r
+\r
+//\r
+// Bds device path relate lib functions\r
+//\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+BdsLibUnpackDevicePath (\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevPath\r
+ );\r
+\r
+VOID\r
+BdsLibSafeFreePool (\r
+ IN VOID *Buffer\r
+ );\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+BdsLibDelPartMatchInstance (\r
+ IN EFI_DEVICE_PATH_PROTOCOL *Multi,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *Single\r
+ );\r
+\r
+BOOLEAN\r
+BdsLibMatchDevicePaths (\r
+ IN EFI_DEVICE_PATH_PROTOCOL *Multi,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *Single\r
+ );\r
+\r
+CHAR16 *\r
+DevicePathToStr (\r
+ EFI_DEVICE_PATH_PROTOCOL *DevPath\r
+ );\r
+\r
+VOID *\r
+EfiLibGetVariable (\r
+ IN CHAR16 *Name,\r
+ IN EFI_GUID *VendorGuid\r
+ );\r
+\r
+//\r
+// Internal definitions\r
+//\r
+typedef struct {\r
+ CHAR16 *str;\r
+ UINTN len;\r
+ UINTN maxlen;\r
+} POOL_PRINT;\r
+\r
+typedef struct {\r
+ UINT8 Type;\r
+ UINT8 SubType;\r
+ VOID (*Function) (POOL_PRINT *, VOID *);\r
+} DEVICE_PATH_STRING_TABLE;\r
+\r
+//\r
+// Internal functions\r
+//\r
+EFI_STATUS\r
+BdsBootByDiskSignatureAndPartition (\r
+ IN BDS_COMMON_OPTION * Option,\r
+ IN HARDDRIVE_DEVICE_PATH * HardDriveDevicePath,\r
+ IN UINT32 LoadOptionsSize,\r
+ IN VOID *LoadOptions,\r
+ OUT UINTN *ExitDataSize,\r
+ OUT CHAR16 **ExitData OPTIONAL\r
+ );\r
+\r
+//\r
+// Notes: EFI 64 shadow all option rom\r
+//\r
+#if defined (MDE_CPU_IPF)\r
+#define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom ();\r
+VOID\r
+ShadowAllOptionRom();\r
+#else\r
+#define EFI64_SHADOW_ALL_LEGACY_ROM()\r
+#endif\r
+\r
+//\r
+// BBS support macros and functions\r
+//\r
+#if defined (MDE_CPU_IA32)\r
+#define REFRESH_LEGACY_BOOT_OPTIONS \\r
+ BdsDeleteAllInvalidLegacyBootOptions ();\\r
+ BdsAddNonExistingLegacyBootOptions (); \\r
+ BdsUpdateLegacyDevOrder ()\r
+#else\r
+#define REFRESH_LEGACY_BOOT_OPTIONS\r
+#endif\r
+\r
+EFI_STATUS\r
+BdsDeleteAllInvalidLegacyBootOptions (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsAddNonExistingLegacyBootOptions (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsUpdateLegacyDevOrder (\r
+ VOID\r
+ );\r
+\r
+EFI_STATUS\r
+BdsRefreshBbsTableForBoot (\r
+ IN BDS_COMMON_OPTION *Entry\r
+ );\r
+\r
+EFI_STATUS\r
+BdsDeleteBootOption (\r
+ IN UINTN OptionNumber,\r
+ IN OUT UINT16 *BootOrder,\r
+ IN OUT UINTN *BootOrderSize\r
+ );\r
+\r
+//\r
+//The interface functions relate with Setup Browser Reset Reminder feature\r
+//\r
+VOID\r
+EnableResetReminderFeature (\r
+ VOID\r
+ );\r
+\r
+VOID\r
+DisableResetReminderFeature (\r
+ VOID\r
+ );\r
+\r
+VOID\r
+EnableResetRequired (\r
+ VOID\r
+ );\r
+\r
+VOID\r
+DisableResetRequired (\r
+ VOID\r
+ );\r
+\r
+BOOLEAN\r
+IsResetReminderFeatureEnable (\r
+ VOID\r
+ );\r
+\r
+BOOLEAN\r
+IsResetRequired (\r
+ VOID\r
+ );\r
+\r
+VOID\r
+SetupResetReminder (\r
+ VOID\r
+ );\r
+ \r
+EFI_STATUS\r
+BdsLibGetHiiHandles (\r
+ IN EFI_HII_PROTOCOL *Hii,\r
+ IN OUT UINT16 *HandleBufferLength,\r
+ OUT EFI_HII_HANDLE **HiiHandles\r
+ );\r
+\r
+#endif // _BDS_LIB_H_\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ WinNtLib.h\r
+\r
+Abstract:\r
+\r
+ Public include file for the WinNt Library\r
+\r
+--*/\r
+\r
+#ifndef __WIN_NT_LIB_H__\r
+#define __WIN_NT_LIB_H__\r
+\r
+extern EFI_WIN_NT_THUNK_PROTOCOL *gWinNt;\r
+\r
+#endif
\ No newline at end of file
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ NtAutoscan.h\r
+\r
+Abstract:\r
+\r
+Nt Autoscan PPI\r
+\r
+--*/\r
+\r
+#ifndef __NT_PEI_AUTOSCAN_H__\r
+#define __NT_PEI_AUTOSCAN_H__\r
+\r
+#include <WinNtDxe.h>\r
+\r
+#define PEI_NT_AUTOSCAN_PPI_GUID \\r
+ { \\r
+ 0xdce384d, 0x7c, 0x4ba5, {0x94, 0xbd, 0xf, 0x6e, 0xb6, 0x4d, 0x2a, 0xa9 } \\r
+ }\r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *PEI_NT_AUTOSCAN) (\r
+ IN UINTN Index,\r
+ OUT EFI_PHYSICAL_ADDRESS * MemoryBase,\r
+ OUT UINT64 *MemorySize\r
+ );\r
+\r
+/*++\r
+\r
+Routine Description:\r
+ This service is called from Index == 0 until it returns EFI_UNSUPPORTED.\r
+ It allows discontiguous memory regions to be supported by the emulator.\r
+ It uses gSystemMemory[] and gSystemMemoryCount that were created by\r
+ parsing the Windows environment variable EFI_MEMORY_SIZE.\r
+ The size comes from the varaible and the address comes from the call to\r
+ WinNtOpenFile. \r
+\r
+Arguments:\r
+ Index - Which memory region to use\r
+ MemoryBase - Return Base address of memory region\r
+ MemorySize - Return size in bytes of the memory region\r
+\r
+Returns:\r
+ EFI_SUCCESS - If memory region was mapped\r
+ EFI_UNSUPPORTED - If Index is not supported\r
+\r
+--*/\r
+typedef struct {\r
+ PEI_NT_AUTOSCAN NtAutoScan;\r
+} PEI_NT_AUTOSCAN_PPI;\r
+\r
+extern EFI_GUID gPeiNtAutoScanPpiGuid;\r
+\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ NtFwh.h\r
+\r
+Abstract:\r
+\r
+ WinNt FWH PPI as defined in Tiano\r
+\r
+--*/\r
+\r
+#ifndef __NT_PEI_FWH_H__\r
+#define __NT_PEI_FWH_H__\r
+\r
+#include <WinNtDxe.h>\r
+\r
+#define NT_FWH_PPI_GUID \\r
+ { \\r
+ 0x4e76928f, 0x50ad, 0x4334, {0xb0, 0x6b, 0xa8, 0x42, 0x13, 0x10, 0x8a, 0x57 } \\r
+ }\r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *NT_FWH_INFORMATION) (\r
+ IN UINTN Index,\r
+ IN OUT EFI_PHYSICAL_ADDRESS * FdBase,\r
+ IN OUT UINT64 *FdSize\r
+ );\r
+\r
+/*++\r
+\r
+Routine Description:\r
+ Return the FD Size and base address. Since the FD is loaded from a \r
+ file into Windows memory only the SEC will know it's address.\r
+\r
+Arguments:\r
+ Index - Which FD, starts at zero.\r
+ FdSize - Size of the FD in bytes\r
+ FdBase - Start address of the FD. Assume it points to an FV Header\r
+\r
+Returns:\r
+ EFI_SUCCESS - Return the Base address and size of the FV\r
+ EFI_UNSUPPORTED - Index does nto map to an FD in the system\r
+\r
+--*/\r
+typedef struct {\r
+ NT_FWH_INFORMATION NtFwh;\r
+} NT_FWH_PPI;\r
+\r
+extern EFI_GUID gNtFwhPpiGuid;\r
+\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ NtPeiLoadFile.h\r
+\r
+Abstract:\r
+\r
+ WinNt Load File PPI.\r
+\r
+ When the PEI core is done it calls the DXE IPL via PPI\r
+\r
+--*/\r
+\r
+#ifndef __NT_PEI_LOAD_FILE_H__\r
+#define __NT_PEI_LOAD_FILE_H__\r
+\r
+#include <WinNtDxe.h>\r
+\r
+#define NT_PEI_LOAD_FILE_GUID \\r
+ { \\r
+ 0xfd0c65eb, 0x405, 0x4cd2, {0x8a, 0xee, 0xf4, 0x0, 0xef, 0x13, 0xba, 0xc2 } \\r
+ }\r
+\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *NT_PEI_LOAD_FILE) (\r
+ VOID *Pe32Data,\r
+ EFI_PHYSICAL_ADDRESS *ImageAddress,\r
+ UINT64 *ImageSize,\r
+ EFI_PHYSICAL_ADDRESS *EntryPoint\r
+ );\r
+\r
+/*++\r
+\r
+Routine Description:\r
+ Loads and relocates a PE/COFF image into memory.\r
+\r
+Arguments:\r
+ Pe32Data - The base address of the PE/COFF file that is to be loaded and relocated\r
+ ImageAddress - The base address of the relocated PE/COFF image\r
+ ImageSize - The size of the relocated PE/COFF image\r
+ EntryPoint - The entry point of the relocated PE/COFF image\r
+\r
+Returns:\r
+ EFI_SUCCESS - The file was loaded and relocated\r
+ EFI_OUT_OF_RESOURCES - There was not enough memory to load and relocate the PE/COFF file\r
+\r
+--*/\r
+typedef struct {\r
+ NT_PEI_LOAD_FILE PeiLoadFileService;\r
+} NT_PEI_LOAD_FILE_PPI;\r
+\r
+extern EFI_GUID gNtPeiLoadFilePpiGuid;\r
+\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ NtThunk.h\r
+\r
+Abstract:\r
+\r
+ WinNt Thunk interface PPI\r
+\r
+--*/\r
+\r
+#ifndef __NT_PEI_WIN_NT_THUNK_H__\r
+#define __NT_PEI_WIN_NT_THUNK_H__\r
+\r
+#include <WinNtDxe.h>\r
+\r
+#define PEI_NT_THUNK_PPI_GUID \\r
+ { \\r
+ 0x98c281e5, 0xf906, 0x43dd, {0xa9, 0x2b, 0xb0, 0x3, 0xbf, 0x27, 0x65, 0xda } \\r
+ }\r
+\r
+typedef\r
+VOID *\r
+(EFIAPI *PEI_NT_THUNK_INTERFACE) (\r
+ VOID\r
+ );\r
+\r
+/*++\r
+\r
+Routine Description:\r
+ Export of EFI_WIN_NT_THUNK_PROTOCOL from the Windows SEC.\r
+\r
+Arguments:\r
+ InterfaceBase - Address of the EFI_WIN_NT_THUNK_PROTOCOL\r
+\r
+Returns:\r
+ EFI_SUCCESS - Data returned\r
+\r
+--*/\r
+typedef struct {\r
+ PEI_NT_THUNK_INTERFACE NtThunk;\r
+} PEI_NT_THUNK_PPI;\r
+\r
+extern EFI_GUID gPeiNtThunkPpiGuid;\r
+\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ WinNtIo.h\r
+\r
+Abstract:\r
+\r
+--*/\r
+\r
+#ifndef __WIN_NT_IO_H__\r
+#define __WIN_NT_IO_H__\r
+\r
+#define EFI_WIN_NT_IO_PROTOCOL_GUID \\r
+ { 0x96eb4ad6, 0xa32a, 0x11d4, { 0xbc, 0xfd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }\r
+\r
+extern EFI_GUID gEfiWinNtIoProtocolGuid;\r
+\r
+typedef struct {\r
+ EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
+ EFI_GUID *TypeGuid;\r
+ CHAR16 *EnvString;\r
+ UINT16 InstanceNumber;\r
+} EFI_WIN_NT_IO_PROTOCOL;\r
+\r
+//\r
+// The following GUIDs are used in EFI_WIN_NT_IO_PROTOCOL_GUID\r
+// Device paths. They map 1:1 with NT envirnment variables. The variables\r
+// define what virtual hardware the emulator/WinNtBusDriver will produce.\r
+//\r
+//\r
+// EFI_WIN_NT_VIRTUAL_DISKS\r
+//\r
+#define EFI_WIN_NT_VIRTUAL_DISKS_GUID \\r
+ { \\r
+ 0xc95a928, 0xa006, 0x11d4, {0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtVirtualDisksGuid;\r
+\r
+//\r
+// EFI_WIN_NT_PHYSICAL_DISKS\r
+//\r
+#define EFI_WIN_NT_PHYSICAL_DISKS_GUID \\r
+ { \\r
+ 0xc95a92f, 0xa006, 0x11d4, {0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtPhysicalDisksGuid;\r
+\r
+//\r
+// EFI_WIN_NT_GOP_GUID\r
+//\r
+#define EFI_WIN_NT_GOP_GUID \\r
+ { \\r
+ 0x4e11e955, 0xccca, 0x11d4, {0xbd, 0x0d, 0x00, 0x80, 0xc7, 0x3c, 0x88, 0x81} \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtGopGuid;\r
+\r
+//\r
+// EFI_WIN_NT_FILE_SYSTEM\r
+//\r
+#define EFI_WIN_NT_FILE_SYSTEM_GUID \\r
+ { \\r
+ 0xc95a935, 0xa006, 0x11d4, {0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtFileSystemGuid;\r
+\r
+//\r
+// EFI_WIN_NT_SERIAL_PORT\r
+//\r
+#define EFI_WIN_NT_SERIAL_PORT_GUID \\r
+ { \\r
+ 0xc95a93d, 0xa006, 0x11d4, {0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtSerialPortGuid;\r
+\r
+//\r
+// EFI_WIN_NT_UGA\r
+//\r
+#define EFI_WIN_NT_UGA_GUID \\r
+ { \\r
+ 0xab248e99, 0xabe1, 0x11d4, {0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtUgaGuid;\r
+\r
+//\r
+// EFI_WIN_NT_CONSOLE\r
+//\r
+#define EFI_WIN_NT_CONSOLE_GUID \\r
+ { \\r
+ 0xba73672c, 0xa5d3, 0x11d4, {0xbd, 0x0, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtConsoleGuid;\r
+\r
+//\r
+// EFI_WIN_NT_MEMORY\r
+//\r
+#define EFI_WIN_NT_MEMORY_GUID \\r
+ { \\r
+ 0x99042912, 0x122a, 0x11d4, {0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtMemoryGuid;\r
+\r
+//\r
+// EFI_WIN_NT_CPU_MODEL\r
+//\r
+#define EFI_WIN_NT_CPU_MODEL_GUID \\r
+ { \\r
+ 0xbee9b6ce, 0x2f8a, 0x11d4, {0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtCPUModelGuid;\r
+\r
+//\r
+// EFI_WIN_NT_CPU_SPEED\r
+//\r
+#define EFI_WIN_NT_CPU_SPEED_GUID \\r
+ { \\r
+ 0xd4f29055, 0xe1fb, 0x11d4, {0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtCPUSpeedGuid;\r
+\r
+//\r
+// EFI_WIN_NT_PASS_THROUGH\r
+//\r
+#define EFI_WIN_NT_PASS_THROUGH_GUID \\r
+ { \\r
+ 0xcc664eb8, 0x3c24, 0x4086, {0xb6, 0xf6, 0x34, 0xe8, 0x56, 0xbc, 0xe3, 0x6e } \\r
+ }\r
+\r
+extern EFI_GUID gEfiWinNtPassThroughGuid;\r
+\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ WinNtThunk.h\r
+\r
+Abstract:\r
+\r
+ This protocol allows an EFI driver (DLL) in the NT emulation envirnment\r
+ to make Win32 API calls.\r
+\r
+ NEVER make a Win32 call directly, always make the call via this protocol.\r
+\r
+ There are no This pointers on the protocol member functions as they map\r
+ exactly into Win32 system calls.\r
+\r
+ YOU MUST include EfiWinNT.h in place of Efi.h to make this file compile.\r
+\r
+--*/\r
+\r
+#ifndef __WIN_NT_THUNK_H__\r
+#define __WIN_NT_THUNK_H__\r
+\r
+#define EFI_WIN_NT_THUNK_PROTOCOL_GUID \\r
+ { 0x58c518b1, 0x76f3, 0x11d4, { 0xbc, 0xea, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtSleep) (\r
+ DWORD Milliseconds\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtSuspendThread) (\r
+ HANDLE hThread\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtGetCurrentThread) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtGetCurrentThreadId) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtGetCurrentProcess) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtCreateThread) (\r
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,\r
+ DWORD dwStackSize,\r
+ LPTHREAD_START_ROUTINE lpStartAddress,\r
+ LPVOID lpParameter,\r
+ DWORD dwCreationFlags,\r
+ LPDWORD lpThreadId\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtTerminateThread) (\r
+ HANDLE hThread,\r
+ DWORD dwExitCode\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSendMessage) (\r
+ HWND hWnd,\r
+ UINT Msg,\r
+ WPARAM wParam,\r
+ LPARAM lParam\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtExitThread) (\r
+ DWORD dwExitCode\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtResumeThread) (\r
+ HANDLE hThread\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetThreadPriority) (\r
+ HANDLE hThread,\r
+ INTN nPriority\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtInitializeCriticalSection) (\r
+ LPCRITICAL_SECTION lpCriticalSection\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtDeleteCriticalSection) (\r
+ LPCRITICAL_SECTION lpCriticalSection\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtEnterCriticalSection) (\r
+ LPCRITICAL_SECTION lpCriticalSection\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtLeaveCriticalSection) (\r
+ LPCRITICAL_SECTION lpCriticalSection\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtTlsAlloc) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+LPVOID\r
+(WINAPI *WinNtTlsGetValue) (\r
+ DWORD dwTlsIndex\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtTlsSetValue) (\r
+ DWORD dwTlsIndex,\r
+ LPVOID lpTlsValue\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtTlsFree) (\r
+ DWORD dwTlsIndex\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtCreateSemaphore) (\r
+ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,\r
+ LONG lInitialCount,\r
+ LONG lMaximumCount,\r
+ LPCWSTR lpName\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtWaitForSingleObject) (\r
+ HANDLE hHandle,\r
+ DWORD dwMilliseconds\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtReleaseSemaphore) (\r
+ HANDLE hSemaphore,\r
+ LONG lReleaseCount,\r
+ LPLONG lpPreviousCount\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtDuplicateHandle) (\r
+ HANDLE hSourceProcessHandle,\r
+ HANDLE hSourceHandle,\r
+ HANDLE hTargetProcessHandle,\r
+ LPHANDLE lpTargetHandle,\r
+ DWORD dwDesiredAccess,\r
+ BOOL bInheritHandle,\r
+ DWORD dwOptions\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtCreateConsoleScreenBuffer) (\r
+ DWORD DesiredAccess,\r
+ DWORD ShareMode,\r
+ CONST SECURITY_ATTRIBUTES *SecurityAttributes,\r
+ DWORD Flags,\r
+ LPVOID ScreenBufferData\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetConsoleScreenBufferSize) (\r
+ HANDLE ConsoleOutput,\r
+ COORD Size\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetConsoleActiveScreenBuffer) (\r
+ HANDLE ConsoleOutput\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFillConsoleOutputAttribute) (\r
+ HANDLE ConsoleOutput,\r
+ WORD Attribute,\r
+ DWORD Length,\r
+ COORD WriteCoord,\r
+ LPDWORD NumberOfAttrsWritten\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFillConsoleOutputCharacter) (\r
+ HANDLE ConsoleOutput,\r
+ TCHAR Character,\r
+ DWORD Length,\r
+ COORD WriteCoord,\r
+ LPDWORD NumberOfCharsWritten\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtWriteConsoleOutput) (\r
+ HANDLE ConsoleOutput,\r
+ CONST CHAR_INFO *Buffer,\r
+ COORD BufferSize,\r
+ COORD BufferCoord,\r
+ PSMALL_RECT WriteRegion\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtScrollConsoleScreenBuffer) (\r
+ HANDLE ConsoleOutput,\r
+ CONST SMALL_RECT *ScrollRectangle,\r
+ CONST SMALL_RECT *ClipRectangle,\r
+ COORD DestinationOrigin,\r
+ CONST CHAR_INFO *Fill\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetConsoleTitleW) (\r
+ LPCTSTR ConsoleTitle\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtGetConsoleCursorInfo) (\r
+ HANDLE ConsoleOutput,\r
+ PCONSOLE_CURSOR_INFO ConsoleCursorInfo\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetConsoleCursorInfo) (\r
+ HANDLE ConsoleOutput,\r
+ CONST CONSOLE_CURSOR_INFO *ConsoleCursorInfo\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetPriorityClass) (\r
+ HANDLE Process,\r
+ DWORD PriorityClass\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtWriteConsoleInput) (\r
+ HANDLE ConsoleInput,\r
+ CONST INPUT_RECORD *Buffer,\r
+ DWORD Legnth,\r
+ LPDWORD NumberOfEventsWritten\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtGetNumberOfConsoleInputEvents) (\r
+ HANDLE ConsoleInput,\r
+ LPDWORD NumberOfEvents\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtGetStdHandle) (\r
+ DWORD StdHandle\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtReadConsoleInput) (\r
+ HANDLE ConsoleInput,\r
+ PINPUT_RECORD Buffer,\r
+ DWORD Length,\r
+ LPDWORD NumberOfEventsRead\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtPeekConsoleInput) (\r
+ HANDLE ConsoleInput,\r
+ PINPUT_RECORD Buffer,\r
+ DWORD Length,\r
+ LPDWORD NumberOfEventsRead\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetConsoleCursorPosition) (\r
+ HANDLE ConsoleInput,\r
+ COORD CursorPosition\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtCreateFile) (\r
+ LPCWSTR FileName,\r
+ DWORD DesiredAccess,\r
+ DWORD SharedMode,\r
+ LPSECURITY_ATTRIBUTES SecurityAttributes,\r
+ DWORD CreationDisposition,\r
+ DWORD FlagsAndAttributes,\r
+ HANDLE TemplateFile\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtDeviceIoControl) (\r
+ HANDLE DeviceHandle,\r
+ DWORD IoControlCode,\r
+ LPVOID InBuffer,\r
+ DWORD InBufferSize,\r
+ LPVOID OutBuffer,\r
+ DWORD OutBufferSize,\r
+ LPDWORD BytesReturned,\r
+ LPOVERLAPPED Overlapped\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtCreateDirectory) (\r
+ LPCWSTR PathName,\r
+ LPSECURITY_ATTRIBUTES SecurityAttributes\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtRemoveDirectory) (\r
+ LPCWSTR PathName\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtGetFileAttributes) (\r
+ LPCWSTR FileName\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetFileAttributes) (\r
+ LPCWSTR FileName,\r
+ DWORD FileAttributes\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtCreateFileMapping) (\r
+ HANDLE FileHandle,\r
+ LPSECURITY_ATTRIBUTES Attributes,\r
+ DWORD Protect,\r
+ DWORD MaximumSizeHigh,\r
+ DWORD MaximumSizeLow,\r
+ LPCTSTR Name\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+LPVOID\r
+(WINAPI *WinNtMapViewOfFileEx) (\r
+ HANDLE FileHandle,\r
+ DWORD DesiredAccess,\r
+ DWORD FileOffsetHigh,\r
+ DWORD FileOffsetLow,\r
+ DWORD NumberOfBytesToMap,\r
+ LPVOID BaseAddress\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtGetEnvironmentVariable) (\r
+ LPCTSTR Name,\r
+ LPTSTR Buffer,\r
+ DWORD Size\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtCloseHandle) (\r
+ HANDLE Object\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtSetFilePointer) (\r
+ HANDLE FileHandle,\r
+ LONG DistanceToMove,\r
+ PLONG DistanceToHoveHigh,\r
+ DWORD MoveMethod\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetEndOfFile) (\r
+ HANDLE FileHandle\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtReadFile) (\r
+ HANDLE FileHandle,\r
+ LPVOID Buffer,\r
+ DWORD NumberOfBytesToRead,\r
+ LPDWORD NumberOfBytesRead,\r
+ LPOVERLAPPED Overlapped\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtWriteFile) (\r
+ HANDLE FileHandle,\r
+ LPCVOID Buffer,\r
+ DWORD NumberOfBytesToWrite,\r
+ LPDWORD NumberOfBytesWritten,\r
+ LPOVERLAPPED Overlapped\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtGetFileInformationByHandle) (\r
+ HANDLE FileHandle,\r
+ BY_HANDLE_FILE_INFORMATION *FileInfo\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtGetDiskFreeSpace) (\r
+ LPCTSTR RootPathName,\r
+ LPDWORD SectorsPerCluster,\r
+ LPDWORD BytesPerSector,\r
+ LPDWORD NumberOfFreeClusters,\r
+ LPDWORD TotalNumberOfClusters\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtGetDiskFreeSpaceEx) (\r
+ LPCTSTR DirectoryName,\r
+ PULARGE_INTEGER FreeBytesAvailable,\r
+ PULARGE_INTEGER TotalNumberOfBytes,\r
+ PULARGE_INTEGER TotoalNumberOfFreeBytes\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtMoveFile) (\r
+ LPCTSTR ExistingFileName,\r
+ LPCTSTR NewFileName\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetFileTime) (\r
+ HANDLE FileHandle,\r
+ FILETIME *CreationTime,\r
+ FILETIME *LastAccessTime,\r
+ FILETIME *LastWriteTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSystemTimeToFileTime) (\r
+ SYSTEMTIME * SystemTime,\r
+ FILETIME * FileTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtDeleteFile) (\r
+ LPCTSTR FileName\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFlushFileBuffers) (\r
+ HANDLE\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtGetLastError) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+UINT\r
+(WINAPI *WinNtSetErrorMode) (\r
+ UINT Mode\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtGetTickCount) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HMODULE\r
+(WINAPI *WinNtLoadLibraryEx) (\r
+ LPCTSTR LibFileName,\r
+ HANDLE FileHandle,\r
+ DWORD Flags\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+FARPROC\r
+(WINAPI *WinNtGetProcAddress) (\r
+ HMODULE Module,\r
+ LPCSTR ProcName\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtGetTimeZoneInformation) (\r
+ LPTIME_ZONE_INFORMATION timeZoneInformation\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+MMRESULT\r
+(WINAPI *WinNttimeSetEvent) (\r
+ UINT uDelay,\r
+ UINT uResolution,\r
+ LPTIMECALLBACK lpTimeProc,\r
+ DWORD_PTR dwUser,\r
+ UINT fuEvent\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+MMRESULT\r
+(WINAPI *WinNttimeKillEvent) (\r
+ UINT uTimerID\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+DWORD\r
+(WINAPI *WinNtSetTimeZoneInformation) (\r
+ LPTIME_ZONE_INFORMATION timeZoneInformation\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtGetSystemTime) (\r
+ LPSYSTEMTIME SystemTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetSystemTime) (\r
+ CONST SYSTEMTIME *SystemTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtGetLocalTime) (\r
+ LPSYSTEMTIME SystemTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetLocalTime) (\r
+ CONST SYSTEMTIME *SystemTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFileTimeToLocalFileTime) (\r
+ CONST FILETIME *FileTime,\r
+ LPFILETIME LocalFileTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFileTimeToSystemTime) (\r
+ CONST FILETIME *FileTime,\r
+ LPSYSTEMTIME SystemTime\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+HANDLE\r
+(WINAPI *WinNtFindFirstFile) (\r
+ LPCTSTR FileName,\r
+ LPWIN32_FIND_DATA FindFileData\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFindNextFile) (\r
+ HANDLE FindFile,\r
+ LPWIN32_FIND_DATA FindFileData\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFindClose) (\r
+ HANDLE FindFile\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtGetCommState) (\r
+ HANDLE FileHandle,\r
+ LPDCB DCB\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetCommState) (\r
+ HANDLE FileHandle,\r
+ LPDCB DCB\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetCommState) (\r
+ HANDLE FileHandle,\r
+ LPDCB DCB\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtSetCommTimeouts) (\r
+ HANDLE FileHandle,\r
+ LPCOMMTIMEOUTS CommTimeouts\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+VOID\r
+(WINAPI *WinNtExitProcess) (\r
+ UINT uExitCode // exit code for all threads\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtPurgeComm) (\r
+ HANDLE FileHandle,\r
+ DWORD Flags\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtEscapeCommFunction) (\r
+ HANDLE FileHandle,\r
+ DWORD Func\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtGetCommModemStatus) (\r
+ HANDLE FileHandle,\r
+ LPDWORD ModemStat\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtClearCommError) (\r
+ HANDLE FileHandle,\r
+ LPDWORD Errors,\r
+ LPCOMSTAT Stat\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+INT32\r
+(WINAPIV *WinNtSprintf) (\r
+ LPWSTR Buffer,\r
+ size_t Count,\r
+ LPCWSTR String,\r
+ ...\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HWND\r
+(WINAPI *WinNtGetDesktopWindow) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HWND\r
+(WINAPI *WinNtGetForegroundWindow) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HWND\r
+(WINAPI *WinNtCreateWindowEx) (\r
+ DWORD dwExStyle,\r
+ LPCTSTR lpClassName,\r
+ LPCTSTR lpWindowName,\r
+ DWORD dwStyle,\r
+ INT32 x,\r
+ INT32 y,\r
+ INT32 nWidth,\r
+ INT32 nHeight,\r
+ HWND hWndParent,\r
+ HMENU hMenu,\r
+ HINSTANCE hInstance,\r
+ LPVOID *lpParam\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtUpdateWindow) (\r
+ HWND hWnd\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtShowWindow) (\r
+ HWND hWnd,\r
+ INT32 nCmdShow\r
+ );\r
+\r
+typedef\r
+WINGDIAPI\r
+BOOL\r
+(WINAPI *WinNtDestroyWindow) (\r
+ HWND hWnd\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HDC\r
+(WINAPI *WinNtGetWindowDC) (\r
+ HWND hWnd\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtGetClientRect) (\r
+ HWND hWnd,\r
+ LPRECT lpRect\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtAdjustWindowRect) (\r
+ LPRECT lpRect,\r
+ DWORD dwStyle,\r
+ BOOL bMenu\r
+ );\r
+\r
+typedef\r
+WINGDIAPI\r
+INT32\r
+(WINAPI *WinNtSetDIBitsToDevice) (\r
+ HDC,\r
+ INT32,\r
+ INT32,\r
+ DWORD,\r
+ DWORD,\r
+ INT32,\r
+ INT32,\r
+ UINT,\r
+ UINT,\r
+ CONST VOID *,\r
+ CONST BITMAPINFO *,\r
+ UINT\r
+ );\r
+\r
+typedef\r
+WINGDIAPI\r
+BOOL\r
+(WINAPI *WinNtBitBlt) (\r
+ HDC,\r
+ INT32,\r
+ INT32,\r
+ INT32,\r
+ INT32,\r
+ HDC,\r
+ INT32,\r
+ INT32,\r
+ DWORD\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtInvalidateRect) (\r
+ HWND hWnd,\r
+ CONST RECT *lpRect,\r
+ BOOL bErase\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HDC\r
+(WINAPI *WinNtGetDC) (\r
+ HWND hWnd\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+INT32\r
+(WINAPI *WinNtReleaseDC) (\r
+ HWND hWnd,\r
+ HDC hDC\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+ATOM\r
+(WINAPI *WinNtRegisterClassEx) (\r
+ CONST WNDCLASSEX *\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtUnregisterClass) (\r
+ LPCTSTR lpClassName,\r
+ HINSTANCE hInstance\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HDC\r
+(WINAPI *WinNtBeginPaint) (\r
+ HWND hWnd,\r
+ LPPAINTSTRUCT lpPaint\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtEndPaint) (\r
+ HWND hWnd,\r
+ CONST PAINTSTRUCT *lpPaint\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+VOID\r
+(WINAPI *WinNtPostQuitMessage) (\r
+ INT32 nExitCode\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+LRESULT\r
+(WINAPI *WinNtDefWindowProc) (\r
+ HWND hWnd,\r
+ UINT Msg,\r
+ WPARAM wParam,\r
+ LPARAM lParam\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HICON\r
+(WINAPI *WinNtLoadIcon) (\r
+ HINSTANCE hInstance,\r
+ LPCTSTR lpIconName\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HCURSOR\r
+(WINAPI *WinNtLoadCursor) (\r
+ HINSTANCE hInstance,\r
+ LPCTSTR lpCursorName\r
+ );\r
+\r
+typedef\r
+WINGDIAPI\r
+HGDIOBJ\r
+(WINAPI *WinNtGetStockObject) (\r
+ INT32\r
+ );\r
+\r
+typedef\r
+WINGDIAPI\r
+BOOL\r
+(WINAPI *WinNtSetViewportOrgEx) (\r
+ HDC,\r
+ INT32,\r
+ INT32,\r
+ LPPOINT\r
+ );\r
+\r
+typedef\r
+WINGDIAPI\r
+BOOL\r
+(WINAPI *WinNtSetWindowOrgEx) (\r
+ HDC,\r
+ INT32,\r
+ INT32,\r
+ LPPOINT\r
+ );\r
+typedef\r
+WINGDIAPI\r
+BOOL\r
+(WINAPI *WinNtMoveWindow) (\r
+ HWND,\r
+ INT32,\r
+ INT32,\r
+ INT32,\r
+ INT32,\r
+ BOOL\r
+ );\r
+\r
+typedef\r
+WINGDIAPI\r
+BOOL\r
+(WINAPI *WinNtGetWindowRect) (\r
+ HWND,\r
+ LPRECT\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtGetMessage) (\r
+ LPMSG lpMsg,\r
+ HWND hWnd,\r
+ UINT wMsgFilterMin,\r
+ UINT wMsgFilterMax\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtTranslateMessage) (\r
+ CONST MSG *lpMsg\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtDispatchMessage) (\r
+ CONST MSG *lpMsg\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+HANDLE\r
+(WINAPI *WinNtGetProcessHeap) ();\r
+\r
+typedef\r
+WINUSERAPI\r
+LPVOID\r
+(WINAPI *WinNtHeapAlloc) (\r
+ HANDLE hHeap,\r
+ DWORD dwFlags,\r
+ SIZE_T dwBytes\r
+ );\r
+\r
+typedef\r
+WINUSERAPI\r
+BOOL\r
+(WINAPI *WinNtHeapFree) (\r
+ HANDLE hHeap,\r
+ DWORD dwFlags,\r
+ LPVOID lpMem\r
+ );\r
+\r
+typedef\r
+WINBASEAPI\r
+BOOL\r
+(WINAPI *WinNtFreeLibrary) (\r
+ HANDLE ModHandle\r
+ );\r
+//\r
+//\r
+//\r
+\r
+#define EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'T', 'T')\r
+\r
+typedef struct {\r
+ UINT64 Signature;\r
+\r
+ //\r
+ // Win32 Process APIs\r
+ //\r
+ WinNtGetProcAddress GetProcAddress;\r
+ WinNtGetTickCount GetTickCount;\r
+ WinNtLoadLibraryEx LoadLibraryEx;\r
+ WinNtFreeLibrary FreeLibrary;\r
+\r
+ WinNtSetPriorityClass SetPriorityClass;\r
+ WinNtSetThreadPriority SetThreadPriority;\r
+ WinNtSleep Sleep;\r
+\r
+ WinNtSuspendThread SuspendThread;\r
+ WinNtGetCurrentThread GetCurrentThread;\r
+ WinNtGetCurrentThreadId GetCurrentThreadId;\r
+ WinNtGetCurrentProcess GetCurrentProcess;\r
+ WinNtCreateThread CreateThread;\r
+ WinNtTerminateThread TerminateThread;\r
+ WinNtSendMessage SendMessage;\r
+ WinNtExitThread ExitThread;\r
+ WinNtResumeThread ResumeThread;\r
+ WinNtDuplicateHandle DuplicateHandle;\r
+\r
+ //\r
+ // Wint32 Mutex primitive\r
+ //\r
+ WinNtInitializeCriticalSection InitializeCriticalSection;\r
+ WinNtEnterCriticalSection EnterCriticalSection;\r
+ WinNtLeaveCriticalSection LeaveCriticalSection;\r
+ WinNtDeleteCriticalSection DeleteCriticalSection;\r
+ WinNtTlsAlloc TlsAlloc;\r
+ WinNtTlsFree TlsFree;\r
+ WinNtTlsSetValue TlsSetValue;\r
+ WinNtTlsGetValue TlsGetValue;\r
+ WinNtCreateSemaphore CreateSemaphore;\r
+ WinNtWaitForSingleObject WaitForSingleObject;\r
+ WinNtReleaseSemaphore ReleaseSemaphore;\r
+\r
+ //\r
+ // Win32 Console APIs\r
+ //\r
+ WinNtCreateConsoleScreenBuffer CreateConsoleScreenBuffer;\r
+ WinNtFillConsoleOutputAttribute FillConsoleOutputAttribute;\r
+ WinNtFillConsoleOutputCharacter FillConsoleOutputCharacter;\r
+ WinNtGetConsoleCursorInfo GetConsoleCursorInfo;\r
+ WinNtGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents;\r
+ WinNtPeekConsoleInput PeekConsoleInput;\r
+ WinNtScrollConsoleScreenBuffer ScrollConsoleScreenBuffer;\r
+ WinNtReadConsoleInput ReadConsoleInput;\r
+\r
+ WinNtSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer;\r
+ WinNtSetConsoleCursorInfo SetConsoleCursorInfo;\r
+ WinNtSetConsoleCursorPosition SetConsoleCursorPosition;\r
+ WinNtSetConsoleScreenBufferSize SetConsoleScreenBufferSize;\r
+ WinNtSetConsoleTitleW SetConsoleTitleW;\r
+ WinNtWriteConsoleInput WriteConsoleInput;\r
+ WinNtWriteConsoleOutput WriteConsoleOutput;\r
+\r
+ //\r
+ // Win32 File APIs\r
+ //\r
+ WinNtCreateFile CreateFile;\r
+ WinNtDeviceIoControl DeviceIoControl;\r
+ WinNtCreateDirectory CreateDirectory;\r
+ WinNtRemoveDirectory RemoveDirectory;\r
+ WinNtGetFileAttributes GetFileAttributes;\r
+ WinNtSetFileAttributes SetFileAttributes;\r
+ WinNtCreateFileMapping CreateFileMapping;\r
+ WinNtCloseHandle CloseHandle;\r
+ WinNtDeleteFile DeleteFile;\r
+ WinNtFindFirstFile FindFirstFile;\r
+ WinNtFindNextFile FindNextFile;\r
+ WinNtFindClose FindClose;\r
+ WinNtFlushFileBuffers FlushFileBuffers;\r
+ WinNtGetEnvironmentVariable GetEnvironmentVariable;\r
+ WinNtGetLastError GetLastError;\r
+ WinNtSetErrorMode SetErrorMode;\r
+ WinNtGetStdHandle GetStdHandle;\r
+ WinNtMapViewOfFileEx MapViewOfFileEx;\r
+ WinNtReadFile ReadFile;\r
+ WinNtSetEndOfFile SetEndOfFile;\r
+ WinNtSetFilePointer SetFilePointer;\r
+ WinNtWriteFile WriteFile;\r
+ WinNtGetFileInformationByHandle GetFileInformationByHandle;\r
+ WinNtGetDiskFreeSpace GetDiskFreeSpace;\r
+ WinNtGetDiskFreeSpaceEx GetDiskFreeSpaceEx;\r
+ WinNtMoveFile MoveFile;\r
+ WinNtSetFileTime SetFileTime;\r
+ WinNtSystemTimeToFileTime SystemTimeToFileTime;\r
+\r
+ //\r
+ // Win32 Time APIs\r
+ //\r
+ WinNtFileTimeToLocalFileTime FileTimeToLocalFileTime;\r
+ WinNtFileTimeToSystemTime FileTimeToSystemTime;\r
+ WinNtGetSystemTime GetSystemTime;\r
+ WinNtSetSystemTime SetSystemTime;\r
+ WinNtGetLocalTime GetLocalTime;\r
+ WinNtSetLocalTime SetLocalTime;\r
+ WinNtGetTimeZoneInformation GetTimeZoneInformation;\r
+ WinNtSetTimeZoneInformation SetTimeZoneInformation;\r
+ WinNttimeSetEvent timeSetEvent;\r
+ WinNttimeKillEvent timeKillEvent;\r
+\r
+ //\r
+ // Win32 Serial APIs\r
+ //\r
+ WinNtClearCommError ClearCommError;\r
+ WinNtEscapeCommFunction EscapeCommFunction;\r
+ WinNtGetCommModemStatus GetCommModemStatus;\r
+ WinNtGetCommState GetCommState;\r
+ WinNtSetCommState SetCommState;\r
+ WinNtPurgeComm PurgeComm;\r
+ WinNtSetCommTimeouts SetCommTimeouts;\r
+\r
+ WinNtExitProcess ExitProcess;\r
+\r
+ WinNtSprintf SPrintf;\r
+\r
+ WinNtGetDesktopWindow GetDesktopWindow;\r
+ WinNtGetForegroundWindow GetForegroundWindow;\r
+ WinNtCreateWindowEx CreateWindowEx;\r
+ WinNtShowWindow ShowWindow;\r
+ WinNtUpdateWindow UpdateWindow;\r
+ WinNtDestroyWindow DestroyWindow;\r
+ WinNtInvalidateRect InvalidateRect;\r
+ WinNtGetWindowDC GetWindowDC;\r
+ WinNtGetClientRect GetClientRect;\r
+ WinNtAdjustWindowRect AdjustWindowRect;\r
+ WinNtSetDIBitsToDevice SetDIBitsToDevice;\r
+ WinNtBitBlt BitBlt;\r
+ WinNtGetDC GetDC;\r
+ WinNtReleaseDC ReleaseDC;\r
+ WinNtRegisterClassEx RegisterClassEx;\r
+ WinNtUnregisterClass UnregisterClass;\r
+\r
+ WinNtBeginPaint BeginPaint;\r
+ WinNtEndPaint EndPaint;\r
+ WinNtPostQuitMessage PostQuitMessage;\r
+ WinNtDefWindowProc DefWindowProc;\r
+ WinNtLoadIcon LoadIcon;\r
+ WinNtLoadCursor LoadCursor;\r
+ WinNtGetStockObject GetStockObject;\r
+ WinNtSetViewportOrgEx SetViewportOrgEx;\r
+ WinNtSetWindowOrgEx SetWindowOrgEx;\r
+ WinNtMoveWindow MoveWindow;\r
+ WinNtGetWindowRect GetWindowRect;\r
+\r
+ WinNtGetMessage GetMessage;\r
+ WinNtTranslateMessage TranslateMessage;\r
+ WinNtDispatchMessage DispatchMessage;\r
+\r
+ WinNtGetProcessHeap GetProcessHeap;\r
+ WinNtHeapAlloc HeapAlloc;\r
+ WinNtHeapFree HeapFree;\r
+\r
+} EFI_WIN_NT_THUNK_PROTOCOL;\r
+\r
+extern EFI_GUID gEfiWinNtThunkProtocolGuid;\r
+\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+ WinNtLib.h\r
+\r
+Abstract:\r
+ Public include file for the WinNt Library\r
+\r
+--*/\r
+\r
+#ifndef __WIN_NT_DXE_H__\r
+#define __WIN_NT_DXE_H__\r
+\r
+//\r
+// This forces Windows.h WIN32 include file to be included\r
+// it's needed for WinNtThunk.h\r
+// WinNtIo.h depends on WinNtThunk.h\r
+//\r
+#include <Common/WinNtInclude.h>\r
+#endif\r
--- /dev/null
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+ WinNtLib.h\r
+\r
+Abstract:\r
+ Public include file for the WinNt Library\r
+\r
+--*/\r
+\r
+#ifndef __WIN_NT_PEIM_H__\r
+#define __WIN_NT_PEIM_H__\r
+\r
+//\r
+// This forces Windows.h WIN32 include file to be included\r
+// it's needed for WinNtThunk.h\r
+//\r
+#include <Common/WinNtInclude.h>\r
+\r
+#include <Protocol/WinNtThunk.h>\r
+\r
+#endif\r