summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi
diff options
context:
space:
mode:
Diffstat (limited to 'EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi')
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/EdkNt32PpiLib.inf53
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.c29
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.h67
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.c29
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.h63
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.c28
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.h84
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.c29
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.h66
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.c29
-rw-r--r--EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.h59
11 files changed, 536 insertions, 0 deletions
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/EdkNt32PpiLib.inf b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/EdkNt32PpiLib.inf
new file mode 100644
index 0000000000..79bba0b2db
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/EdkNt32PpiLib.inf
@@ -0,0 +1,53 @@
+/*++
+
+ Copyright (c) 2004, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+
+ Module Name:
+
+ EdkNt32PpiLib.inf
+
+ Abstract:
+
+ Component description file for the Edk Nt32 PPI library.
+
+--*/
+
+[defines]
+BASE_NAME= EdkNt32PpiLib
+COMPONENT_TYPE= LIBRARY
+
+[includes.common]
+ $(EDK_SOURCE)\Sample\Platform\Nt32
+ $(EDK_SOURCE)\Foundation\Efi
+ $(EDK_SOURCE)\Foundation\Include
+ $(EDK_SOURCE)\Foundation\Efi\Include
+ $(EDK_SOURCE)\Foundation\Framework\Include
+ $(EDK_SOURCE)\Foundation\Include\IndustryStandard
+ $(EDK_SOURCE)\Foundation\Include\Pei
+ $(EDK_SOURCE)\Foundation\Library\Pei\Include
+ $(EDK_SOURCE)\Foundation\Core\Dxe
+ $(EDK_SOURCE)\Foundation\Library\Dxe\Include
+ $(EDK_SOURCE)\Foundation\Framework
+
+[nmake.common]
+C_STD_INCLUDE=
+
+[sources.common]
+ NtAutoscan\NtAutoscan.h
+ NtAutoscan\NtAutoscan.c
+ NtFwh\NtFwh.h
+ NtFwh\NtFwh.c
+ NtLoadAsDll\NtLoadAsDll.h
+ NtLoadAsDll\NtLoadAsDll.c
+ NtPeiLoadFile\NtPeiLoadFile.h
+ NtPeiLoadFile\NtPeiLoadFile.c
+ NtThunk\NtThunk.h
+ NtThunk\NtThunk.c
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.c b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.c
new file mode 100644
index 0000000000..fc0676f449
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtAutoscan.c
+
+Abstract:
+
+ Abstraction for the NT Load Image PPI GUID as defined in Tiano
+
+--*/
+
+#include "Tiano.h"
+#include "PeiBind.h"
+#include "PeiApi.h"
+#include EFI_PPI_DEFINITION (NtAutoScan)
+
+EFI_GUID gPeiNtAutoScanPpiGuid = PEI_NT_AUTOSCAN_PPI_GUID;
+
+EFI_GUID_STRING(&gPeiNtAutoScanPpiGuid, "NtAutoScan", "NT PEI AUTOSCAN PPI");
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.h b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.h
new file mode 100644
index 0000000000..5351646198
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtAutoscan/NtAutoscan.h
@@ -0,0 +1,67 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtAutoscan.h
+
+Abstract:
+
+Nt Autoscan PPI
+
+--*/
+
+#ifndef _NT_PEI_AUTOSCAN_H_
+#define _NT_PEI_AUTOSCAN_H_
+
+#include "Tiano.h"
+#include "PeiHob.h"
+
+#define PEI_NT_AUTOSCAN_PPI_GUID \
+ { \
+ 0xdce384d, 0x7c, 0x4ba5, 0x94, 0xbd, 0xf, 0x6e, 0xb6, 0x4d, 0x2a, 0xa9 \
+ }
+
+typedef
+EFI_STATUS
+(EFIAPI *PEI_NT_AUTOSCAN) (
+ IN UINTN Index,
+ OUT EFI_PHYSICAL_ADDRESS * MemoryBase,
+ OUT UINT64 *MemorySize
+ );
+
+/*++
+
+Routine Description:
+ This service is called from Index == 0 until it returns EFI_UNSUPPORTED.
+ It allows discontiguous memory regions to be supported by the emulator.
+ It uses gSystemMemory[] and gSystemMemoryCount that were created by
+ parsing the Windows environment variable EFI_MEMORY_SIZE.
+ The size comes from the varaible and the address comes from the call to
+ WinNtOpenFile.
+
+Arguments:
+ Index - Which memory region to use
+ MemoryBase - Return Base address of memory region
+ MemorySize - Return size in bytes of the memory region
+
+Returns:
+ EFI_SUCCESS - If memory region was mapped
+ EFI_UNSUPPORTED - If Index is not supported
+
+--*/
+typedef struct {
+ PEI_NT_AUTOSCAN NtAutoScan;
+} PEI_NT_AUTOSCAN_PPI;
+
+extern EFI_GUID gPeiNtAutoScanPpiGuid;
+
+#endif
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.c b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.c
new file mode 100644
index 0000000000..d4e1f7c055
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtFwh.c
+
+Abstract:
+
+ NT FWH Information PPI GUID as defined in Tiano
+
+--*/
+
+#include "Tiano.h"
+#include "PeiBind.h"
+#include "PeiApi.h"
+#include EFI_PPI_DEFINITION (NtFwh)
+
+EFI_GUID gNtFwhPpiGuid = NT_FWH_PPI_GUID;
+
+EFI_GUID_STRING(&gNtFwhPpiGuid, "NtFwh", "NT PEI FWH INFO PPI");
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.h b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.h
new file mode 100644
index 0000000000..7750db2ce7
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtFwh/NtFwh.h
@@ -0,0 +1,63 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtFwh.h
+
+Abstract:
+
+ WinNt FWH PPI as defined in Tiano
+
+--*/
+
+#ifndef _NT_PEI_FWH_H_
+#define _NT_PEI_FWH_H_
+
+#include "Tiano.h"
+#include "PeiHob.h"
+
+#define NT_FWH_PPI_GUID \
+ { \
+ 0x4e76928f, 0x50ad, 0x4334, 0xb0, 0x6b, 0xa8, 0x42, 0x13, 0x10, 0x8a, 0x57 \
+ }
+
+typedef
+EFI_STATUS
+(EFIAPI *NT_FWH_INFORMATION) (
+ IN UINTN Index,
+ IN OUT EFI_PHYSICAL_ADDRESS * FdBase,
+ IN OUT UINT64 *FdSize
+ );
+
+/*++
+
+Routine Description:
+ Return the FD Size and base address. Since the FD is loaded from a
+ file into Windows memory only the SEC will know it's address.
+
+Arguments:
+ Index - Which FD, starts at zero.
+ FdSize - Size of the FD in bytes
+ FdBase - Start address of the FD. Assume it points to an FV Header
+
+Returns:
+ EFI_SUCCESS - Return the Base address and size of the FV
+ EFI_UNSUPPORTED - Index does nto map to an FD in the system
+
+--*/
+typedef struct {
+ NT_FWH_INFORMATION NtFwh;
+} NT_FWH_PPI;
+
+extern EFI_GUID gNtFwhPpiGuid;
+
+#endif
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.c b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.c
new file mode 100644
index 0000000000..ffd8ab8fe2
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.c
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtLoadAsDll.c
+
+Abstract:
+
+ DXE Initial Program Load PPI GUID as defined in Tiano
+
+--*/
+
+#include "Tiano.h"
+#include "Pei.h"
+#include EFI_PPI_DEFINITION (NtLoadAsDll)
+
+EFI_GUID gEfiNtLoadAsDllPpiGuid = EFI_NT_LOAD_AS_DLL_PPI_GUID;
+
+EFI_GUID_STRING(&gEfiNtLoadAsDllPpiGuid, "NtLoadAsDll", "NT LOAD AS DLL PPI");
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.h b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.h
new file mode 100644
index 0000000000..f0062cb678
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtLoadAsDll/NtLoadAsDll.h
@@ -0,0 +1,84 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtLoadAsDll.h
+
+Abstract:
+
+ Nt service Ppi that is used to load PE32s in the NT emulation environment.
+
+--*/
+
+#ifndef _NT_LOAD_AS_DLL_H_
+#define _NT_LOAD_AS_DLL_H_
+
+#include "Tiano.h"
+
+#define EFI_NT_LOAD_AS_DLL_PPI_GUID \
+ { \
+ 0xccc53f6b, 0xa03a, 0x4ed8, 0x83, 0x9a, 0x3, 0xd9, 0x9c, 0x2, 0xb4, 0xe3 \
+ }
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_NT_LOAD_AS_DLL) (
+ IN CHAR8 *PdbFileName,
+ IN VOID **ImageEntryPoint,
+ OUT VOID **ModHandle
+ );
+
+/*++
+
+Routine Description:
+ Loads the .DLL file is present when a PE/COFF file is loaded. This provides source level
+ debugging for drivers that have cooresponding .DLL files on the local system.
+
+Arguments:
+ PdbFileName - The name of the .PDB file. This was found from the PE/COFF
+ file's debug directory entry.
+ ImageEntryPoint - A pointer to the DLL entry point of the .DLL file was loaded.
+
+Returns:
+ EFI_SUCCESS - The .DLL file was loaded, and the DLL entry point is returned in ImageEntryPoint
+ EFI_NOT_FOUND - The .DLL file could not be found
+ EFI_UNSUPPORTED - The .DLL file was loaded, but the entry point to the .DLL file could not
+ determined.
+
+--*/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_NT_FREE_LIBRARY) (
+ IN VOID *ModHandle
+ );
+
+/*++
+
+Routine Description:
+ Free resources allocated by Entry (). ModHandle was returned by
+ Entry ().
+
+Arguments:
+ MohHandle - Handle of the resources to free to undo the work.
+
+Returns:
+ EFI_SUCCESS -
+
+--*/
+typedef struct {
+ EFI_NT_LOAD_AS_DLL Entry;
+ EFI_NT_FREE_LIBRARY FreeLibrary;
+} EFI_NT_LOAD_AS_DLL_PPI;
+
+extern EFI_GUID gEfiNtLoadAsDllPpiGuid;
+
+#endif
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.c b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.c
new file mode 100644
index 0000000000..f1feeb7aa2
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtPeiLoadFile.c
+
+Abstract:
+
+ Abstraction for the NT Load Image PPI GUID as defined in Tiano
+
+--*/
+
+#include "Tiano.h"
+#include "PeiBind.h"
+#include "PeiApi.h"
+#include EFI_PPI_DEFINITION (NtPeiLoadFile)
+
+EFI_GUID gNtPeiLoadFileGuid = NT_PEI_LOAD_FILE_GUID;
+
+EFI_GUID_STRING(&gNtPeiLoadFileGuid, "NtPeiLoadFile", "NT PEI LOAD FILE PPI");
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.h b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.h
new file mode 100644
index 0000000000..28f18f46a0
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtPeiLoadFile/NtPeiLoadFile.h
@@ -0,0 +1,66 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtPeiLoadFile.h
+
+Abstract:
+
+ WinNt Load File PPI.
+
+ When the PEI core is done it calls the DXE IPL via PPI
+
+--*/
+
+#ifndef _NT_PEI_LOAD_FILE_H_
+#define _NT_PEI_LOAD_FILE_H_
+
+#include "Tiano.h"
+#include "PeiHob.h"
+
+#define NT_PEI_LOAD_FILE_GUID \
+ { \
+ 0xfd0c65eb, 0x405, 0x4cd2, 0x8a, 0xee, 0xf4, 0x0, 0xef, 0x13, 0xba, 0xc2 \
+ }
+
+typedef
+EFI_STATUS
+(EFIAPI *NT_PEI_LOAD_FILE) (
+ VOID *Pe32Data,
+ EFI_PHYSICAL_ADDRESS *ImageAddress,
+ UINT64 *ImageSize,
+ EFI_PHYSICAL_ADDRESS *EntryPoint
+ );
+
+/*++
+
+Routine Description:
+ Loads and relocates a PE/COFF image into memory.
+
+Arguments:
+ Pe32Data - The base address of the PE/COFF file that is to be loaded and relocated
+ ImageAddress - The base address of the relocated PE/COFF image
+ ImageSize - The size of the relocated PE/COFF image
+ EntryPoint - The entry point of the relocated PE/COFF image
+
+Returns:
+ EFI_SUCCESS - The file was loaded and relocated
+ EFI_OUT_OF_RESOURCES - There was not enough memory to load and relocate the PE/COFF file
+
+--*/
+typedef struct {
+ NT_PEI_LOAD_FILE PeiLoadFileService;
+} NT_PEI_LOAD_FILE_PPI;
+
+extern EFI_GUID gNtPeiLoadFileGuid;
+
+#endif
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.c b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.c
new file mode 100644
index 0000000000..5265c10e39
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtThunk.c
+
+Abstract:
+
+ Abstraction for the NT Thunk PPI
+
+--*/
+
+#include "Tiano.h"
+#include "PeiBind.h"
+#include "PeiApi.h"
+#include EFI_PPI_DEFINITION (NtThunk)
+
+EFI_GUID gPeiNtThunkPpiGuid = PEI_NT_THUNK_GUID;
+
+EFI_GUID_STRING(&gPeiNtThunkPpiGuid, "NtThunk", "NT PEI WINNT THUNK PPI");
diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.h b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.h
new file mode 100644
index 0000000000..663f5f14ff
--- /dev/null
+++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Ppi/NtThunk/NtThunk.h
@@ -0,0 +1,59 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ NtThunk.h
+
+Abstract:
+
+ WinNt Thunk interface PPI
+
+--*/
+
+#ifndef _NT_PEI_WIN_NT_THUNK_H_
+#define _NT_PEI_WIN_NT_THUNK_H_
+
+#include "Tiano.h"
+#include "PeiHob.h"
+
+#define PEI_NT_THUNK_GUID \
+ { \
+ 0x98c281e5, 0xf906, 0x43dd, 0xa9, 0x2b, 0xb0, 0x3, 0xbf, 0x27, 0x65, 0xda \
+ }
+
+typedef
+EFI_STATUS
+(EFIAPI *PEI_NT_THUNK_INTERFACE) (
+ IN OUT UINT64 *InterfaceSize,
+ IN OUT EFI_PHYSICAL_ADDRESS * InterfaceBase
+ );
+
+/*++
+
+Routine Description:
+ Export of EFI_WIN_NT_THUNK_PROTOCOL from the Windows SEC.
+
+Arguments:
+ InterfaceSize - sizeof (EFI_WIN_NT_THUNK_PROTOCOL);
+ InterfaceBase - Address of the EFI_WIN_NT_THUNK_PROTOCOL
+
+Returns:
+ EFI_SUCCESS - Data returned
+
+--*/
+typedef struct {
+ PEI_NT_THUNK_INTERFACE NtThunk;
+} PEI_NT_THUNK_PPI;
+
+extern EFI_GUID gPeiNtThunkPpiGuid;
+
+#endif