mirror of https://github.com/acidanthera/audk.git
Porting SecMain module for Nt32Pkg, but not enable PI, so it currently dependent on IntelFrameworkPkg temporary.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2998 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
53f320dc75
commit
2e19fd0ff6
|
@ -21,6 +21,13 @@
|
|||
#define _FRAMEWORK_PEI_H_
|
||||
|
||||
#include <PiPei.h>
|
||||
|
||||
typedef struct {
|
||||
UINTN BootFirmwareVolume;
|
||||
UINTN SizeOfCacheAsRam;
|
||||
EFI_PEI_PPI_DESCRIPTOR *DispatchTable;
|
||||
} EFI_PEI_STARTUP_DESCRIPTOR;
|
||||
|
||||
#include <Common/FrameworkFirmwareFileSystem.h>
|
||||
#include <Common/FrameworkHob.h>
|
||||
#include <Common/FrameworkLegacy16.h>
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006 - 2007, 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:
|
||||
PeiPeCoffLoader.h
|
||||
|
||||
Abstract:
|
||||
GUID for the PE/COFF Loader APIs shared between PEI and DXE
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef __PEI_PE_COFF_LOADER_H__
|
||||
#define __PEI_PE_COFF_LOADER_H__
|
||||
|
||||
//
|
||||
// MdePkg/Include/Common/PeCoffLoaderImageContext.h
|
||||
//
|
||||
#include <Library/PeCoffLib.h>
|
||||
|
||||
#define EFI_PEI_PE_COFF_LOADER_GUID \
|
||||
{ 0xd8117cff, 0x94a6, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
|
||||
|
||||
typedef struct _EFI_PEI_PE_COFF_LOADER_PROTOCOL EFI_PEI_PE_COFF_LOADER_PROTOCOL;
|
||||
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO) (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE) (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE) (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE) (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
struct _EFI_PEI_PE_COFF_LOADER_PROTOCOL {
|
||||
EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO GetImageInfo;
|
||||
EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE LoadImage;
|
||||
EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE RelocateImage;
|
||||
EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE UnloadImage;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEfiPeiPeCoffLoaderGuid;
|
||||
|
||||
#endif
|
|
@ -64,7 +64,8 @@
|
|||
gPcdPeiCallbackFnTableHobGuid = { 0xC625F4B2, 0xEA09, 0x4675, { 0x82, 0xD7, 0xBA, 0x36, 0x82, 0x15, 0x7A, 0x14 }}
|
||||
gPcdDataBaseHobGuid = { 0xEA296D92, 0x0B69, 0x423C, { 0x8C, 0x28, 0x33, 0xB4, 0xE0, 0xA9, 0x12, 0x68 }}
|
||||
gEfiMdePkgTokenSpaceGuid = { 0xA1AFF049, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xBC }}
|
||||
|
||||
##gEfiPeiPeCoffLoaderGuid will be removed in future
|
||||
gEfiPeiPeCoffLoaderGuid = { 0xd8117cff, 0x94a6, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
|
||||
|
||||
################################################################################
|
||||
#
|
||||
|
|
|
@ -30,6 +30,22 @@ typedef union {
|
|||
} EFI_FFS_INTEGRITY_CHECK;
|
||||
|
||||
typedef UINT8 EFI_FV_FILETYPE;
|
||||
|
||||
#define EFI_FV_FILETYPE_ALL 0x00
|
||||
#define EFI_FV_FILETYPE_RAW 0x01
|
||||
#define EFI_FV_FILETYPE_FREEFORM 0x02
|
||||
#define EFI_FV_FILETYPE_SECURITY_CORE 0x03
|
||||
#define EFI_FV_FILETYPE_PEI_CORE 0x04
|
||||
#define EFI_FV_FILETYPE_DXE_CORE 0x05
|
||||
#define EFI_FV_FILETYPE_PEIM 0x06
|
||||
#define EFI_FV_FILETYPE_DRIVER 0x07
|
||||
#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER 0x08
|
||||
#define EFI_FV_FILETYPE_APPLICATION 0x09
|
||||
//
|
||||
// File type 0x0A is reserved and should not be used
|
||||
//
|
||||
#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
|
||||
|
||||
typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
|
||||
typedef UINT8 EFI_FFS_FILE_STATE;
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
gEfiWinNtPhysicalDisksGuid = { 0x0C95A92F, 0xA006, 0x11D4, { 0xBC, 0xFA, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
|
||||
gEfiWinNtVirtualDisksGuid = { 0x0C95A928, 0xA006, 0x11D4, { 0xBC, 0xFA, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
|
||||
gEfiNt32PkgTokenSpaceGuid = { 0x0D79A645, 0x1D91, 0x40a6, { 0xA8, 0x1F, 0x61, 0xE6, 0x98, 0x2B, 0x32, 0xB4 }}
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
|
@ -93,7 +93,9 @@
|
|||
gPeiNtThunkPpiGuid = { 0x98c281e5, 0xf906, 0x43dd, { 0xa9, 0x2b, 0xb0, 0x03, 0xbf, 0x27, 0x65, 0xda }}
|
||||
gPeiNtAutoScanPpiGuid = { 0x0dce384d, 0x007c, 0x4ba5, { 0x94, 0xbd, 0x0f, 0x6e, 0xb6, 0x4d, 0x2a, 0xa9 }}
|
||||
gEfiPeiMemoryDiscoveredPpiGuid = { 0xF894643D, 0xC449, 0x42D1, { 0x8E, 0xA8, 0x85, 0xBD, 0xD8, 0xC6, 0x5B, 0xDE }}
|
||||
|
||||
gNtPeiLoadFilePpiGuid = { 0xfd0c65eb, 0x0405, 0x4cd2, { 0x8a, 0xee, 0xf4, 0x0, 0xef, 0x13, 0xba, 0xc2 }}
|
||||
gNtFwhPpiGuid = { 0x4e76928f, 0x50ad, 0x4334, {0xb0, 0x6b, 0xa8, 0x42, 0x13, 0x10, 0x8a, 0x57 }}
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# PCD Declarations section - list of all PCDs Declared by this Package
|
||||
|
|
|
@ -212,8 +212,8 @@
|
|||
PcdStatusCodeRuntimeMemorySize|gEfiIntelFrameworkModulePkgTokenSpaceGuid|128
|
||||
|
||||
[PcdsFixedAtBuild.IA32]
|
||||
PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid|L"64!64"|VOID*|10
|
||||
PcdWinNtFirmwareVolume|gEfiNt32PkgTokenSpaceGuid|L"..\\Fv\\Fv_Recovery.fd"|VOID*|52
|
||||
PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid|L"64!64"|10
|
||||
PcdWinNtFirmwareVolume|gEfiNt32PkgTokenSpaceGuid|L"..\\Fv\\Fv_Recovery.fd"|52
|
||||
PcdWinNtBootMode|gEfiNt32PkgTokenSpaceGuid|1
|
||||
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
||||
PcdMaximumAsciiStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
||||
|
@ -351,3 +351,4 @@
|
|||
$(WORKSPACE)/IntelFrameworkModulePkg/Universal/DriverSampleDxe/DriverSample.inf
|
||||
$(WORKSPACE)/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBus.inf ##This driver follows UEFI specification definition
|
||||
$(WORKSPACE)/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.inf ##This driver follows UEFI specification definition
|
||||
$(WORKSPACE)/Nt32Pkg/Sec/SecMain.inf
|
|
@ -0,0 +1,314 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
FwVol.c
|
||||
|
||||
Abstract:
|
||||
A simple FV stack so the SEC can extract the SEC Core from an
|
||||
FV.
|
||||
|
||||
--*/
|
||||
|
||||
#include "SecMain.h"
|
||||
|
||||
#define GET_OCCUPIED_SIZE(ActualSize, Alignment) \
|
||||
(ActualSize) + (((Alignment) - ((ActualSize) & ((Alignment) - 1))) & ((Alignment) - 1))
|
||||
|
||||
EFI_FFS_FILE_STATE
|
||||
GetFileState (
|
||||
IN UINT8 ErasePolarity,
|
||||
IN EFI_FFS_FILE_HEADER *FfsHeader
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Returns the highest bit set of the State field
|
||||
|
||||
Arguments:
|
||||
ErasePolarity - Erase Polarity as defined by EFI_FVB_ERASE_POLARITY
|
||||
in the Attributes field.
|
||||
FfsHeader - Pointer to FFS File Header.
|
||||
|
||||
Returns:
|
||||
Returns the highest bit in the State field
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_FFS_FILE_STATE FileState;
|
||||
EFI_FFS_FILE_STATE HighestBit;
|
||||
|
||||
FileState = FfsHeader->State;
|
||||
|
||||
if (ErasePolarity != 0) {
|
||||
FileState = (EFI_FFS_FILE_STATE)~FileState;
|
||||
}
|
||||
|
||||
HighestBit = 0x80;
|
||||
while (HighestBit != 0 && (HighestBit & FileState) == 0) {
|
||||
HighestBit >>= 1;
|
||||
}
|
||||
|
||||
return HighestBit;
|
||||
}
|
||||
|
||||
UINT8
|
||||
CalculateHeaderChecksum (
|
||||
IN EFI_FFS_FILE_HEADER *FileHeader
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Calculates the checksum of the header of a file.
|
||||
|
||||
Arguments:
|
||||
FileHeader - Pointer to FFS File Header.
|
||||
|
||||
Returns:
|
||||
Checksum of the header.
|
||||
|
||||
--*/
|
||||
{
|
||||
UINT8 *ptr;
|
||||
UINTN Index;
|
||||
UINT8 Sum;
|
||||
|
||||
Sum = 0;
|
||||
ptr = (UINT8 *) FileHeader;
|
||||
|
||||
for (Index = 0; Index < sizeof (EFI_FFS_FILE_HEADER) - 3; Index += 4) {
|
||||
Sum = (UINT8) (Sum + ptr[Index]);
|
||||
Sum = (UINT8) (Sum + ptr[Index + 1]);
|
||||
Sum = (UINT8) (Sum + ptr[Index + 2]);
|
||||
Sum = (UINT8) (Sum + ptr[Index + 3]);
|
||||
}
|
||||
|
||||
for (; Index < sizeof (EFI_FFS_FILE_HEADER); Index++) {
|
||||
Sum = (UINT8) (Sum + ptr[Index]);
|
||||
}
|
||||
//
|
||||
// State field (since this indicates the different state of file).
|
||||
//
|
||||
Sum = (UINT8) (Sum - FileHeader->State);
|
||||
//
|
||||
// Checksum field of the file is not part of the header checksum.
|
||||
//
|
||||
Sum = (UINT8) (Sum - FileHeader->IntegrityCheck.Checksum.File);
|
||||
|
||||
return Sum;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
SecFfsFindNextFile (
|
||||
IN EFI_FV_FILETYPE SearchType,
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
|
||||
IN OUT EFI_FFS_FILE_HEADER **FileHeader
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the input file pointer, search for the next matching file in the
|
||||
FFS volume as defined by SearchType. The search starts from FileHeader inside
|
||||
the Firmware Volume defined by FwVolHeader.
|
||||
|
||||
Arguments:
|
||||
SearchType - Filter to find only files of this type.
|
||||
Type EFI_FV_FILETYPE_ALL causes no filtering to be done.
|
||||
FwVolHeader - Pointer to the FV header of the volume to search.
|
||||
This parameter must point to a valid FFS volume.
|
||||
FileHeader - Pointer to the current file from which to begin searching.
|
||||
This pointer will be updated upon return to reflect the file
|
||||
found.
|
||||
|
||||
Returns:
|
||||
EFI_NOT_FOUND - No files matching the search criteria were found
|
||||
EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_FFS_FILE_HEADER *FfsFileHeader;
|
||||
UINT32 FileLength;
|
||||
UINT32 FileOccupiedSize;
|
||||
UINT32 FileOffset;
|
||||
UINT64 FvLength;
|
||||
UINT8 ErasePolarity;
|
||||
UINT8 FileState;
|
||||
|
||||
FvLength = FwVolHeader->FvLength;
|
||||
if (FwVolHeader->Attributes & EFI_FVB2_ERASE_POLARITY) {
|
||||
ErasePolarity = 1;
|
||||
} else {
|
||||
ErasePolarity = 0;
|
||||
}
|
||||
//
|
||||
// If FileHeader is not specified (NULL) start with the first file in the
|
||||
// firmware volume. Otherwise, start from the FileHeader.
|
||||
//
|
||||
if (*FileHeader == NULL) {
|
||||
FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FwVolHeader + FwVolHeader->HeaderLength);
|
||||
} else {
|
||||
//
|
||||
// Length is 24 bits wide so mask upper 8 bits
|
||||
// FileLength is adjusted to FileOccupiedSize as it is 8 byte aligned.
|
||||
//
|
||||
FileLength = *(UINT32 *) (*FileHeader)->Size & 0x00FFFFFF;
|
||||
FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);
|
||||
FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) *FileHeader + FileOccupiedSize);
|
||||
}
|
||||
|
||||
FileOffset = (UINT32) ((UINT8 *) FfsFileHeader - (UINT8 *) FwVolHeader);
|
||||
|
||||
while (FileOffset < (FvLength - sizeof (EFI_FFS_FILE_HEADER))) {
|
||||
//
|
||||
// Get FileState which is the highest bit of the State
|
||||
//
|
||||
FileState = GetFileState (ErasePolarity, FfsFileHeader);
|
||||
|
||||
switch (FileState) {
|
||||
|
||||
case EFI_FILE_HEADER_INVALID:
|
||||
FileOffset += sizeof (EFI_FFS_FILE_HEADER);
|
||||
FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + sizeof (EFI_FFS_FILE_HEADER));
|
||||
break;
|
||||
|
||||
case EFI_FILE_DATA_VALID:
|
||||
case EFI_FILE_MARKED_FOR_UPDATE:
|
||||
if (CalculateHeaderChecksum (FfsFileHeader) == 0) {
|
||||
FileLength = *(UINT32 *) (FfsFileHeader->Size) & 0x00FFFFFF;
|
||||
FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);
|
||||
|
||||
if ((SearchType == FfsFileHeader->Type) || (SearchType == EFI_FV_FILETYPE_ALL)) {
|
||||
|
||||
*FileHeader = FfsFileHeader;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
FileOffset += FileOccupiedSize;
|
||||
FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + FileOccupiedSize);
|
||||
} else {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
break;
|
||||
|
||||
case EFI_FILE_DELETED:
|
||||
FileLength = *(UINT32 *) (FfsFileHeader->Size) & 0x00FFFFFF;
|
||||
FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);
|
||||
FileOffset += FileOccupiedSize;
|
||||
FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + FileOccupiedSize);
|
||||
break;
|
||||
|
||||
default:
|
||||
return EFI_NOT_FOUND;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
SecFfsFindSectionData (
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
IN EFI_FFS_FILE_HEADER *FfsFileHeader,
|
||||
IN OUT VOID **SectionData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the input file pointer, search for the next matching section in the
|
||||
FFS volume.
|
||||
|
||||
Arguments:
|
||||
SearchType - Filter to find only sections of this type.
|
||||
FfsFileHeader - Pointer to the current file to search.
|
||||
SectionData - Pointer to the Section matching SectionType in FfsFileHeader.
|
||||
NULL if section not found
|
||||
|
||||
Returns:
|
||||
EFI_NOT_FOUND - No files matching the search criteria were found
|
||||
EFI_SUCCESS
|
||||
|
||||
--*/
|
||||
{
|
||||
UINT32 FileSize;
|
||||
EFI_COMMON_SECTION_HEADER *Section;
|
||||
UINT32 SectionLength;
|
||||
UINT32 ParsedLength;
|
||||
|
||||
//
|
||||
// Size is 24 bits wide so mask upper 8 bits.
|
||||
// Does not include FfsFileHeader header size
|
||||
// FileSize is adjusted to FileOccupiedSize as it is 8 byte aligned.
|
||||
//
|
||||
Section = (EFI_COMMON_SECTION_HEADER *) (FfsFileHeader + 1);
|
||||
FileSize = *(UINT32 *) (FfsFileHeader->Size) & 0x00FFFFFF;
|
||||
FileSize -= sizeof (EFI_FFS_FILE_HEADER);
|
||||
|
||||
*SectionData = NULL;
|
||||
ParsedLength = 0;
|
||||
while (ParsedLength < FileSize) {
|
||||
if (Section->Type == SectionType) {
|
||||
*SectionData = (VOID *) (Section + 1);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
//
|
||||
// Size is 24 bits wide so mask upper 8 bits.
|
||||
// SectionLength is adjusted it is 4 byte aligned.
|
||||
// Go to the next section
|
||||
//
|
||||
SectionLength = *(UINT32 *) Section->Size & 0x00FFFFFF;
|
||||
SectionLength = GET_OCCUPIED_SIZE (SectionLength, 4);
|
||||
|
||||
ParsedLength += SectionLength;
|
||||
Section = (EFI_COMMON_SECTION_HEADER *) ((UINT8 *) Section + SectionLength);
|
||||
}
|
||||
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
SecFfsFindPeiCore (
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
|
||||
OUT VOID **Pe32Data
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the pointer to the Firmware Volume Header find the SEC
|
||||
core and return it's PE32 image.
|
||||
|
||||
Arguments:
|
||||
FwVolHeader - Pointer to memory mapped FV
|
||||
Pe32Data - Pointer to SEC PE32 iamge.
|
||||
|
||||
Returns:
|
||||
EFI_SUCCESS - Pe32Data is valid
|
||||
other - Failure
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_FFS_FILE_HEADER *FileHeader;
|
||||
EFI_FV_FILETYPE SearchType;
|
||||
|
||||
SearchType = EFI_FV_FILETYPE_PEI_CORE;
|
||||
FileHeader = NULL;
|
||||
do {
|
||||
Status = SecFfsFindNextFile (SearchType, FwVolHeader, &FileHeader);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
Status = SecFfsFindSectionData (EFI_SECTION_PE32, FileHeader, Pe32Data);
|
||||
return Status;
|
||||
}
|
||||
} while (!EFI_ERROR (Status));
|
||||
|
||||
return Status;
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
SOURCE_FILES = $(DEBUG_DIR)\AutoGen.c \
|
||||
$(MODULE_DIR)\Nt32Pkg\Sec\WinNtThunk.c \
|
||||
$(MODULE_DIR)\Nt32Pkg\Sec\FwVol.c \
|
||||
$(MODULE_DIR)\Nt32Pkg\Sec\SecMain.c
|
||||
|
||||
INC = -I$(WORKSPACE)\Nt32Pkg\Sec \
|
||||
-I$(DEBUG_DIR) \
|
||||
-I$(WORKSPACE)\Nt32Pkg \
|
||||
-I$(WORKSPACE)\Nt32Pkg\Include \
|
||||
-I$(WORKSPACE)\MdePkg \
|
||||
-I$(WORKSPACE)\MdePkg\Include\Ia32 \
|
||||
-I$(WORKSPACE)\MdePkg\Include \
|
||||
-I$(WORKSPACE)\MdeModulePkg\Include \
|
||||
-I$(WORKSPACE)\IntelFrameworkPkg\Include
|
||||
|
||||
OBJECTS = $(OUTPUT_DIR)\.\AutoGen.obj \
|
||||
$(OUTPUT_DIR)\.\WinNtThunk.obj \
|
||||
$(OUTPUT_DIR)\.\FwVol.obj \
|
||||
$(OUTPUT_DIR)\.\SecMain.obj
|
||||
|
||||
LIBS = $(LIB_DIR)\BaseDebugLibNull.lib \
|
||||
$(LIB_DIR)\BasePrintLib.lib \
|
||||
$(LIB_DIR)\BaseMemoryLib.lib \
|
||||
$(LIB_DIR)\BaseLib.lib \
|
||||
$(LIB_DIR)\BasePeCoffLib.lib
|
||||
|
||||
MSVS_LINK_LIBPATHS = /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib"
|
||||
LINK_FLAGS_EXE = /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG \
|
||||
Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib
|
||||
|
||||
COMMON_DEPS = $(DEBUG_DIR)\AutoGen.h
|
||||
|
||||
all : $(BIN_DIR)\SecMain.exe
|
||||
|
||||
$(BIN_DIR)\SecMain.exe : $(OBJECTS)
|
||||
"$(DLINK)" \
|
||||
$(MSVS_LINK_LIBPATHS) \
|
||||
$(LINK_FLAGS_EXE) \
|
||||
$(OBJECTS) \
|
||||
$(LIBS) \
|
||||
/base:0x10000000 \
|
||||
/out:"$(BIN_DIR)\SecMain.exe" \
|
||||
/pdb:"$(BIN_DIR)\SecMain.pdb"
|
||||
|
||||
#
|
||||
# Individual Object Build Targets
|
||||
#
|
||||
$(OUTPUT_DIR)\.\AutoGen.obj : $(COMMON_DEPS)
|
||||
$(OUTPUT_DIR)\.\AutoGen.obj : $(DEBUG_DIR)\AutoGen.c
|
||||
"$(CC)" $(CC_FLAGS) $(INC) /Fo$@ $(DEBUG_DIR)\AutoGen.c
|
||||
|
||||
$(OUTPUT_DIR)\.\WinNtThunk.obj : $(COMMON_DEPS)
|
||||
$(OUTPUT_DIR)\.\WinNtThunk.obj : $(MODULE_DIR)\WinNtThunk.c
|
||||
"$(CC)" $(CC_FLAGS) $(INC) /Fo$@ $(MODULE_DIR)\WinNtThunk.c
|
||||
|
||||
$(OUTPUT_DIR)\.\FwVol.obj : $(COMMON_DEPS)
|
||||
$(OUTPUT_DIR)\.\FwVol.obj : $(MODULE_DIR)\FwVol.c
|
||||
"$(CC)" $(CC_FLAGS) $(INC) /Fo$@ $(MODULE_DIR)\FwVol.c
|
||||
|
||||
$(OUTPUT_DIR)\.\SecMain.obj : $(COMMON_DEPS)
|
||||
$(OUTPUT_DIR)\.\SecMain.obj : $(MODULE_DIR)\SecMain.c
|
||||
"$(CC)" $(CC_FLAGS) $(INC) /Fo$@ $(MODULE_DIR)\SecMain.c
|
||||
|
||||
clean:
|
||||
- @if exist $(DEBUG_DIR)\AutoGen.c del $(DEBUG_DIR)\AutoGen.c > NUL
|
||||
del $(DEBUG_DIR)\AutoGen.h > NUL
|
||||
del $(OUTPUT_DIR)\.\*.obj > NUL
|
||||
del $(MODULE_BUILD_DIR)\makefile > NUL
|
||||
del $(MODULE_BUILD_DIR)\*.idb > NUL
|
||||
del $(MODULE_BUILD_DIR)\*.pdb > NUL
|
||||
del $(BIN_DIR)\SecMain.exe > NUL
|
||||
del $(BIN_DIR)\SecMain.pdb > NUL
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,585 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
|
||||
Module Name:
|
||||
SecMain.h
|
||||
|
||||
Abstract:
|
||||
Include file for Windows API based SEC
|
||||
|
||||
--*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <Base.h>
|
||||
#include <PiPei.h>
|
||||
#include <FrameworkPei.h>
|
||||
#include <WinNtPeim.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/PeCoffLib.h>
|
||||
#include <Guid/PeiPeCoffLoader.h>
|
||||
#include <Ppi/NtPeiLoadFile.h>
|
||||
#include <Ppi/NtAutoscan.h>
|
||||
#include <Ppi/NtThunk.h>
|
||||
#include <Ppi/StatusCode.h>
|
||||
#include <Ppi/NtFwh.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/PrintLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
|
||||
#define STACK_SIZE 0x20000
|
||||
|
||||
typedef struct {
|
||||
EFI_PHYSICAL_ADDRESS Address;
|
||||
UINT64 Size;
|
||||
} NT_FD_INFO;
|
||||
|
||||
#define NT_SYSTEM_MEMORY_FILENAME_SIZE 40
|
||||
|
||||
typedef struct {
|
||||
CHAR16 FileName[NT_SYSTEM_MEMORY_FILENAME_SIZE];
|
||||
EFI_PHYSICAL_ADDRESS Memory;
|
||||
UINT64 Size;
|
||||
} NT_SYSTEM_MEMORY;
|
||||
|
||||
|
||||
#define MAX_PDB_NAME_TO_MOD_HANDLE_ARRAY_SIZE 0x100
|
||||
|
||||
typedef struct {
|
||||
CHAR8 *PdbPointer;
|
||||
VOID *ModHandle;
|
||||
} PDB_NAME_TO_MOD_HANDLE;
|
||||
|
||||
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecWinNtPeiLoadFile (
|
||||
VOID *Pe32Data, // TODO: add IN/OUT modifier to Pe32Data
|
||||
EFI_PHYSICAL_ADDRESS *ImageAddress, // TODO: add IN/OUT modifier to ImageAddress
|
||||
UINT64 *ImageSize, // TODO: add IN/OUT modifier to ImageSize
|
||||
EFI_PHYSICAL_ADDRESS *EntryPoint // TODO: add IN/OUT modifier to EntryPoint
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
Pe32Data - TODO: add argument description
|
||||
ImageAddress - TODO: add argument description
|
||||
ImageSize - TODO: add argument description
|
||||
EntryPoint - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecWinNtPeiAutoScan (
|
||||
IN UINTN Index,
|
||||
OUT EFI_PHYSICAL_ADDRESS *MemoryBase,
|
||||
OUT UINT64 *MemorySize
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
Index - TODO: add argument description
|
||||
MemoryBase - TODO: add argument description
|
||||
MemorySize - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
VOID *
|
||||
EFIAPI
|
||||
SecWinNtWinNtThunkAddress (
|
||||
VOID
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
InterfaceSize - TODO: add argument description
|
||||
InterfaceBase - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecWinNtWinNtFwhAddress (
|
||||
IN OUT UINT64 *FwhSize,
|
||||
IN OUT EFI_PHYSICAL_ADDRESS *FwhBase
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
FwhSize - TODO: add argument description
|
||||
FwhBase - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecPeiReportStatusCode (
|
||||
IN EFI_PEI_SERVICES **PeiServices,
|
||||
IN EFI_STATUS_CODE_TYPE CodeType,
|
||||
IN EFI_STATUS_CODE_VALUE Value,
|
||||
IN UINT32 Instance,
|
||||
IN EFI_GUID * CallerId,
|
||||
IN EFI_STATUS_CODE_DATA * Data OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
PeiServices - TODO: add argument description
|
||||
CodeType - TODO: add argument description
|
||||
Value - TODO: add argument description
|
||||
Instance - TODO: add argument description
|
||||
CallerId - TODO: add argument description
|
||||
Data - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
INTN
|
||||
EFIAPI
|
||||
main (
|
||||
IN INTN Argc,
|
||||
IN CHAR8 **Argv,
|
||||
IN CHAR8 **Envp
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
Argc - TODO: add argument description
|
||||
Argv - TODO: add argument description
|
||||
Envp - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
WinNtOpenFile (
|
||||
CHAR16 *FileName,
|
||||
UINT32 MapSize,
|
||||
DWORD CreationDispostion,
|
||||
EFI_PHYSICAL_ADDRESS *BaseAddress,
|
||||
UINT64 *Length
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
FileName - TODO: add argument description
|
||||
MapSize - TODO: add argument description
|
||||
CreationDispostion - TODO: add argument description
|
||||
BaseAddress - TODO: add argument description
|
||||
Length - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
VOID
|
||||
SecLoadFromCore (
|
||||
IN UINTN LargestRegion,
|
||||
IN UINTN LargestRegionSize,
|
||||
IN UINTN BootFirmwareVolumeBase,
|
||||
IN VOID *PeiCoreFile
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
LargestRegion - TODO: add argument description
|
||||
LargestRegionSize - TODO: add argument description
|
||||
BootFirmwareVolumeBase - TODO: add argument description
|
||||
PeiCoreFile - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
SecLoadFile (
|
||||
IN VOID *Pe32Data,
|
||||
IN EFI_PHYSICAL_ADDRESS *ImageAddress,
|
||||
IN UINT64 *ImageSize,
|
||||
IN EFI_PHYSICAL_ADDRESS *EntryPoint
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
Pe32Data - TODO: add argument description
|
||||
ImageAddress - TODO: add argument description
|
||||
ImageSize - TODO: add argument description
|
||||
EntryPoint - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
SecFfsFindPeiCore (
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
|
||||
OUT VOID **Pe32Data
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
FwVolHeader - TODO: add argument description
|
||||
Pe32Data - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
SecFfsFindNextFile (
|
||||
IN EFI_FV_FILETYPE SearchType,
|
||||
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
|
||||
IN OUT EFI_FFS_FILE_HEADER **FileHeader
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
SearchType - TODO: add argument description
|
||||
FwVolHeader - TODO: add argument description
|
||||
FileHeader - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
SecFfsFindSectionData (
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
IN EFI_FFS_FILE_HEADER *FfsFileHeader,
|
||||
IN OUT VOID **SectionData
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
SectionType - TODO: add argument description
|
||||
FfsFileHeader - TODO: add argument description
|
||||
SectionData - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecWinNtPeCoffLoaderLoadAsDll (
|
||||
IN CHAR8 *PdbFileName,
|
||||
IN VOID **ImageEntryPoint,
|
||||
OUT VOID **ModHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
PdbFileName - TODO: add argument description
|
||||
ImageEntryPoint - TODO: add argument description
|
||||
ModHandle - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecWinNtPeCoffLoaderFreeLibrary (
|
||||
OUT VOID *ModHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
ModHandle - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecWinNtFdAddress (
|
||||
IN UINTN Index,
|
||||
IN OUT EFI_PHYSICAL_ADDRESS *FdBase,
|
||||
IN OUT UINT64 *FdSize
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
Index - TODO: add argument description
|
||||
FdBase - TODO: add argument description
|
||||
FdSize - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
GetImageReadFunction (
|
||||
IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,
|
||||
IN EFI_PHYSICAL_ADDRESS *TopOfMemory
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
ImageContext - TODO: add argument description
|
||||
TopOfMemory - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecImageRead (
|
||||
IN VOID *FileHandle,
|
||||
IN UINTN FileOffset,
|
||||
IN OUT UINTN *ReadSize,
|
||||
OUT VOID *Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
FileHandle - TODO: add argument description
|
||||
FileOffset - TODO: add argument description
|
||||
ReadSize - TODO: add argument description
|
||||
Buffer - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
CHAR16 *
|
||||
AsciiToUnicode (
|
||||
IN CHAR8 *Ascii,
|
||||
IN UINTN *StrLen OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
Ascii - TODO: add argument description
|
||||
StrLen - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
UINTN
|
||||
CountSeperatorsInString (
|
||||
IN const CHAR16 *String,
|
||||
IN CHAR16 Seperator
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
TODO: Add function description
|
||||
|
||||
Arguments:
|
||||
|
||||
String - TODO: add argument description
|
||||
Seperator - TODO: add argument description
|
||||
|
||||
Returns:
|
||||
|
||||
TODO: add return values
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecNt32PeCoffGetImageInfo (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecNt32PeCoffLoadImage (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecNt32PeCoffRelocateImage (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SecNt32PeCoffUnloadimage (
|
||||
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,
|
||||
IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
|
||||
);
|
||||
|
||||
|
||||
typedef struct {
|
||||
EFI_PEI_PE_COFF_LOADER_PROTOCOL PeCoff;
|
||||
VOID *ModHandle;
|
||||
} EFI_PEI_PE_COFF_LOADER_PROTOCOL_INSTANCE;
|
||||
|
||||
extern EFI_WIN_NT_THUNK_PROTOCOL *gWinNt;
|
|
@ -0,0 +1,137 @@
|
|||
#/** @file
|
||||
# Entry Point of NT32 Emulator
|
||||
#
|
||||
# Main executable file of NT32 Emulator that loads PEI core after initialization finished.
|
||||
# Copyright (c) 2007 - 2007, 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.
|
||||
#
|
||||
#
|
||||
#**/
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Defines Section - statements that will be processed to create a Makefile.
|
||||
#
|
||||
################################################################################
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = SecMain
|
||||
FILE_GUID = 4b837b03-6587-4d19-b82b-edfad836c0a0
|
||||
MODULE_TYPE = SEC
|
||||
VERSION_STRING = 1.0
|
||||
EDK_RELEASE_VERSION = 0x00020000
|
||||
EFI_SPECIFICATION_VERSION = 0x00020000
|
||||
CUSTOM_MAKEFILE = MSFT|Makefile
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32
|
||||
#
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Sources Section - list of files that are required for the build to succeed.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[Sources.common]
|
||||
OldDefinition.h
|
||||
SecMain.h
|
||||
WinNtThunk.c
|
||||
FwVol.c
|
||||
SecMain.c
|
||||
SecMain_build.xml
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Includes Section - list of Include locations that are required for
|
||||
# this module.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[Includes]
|
||||
$(WORKSPACE)/MdePkg/Include/Library
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Package Dependency Section - list of Package files that are required for
|
||||
# this module.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[Packages]
|
||||
Nt32Pkg/Nt32Pkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
MdePkg/MdePkg.dec
|
||||
IntelFrameworkPkg/IntelFrameworkPkg.dec
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Library Class Section - list of Library Classes that are required for
|
||||
# this module.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[LibraryClasses]
|
||||
DebugLib
|
||||
PcdLib
|
||||
PrintLib
|
||||
BaseMemoryLib
|
||||
BaseLib
|
||||
PeCoffLib
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Guid C Name Section - list of Guids that this module uses or produces.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[Guids]
|
||||
gEfiPeiPeCoffLoaderGuid # ALWAYS_PRODUCED
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# PPI C Name Section - list of PPI and PPI Notify C Names that this module
|
||||
# uses or produces.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[Ppis]
|
||||
gNtPeiLoadFilePpiGuid # PPI ALWAYS_PRODUCED
|
||||
gEfiPeiStatusCodePpiGuid # PPI ALWAYS_PRODUCED
|
||||
gNtFwhPpiGuid # PPI ALWAYS_PRODUCED
|
||||
gPeiNtAutoScanPpiGuid # PPI ALWAYS_PRODUCED
|
||||
gPeiNtThunkPpiGuid # PPI ALWAYS_PRODUCED
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Pcd FIXED_AT_BUILD - list of PCDs that this module is coded for.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[PcdsFixedAtBuild.common]
|
||||
PcdWinNtBootMode|gEfiNt32PkgTokenSpaceGuid
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Pcd DYNAMIC - list of PCDs that this module is coded for.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[PcdsDynamic.common]
|
||||
#PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid
|
||||
#PcdWinNtFirmwareVolume|gEfiNt32PkgTokenSpaceGuid
|
||||
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<MsaHeader>
|
||||
<ModuleName>SecMain</ModuleName>
|
||||
<ModuleType>SEC</ModuleType>
|
||||
<GuidValue>4b837b03-6587-4d19-b82b-edfad836c0a0</GuidValue>
|
||||
<Version>1.0</Version>
|
||||
<Abstract>Entry Point of NT32 Emulator</Abstract>
|
||||
<Description>Main executable file of NT32 Emulator that loads PEI core after initialization finished.</Description>
|
||||
<Copyright>Copyright (c) 2006 - 2007, Intel Corporation</Copyright>
|
||||
<License>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.</License>
|
||||
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
|
||||
</MsaHeader>
|
||||
<ModuleDefinitions>
|
||||
<SupportedArchitectures>IA32</SupportedArchitectures>
|
||||
<BinaryModule>false</BinaryModule>
|
||||
<OutputFileBasename>SecMain</OutputFileBasename>
|
||||
</ModuleDefinitions>
|
||||
<LibraryClassDefinitions>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>PeCoffLib</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>BaseLib</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>BaseMemoryLib</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>PrintLib</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>PcdLib</Keyword>
|
||||
</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
||||
<Keyword>DebugLib</Keyword>
|
||||
</LibraryClass>
|
||||
</LibraryClassDefinitions>
|
||||
<SourceFiles>
|
||||
<Filename ToolCode="DUMMY">SecMain_build.xml</Filename>
|
||||
<Filename>SecMain.c</Filename>
|
||||
<Filename>FwVol.c</Filename>
|
||||
<Filename>WinNtThunk.c</Filename>
|
||||
<Filename>SecMain.h</Filename>
|
||||
</SourceFiles>
|
||||
<PackageDependencies>
|
||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
|
||||
<Package PackageGuid="0fb2aa2d-10d5-40a5-a9dc-060c12a4a3f3"/>
|
||||
</PackageDependencies>
|
||||
<PPIs>
|
||||
<Ppi Usage="ALWAYS_PRODUCED">
|
||||
<PpiCName>gPeiNtThunkPpiGuid</PpiCName>
|
||||
</Ppi>
|
||||
<Ppi Usage="ALWAYS_PRODUCED">
|
||||
<PpiCName>gPeiNtAutoScanPpiGuid</PpiCName>
|
||||
</Ppi>
|
||||
<Ppi Usage="ALWAYS_PRODUCED">
|
||||
<PpiCName>gNtFwhPpiGuid</PpiCName>
|
||||
</Ppi>
|
||||
<Ppi Usage="ALWAYS_PRODUCED">
|
||||
<PpiCName>gEfiPeiStatusCodePpiGuid</PpiCName>
|
||||
</Ppi>
|
||||
<Ppi Usage="ALWAYS_PRODUCED">
|
||||
<PpiCName>gNtPeiLoadFilePpiGuid</PpiCName>
|
||||
</Ppi>
|
||||
</PPIs>
|
||||
<Guids>
|
||||
<GuidCNames Usage="ALWAYS_PRODUCED">
|
||||
<GuidCName>gEfiPeiPeCoffLoaderGuid</GuidCName>
|
||||
</GuidCNames>
|
||||
</Guids>
|
||||
<Externs>
|
||||
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
|
||||
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
|
||||
</Externs>
|
||||
<PcdCoded>
|
||||
<PcdEntry PcdItemType="DYNAMIC">
|
||||
<C_Name>PcdWinNtMemorySizeForSecMain</C_Name>
|
||||
<TokenSpaceGuidCName>gEfiEdkNt32PkgTokenSpaceGuid</TokenSpaceGuidCName>
|
||||
<HelpText>This PCD defines the memory size of simulated machine. Simulator will allocate
|
||||
the size of PcdWinNtMemorySizeForSecMain in windows platform.</HelpText>
|
||||
</PcdEntry>
|
||||
<PcdEntry PcdItemType="DYNAMIC">
|
||||
<C_Name>PcdWinNtFirmwareVolume</C_Name>
|
||||
<TokenSpaceGuidCName>gEfiEdkNt32PkgTokenSpaceGuid</TokenSpaceGuidCName>
|
||||
<HelpText>This PCD defines the FD file windows path string. Simulator will load the FD file and execute.</HelpText>
|
||||
</PcdEntry>
|
||||
<PcdEntry PcdItemType="FIXED_AT_BUILD">
|
||||
<C_Name>PcdWinNtBootMode</C_Name>
|
||||
<TokenSpaceGuidCName>gEfiEdkNt32PkgTokenSpaceGuid</TokenSpaceGuidCName>
|
||||
<HelpText>This PCD defines the boot mode for simualtor.
|
||||
The boot mode can be set as following value:
|
||||
0x0: Boot with full configuration.
|
||||
0x1: Boot with minimal configuration.
|
||||
0x2: Boot assume no configuration changes.
|
||||
0x3: Boot with full configuration plus diagnostics.
|
||||
0x4: Boot with default settings.
|
||||
0x5: Boot on S4 resume.
|
||||
0x6: Boot on S5 resume.
|
||||
0x10: Boot on S2 resume.
|
||||
0x11: Boot on S3 resume.
|
||||
0x12: Boot on flash update.
|
||||
0x20: Boot in reovery mode.</HelpText>
|
||||
</PcdEntry>
|
||||
</PcdCoded>
|
||||
</ModuleSurfaceArea>
|
|
@ -0,0 +1,141 @@
|
|||
<?xml version="1.0" ?>
|
||||
<!--
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
-->
|
||||
<project name="SecMain" default="main" basedir="." >
|
||||
<!-- Apply external ANT task -->
|
||||
<taskdef resource="frameworktasks.tasks" />
|
||||
<taskdef resource="cpptasks.tasks" />
|
||||
<typedef resource="cpptasks.types" />
|
||||
<taskdef resource="net/sf/antcontrib/antlib.xml" />
|
||||
<property environment="env" />
|
||||
<!-- All Properties -->
|
||||
<property name="BASE_NAME" value="SecMain" />
|
||||
|
||||
<!-- Default target -->
|
||||
<target name="main" depends="libraries, sourcefiles, sections, output" />
|
||||
<!-- Compile all dependency Library instances. -->
|
||||
|
||||
<target name="libraries">
|
||||
<GenBuild type="build">
|
||||
<property name="ARCH" value="${ARCH}"/>
|
||||
<property name="MODULE_GUID" value="27d67720-ea68-48ae-93da-a3a074c90e30"/>
|
||||
<property name="MODULE_VERSION" value=""/>
|
||||
<property name="PLATFORM" value="${PLATFORM}"/>
|
||||
<property name="PACKAGE_GUID" value="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
<property name="PACKAGE_VERSION" value=""/>
|
||||
</GenBuild>
|
||||
<GenBuild type="build">
|
||||
<property name="ARCH" value="${ARCH}"/>
|
||||
<property name="MODULE_GUID" value="fd44e603-002a-4b29-9f5f-529e815b6165"/>
|
||||
<property name="MODULE_VERSION" value=""/>
|
||||
<property name="PLATFORM" value="${PLATFORM}"/>
|
||||
<property name="PACKAGE_GUID" value="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
<property name="PACKAGE_VERSION" value=""/>
|
||||
</GenBuild>
|
||||
<GenBuild type="build">
|
||||
<property name="ARCH" value="${ARCH}"/>
|
||||
<property name="MODULE_GUID" value="a86fbfca-0183-4eeb-aa8a-762e3b7da1f3"/>
|
||||
<property name="MODULE_VERSION" value=""/>
|
||||
<property name="PLATFORM" value="${PLATFORM}"/>
|
||||
<property name="PACKAGE_GUID" value="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
<property name="PACKAGE_VERSION" value=""/>
|
||||
</GenBuild>
|
||||
<GenBuild type="build">
|
||||
<property name="ARCH" value="${ARCH}"/>
|
||||
<property name="MODULE_GUID" value="556f5d10-7309-4af4-b80a-8196bd60946f"/>
|
||||
<property name="MODULE_VERSION" value=""/>
|
||||
<property name="PLATFORM" value="${PLATFORM}"/>
|
||||
<property name="PACKAGE_GUID" value="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
<property name="PACKAGE_VERSION" value=""/>
|
||||
</GenBuild>
|
||||
<GenBuild type="build">
|
||||
<property name="ARCH" value="${ARCH}"/>
|
||||
<property name="MODULE_GUID" value="9ba1d976-0624-41a3-8650-28165e8d9ae8"/>
|
||||
<property name="MODULE_VERSION" value=""/>
|
||||
<property name="PLATFORM" value="${PLATFORM}"/>
|
||||
<property name="PACKAGE_GUID" value="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
||||
<property name="PACKAGE_VERSION" value=""/>
|
||||
</GenBuild>
|
||||
</target>
|
||||
<target name="sourcefiles">
|
||||
<Build_Init>
|
||||
<EXTRA.INC>
|
||||
<includepath path="${INCLUDE_PATHS}"/>
|
||||
</EXTRA.INC>
|
||||
</Build_Init>
|
||||
<Build_AUTOGEN FILEEXT="c" FILENAME="AutoGen" FILEPATH=".">
|
||||
<EXTRA.INC>
|
||||
<includepath path="${INCLUDE_PATHS}"/>
|
||||
</EXTRA.INC>
|
||||
</Build_AUTOGEN>
|
||||
<Build_CCode FILEEXT="c" FILENAME="FwVol" FILEPATH=".">
|
||||
<EXTRA.INC>
|
||||
<includepath path="${INCLUDE_PATHS}"/>
|
||||
</EXTRA.INC>
|
||||
</Build_CCode>
|
||||
<Build_CCode FILEEXT="c" FILENAME="WinNtThunk" FILEPATH=".">
|
||||
<EXTRA.INC>
|
||||
<includepath path="${INCLUDE_PATHS}"/>
|
||||
</EXTRA.INC>
|
||||
</Build_CCode>
|
||||
<Build_CCode FILEEXT="c" FILENAME="SecMain" FILEPATH=".">
|
||||
<EXTRA.INC>
|
||||
<includepath path="${INCLUDE_PATHS}"/>
|
||||
</EXTRA.INC>
|
||||
</Build_CCode>
|
||||
</target>
|
||||
|
||||
<target name="sections" />
|
||||
|
||||
<target name="output" >
|
||||
<if>
|
||||
<available type="file" file="${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
|
||||
<then>
|
||||
<var name="SLINK_FLAGS" value="${SLINK_FLAGS} ${DEST_DIR_OUTPUT}/AutoGen.h.obj"/>
|
||||
</then>
|
||||
</if>
|
||||
<OnDependency>
|
||||
<sourcefiles>
|
||||
<fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />
|
||||
<file list="${LIBS}"/>
|
||||
</sourcefiles>
|
||||
<targetfiles>
|
||||
<file name="${BIN_DIR}\SecMain.exe"/>
|
||||
</targetfiles>
|
||||
|
||||
<sequential>
|
||||
<cc userdefine="on">
|
||||
<command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"
|
||||
outputFile="${DEST_DIR_OUTPUT}/SecMainLocal.lib" dpath="${SLINK_DPATH}">
|
||||
|
||||
<argument value="${SLINK_FLAGS}"/>
|
||||
|
||||
<fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>
|
||||
</command>
|
||||
</cc>
|
||||
|
||||
<var name="LIBS" value="${LIBS} ${DEST_DIR_OUTPUT}/SecMainLocal.lib" />
|
||||
|
||||
<shellscript shell="cmd.exe" tmpsuffix=".cmd" >
|
||||
<arg line="/q"/>
|
||||
<arg line="/c"/>
|
||||
<arg line="call"/>
|
||||
PATH ${DLINK_DPATH};%path%
|
||||
"${DLINK}" /LIBPATH:"${env.MSVCDir}\Lib" /LIBPATH:"${env.MSVCDir}\PlatformSdk\Lib" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib ${LIBS} /base:0x10000000 /out:${BIN_DIR}\SecMain.exe /pdb:${DEST_DIR_DEBUG}\SecMain.pdb
|
||||
</shellscript>
|
||||
</sequential>
|
||||
</OnDependency>
|
||||
</target>
|
||||
|
||||
<target name="clean" ></target>
|
||||
|
||||
<target name="cleanAll"></target>
|
||||
</project>
|
|
@ -0,0 +1,180 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
WinNtThunk.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Since the SEC is the only windows program in our emulation we
|
||||
must use a Tiano mechanism to export Win32 APIs to other modules.
|
||||
This is the role of the EFI_WIN_NT_THUNK_PROTOCOL.
|
||||
|
||||
The mWinNtThunkTable exists so that a change to EFI_WIN_NT_THUNK_PROTOCOL
|
||||
will cause an error in initializing the array if all the member functions
|
||||
are not added. It looks like adding a element to end and not initializing
|
||||
it may cause the table to be initaliized with the members at the end being
|
||||
set to zero. This is bad as jumping to zero will case the NT32 to crash.
|
||||
|
||||
All the member functions in mWinNtThunkTable are Win32
|
||||
API calls, so please reference Microsoft documentation.
|
||||
|
||||
|
||||
gWinNt is a a public exported global that contains the initialized
|
||||
data.
|
||||
|
||||
--*/
|
||||
|
||||
#include "SecMain.h"
|
||||
|
||||
//
|
||||
// This pragma is needed for all the DLL entry points to be asigned to the array.
|
||||
// if warning 4232 is not dissabled a warning will be generated as a DLL entry
|
||||
// point could be modified dynamically. The SEC does not do that, so we must
|
||||
// disable the warning so we can compile the SEC. The previous method was to
|
||||
// asign each element in code. The disadvantage to that approach is it's harder
|
||||
// to tell if all the elements have been initailized properly.
|
||||
//
|
||||
#pragma warning(disable : 4232)
|
||||
#pragma warning(disable : 4996)
|
||||
|
||||
EFI_WIN_NT_THUNK_PROTOCOL mWinNtThunkTable = {
|
||||
EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE,
|
||||
GetProcAddress,
|
||||
GetTickCount,
|
||||
LoadLibraryEx,
|
||||
FreeLibrary,
|
||||
SetPriorityClass,
|
||||
SetThreadPriority,
|
||||
Sleep,
|
||||
SuspendThread,
|
||||
GetCurrentThread,
|
||||
GetCurrentThreadId,
|
||||
GetCurrentProcess,
|
||||
CreateThread,
|
||||
TerminateThread,
|
||||
SendMessage,
|
||||
ExitThread,
|
||||
ResumeThread,
|
||||
DuplicateHandle,
|
||||
InitializeCriticalSection,
|
||||
EnterCriticalSection,
|
||||
LeaveCriticalSection,
|
||||
DeleteCriticalSection,
|
||||
TlsAlloc,
|
||||
TlsFree,
|
||||
TlsSetValue,
|
||||
TlsGetValue,
|
||||
CreateSemaphore,
|
||||
WaitForSingleObject,
|
||||
ReleaseSemaphore,
|
||||
CreateConsoleScreenBuffer,
|
||||
FillConsoleOutputAttribute,
|
||||
FillConsoleOutputCharacter,
|
||||
GetConsoleCursorInfo,
|
||||
GetNumberOfConsoleInputEvents,
|
||||
PeekConsoleInput,
|
||||
ScrollConsoleScreenBuffer,
|
||||
ReadConsoleInput,
|
||||
SetConsoleActiveScreenBuffer,
|
||||
SetConsoleCursorInfo,
|
||||
SetConsoleCursorPosition,
|
||||
SetConsoleScreenBufferSize,
|
||||
SetConsoleTitleW,
|
||||
WriteConsoleInput,
|
||||
WriteConsoleOutput,
|
||||
CreateFile,
|
||||
DeviceIoControl,
|
||||
CreateDirectory,
|
||||
RemoveDirectory,
|
||||
GetFileAttributes,
|
||||
SetFileAttributes,
|
||||
CreateFileMapping,
|
||||
CloseHandle,
|
||||
DeleteFile,
|
||||
FindFirstFile,
|
||||
FindNextFile,
|
||||
FindClose,
|
||||
FlushFileBuffers,
|
||||
GetEnvironmentVariable,
|
||||
GetLastError,
|
||||
SetErrorMode,
|
||||
GetStdHandle,
|
||||
MapViewOfFileEx,
|
||||
ReadFile,
|
||||
SetEndOfFile,
|
||||
SetFilePointer,
|
||||
WriteFile,
|
||||
GetFileInformationByHandle,
|
||||
GetDiskFreeSpace,
|
||||
GetDiskFreeSpaceEx,
|
||||
MoveFile,
|
||||
SetFileTime,
|
||||
SystemTimeToFileTime,
|
||||
FileTimeToLocalFileTime,
|
||||
FileTimeToSystemTime,
|
||||
GetSystemTime,
|
||||
SetSystemTime,
|
||||
GetLocalTime,
|
||||
SetLocalTime,
|
||||
GetTimeZoneInformation,
|
||||
SetTimeZoneInformation,
|
||||
timeSetEvent,
|
||||
timeKillEvent,
|
||||
ClearCommError,
|
||||
EscapeCommFunction,
|
||||
GetCommModemStatus,
|
||||
GetCommState,
|
||||
SetCommState,
|
||||
PurgeComm,
|
||||
SetCommTimeouts,
|
||||
ExitProcess,
|
||||
_snwprintf,
|
||||
GetDesktopWindow,
|
||||
GetForegroundWindow,
|
||||
CreateWindowEx,
|
||||
ShowWindow,
|
||||
UpdateWindow,
|
||||
DestroyWindow,
|
||||
InvalidateRect,
|
||||
GetWindowDC,
|
||||
GetClientRect,
|
||||
AdjustWindowRect,
|
||||
SetDIBitsToDevice,
|
||||
BitBlt,
|
||||
GetDC,
|
||||
ReleaseDC,
|
||||
RegisterClassEx,
|
||||
UnregisterClass,
|
||||
BeginPaint,
|
||||
EndPaint,
|
||||
PostQuitMessage,
|
||||
DefWindowProc,
|
||||
LoadIcon,
|
||||
LoadCursor,
|
||||
GetStockObject,
|
||||
SetViewportOrgEx,
|
||||
SetWindowOrgEx,
|
||||
MoveWindow,
|
||||
GetWindowRect,
|
||||
GetMessage,
|
||||
TranslateMessage,
|
||||
DispatchMessage,
|
||||
GetProcessHeap,
|
||||
HeapAlloc,
|
||||
HeapFree
|
||||
};
|
||||
|
||||
#pragma warning(default : 4996)
|
||||
#pragma warning(default : 4232)
|
||||
|
||||
EFI_WIN_NT_THUNK_PROTOCOL *gWinNt = &mWinNtThunkTable;
|
Loading…
Reference in New Issue