]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Initialize the include folder for NT32Pkg
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 26 Jun 2007 08:25:56 +0000 (08:25 +0000)
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 26 Jun 2007 08:25:56 +0000 (08:25 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2749 6f19259b-4bc3-4df7-8a09-765794883524

12 files changed:
Nt32Pkg/Include/Common/WinNTInclude.h [new file with mode: 0644]
Nt32Pkg/Include/FlashLayout.h [new file with mode: 0644]
Nt32Pkg/Include/Library/EdkGenericBdsLib.h [new file with mode: 0644]
Nt32Pkg/Include/Library/WinNtLib.h [new file with mode: 0644]
Nt32Pkg/Include/Ppi/NtAutoscan.h [new file with mode: 0644]
Nt32Pkg/Include/Ppi/NtFwh.h [new file with mode: 0644]
Nt32Pkg/Include/Ppi/NtPeiLoadFile.h [new file with mode: 0644]
Nt32Pkg/Include/Ppi/NtThunk.h [new file with mode: 0644]
Nt32Pkg/Include/Protocol/WinNtIo.h [new file with mode: 0644]
Nt32Pkg/Include/Protocol/WinNtThunk.h [new file with mode: 0644]
Nt32Pkg/Include/WinNtDxe.h [new file with mode: 0644]
Nt32Pkg/Include/WinNtPeim.h [new file with mode: 0644]

diff --git a/Nt32Pkg/Include/Common/WinNTInclude.h b/Nt32Pkg/Include/Common/WinNTInclude.h
new file mode 100644 (file)
index 0000000..a8d31c3
--- /dev/null
@@ -0,0 +1,71 @@
+/*++\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
diff --git a/Nt32Pkg/Include/FlashLayout.h b/Nt32Pkg/Include/FlashLayout.h
new file mode 100644 (file)
index 0000000..1a13f16
--- /dev/null
@@ -0,0 +1,64 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Library/EdkGenericBdsLib.h b/Nt32Pkg/Include/Library/EdkGenericBdsLib.h
new file mode 100644 (file)
index 0000000..5ef1838
--- /dev/null
@@ -0,0 +1,395 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Library/WinNtLib.h b/Nt32Pkg/Include/Library/WinNtLib.h
new file mode 100644 (file)
index 0000000..b9bccfc
--- /dev/null
@@ -0,0 +1,27 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Ppi/NtAutoscan.h b/Nt32Pkg/Include/Ppi/NtAutoscan.h
new file mode 100644 (file)
index 0000000..6098819
--- /dev/null
@@ -0,0 +1,66 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Ppi/NtFwh.h b/Nt32Pkg/Include/Ppi/NtFwh.h
new file mode 100644 (file)
index 0000000..90b4109
--- /dev/null
@@ -0,0 +1,62 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Ppi/NtPeiLoadFile.h b/Nt32Pkg/Include/Ppi/NtPeiLoadFile.h
new file mode 100644 (file)
index 0000000..622e01a
--- /dev/null
@@ -0,0 +1,65 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Ppi/NtThunk.h b/Nt32Pkg/Include/Ppi/NtThunk.h
new file mode 100644 (file)
index 0000000..782c510
--- /dev/null
@@ -0,0 +1,56 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Protocol/WinNtIo.h b/Nt32Pkg/Include/Protocol/WinNtIo.h
new file mode 100644 (file)
index 0000000..1f2aaa5
--- /dev/null
@@ -0,0 +1,150 @@
+/*++\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
diff --git a/Nt32Pkg/Include/Protocol/WinNtThunk.h b/Nt32Pkg/Include/Protocol/WinNtThunk.h
new file mode 100644 (file)
index 0000000..b3e161f
--- /dev/null
@@ -0,0 +1,1265 @@
+/*++\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
diff --git a/Nt32Pkg/Include/WinNtDxe.h b/Nt32Pkg/Include/WinNtDxe.h
new file mode 100644 (file)
index 0000000..ee9770a
--- /dev/null
@@ -0,0 +1,29 @@
+/*++\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
diff --git a/Nt32Pkg/Include/WinNtPeim.h b/Nt32Pkg/Include/WinNtPeim.h
new file mode 100644 (file)
index 0000000..a3dab24
--- /dev/null
@@ -0,0 +1,31 @@
+/*++\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