/**@file | |
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 <PiDxe.h> | |
#include <WinNtPeim.h> | |
#include <Guid/StatusCodeDataTypeDebug.h> | |
#include <Library/BaseLib.h> | |
#include <Library/PeCoffLib.h> | |
#include <Ppi/NtPeiLoadFile.h> | |
#include <Ppi/NtAutoscan.h> | |
#include <Ppi/NtThunk.h> | |
#include <Ppi/StatusCode.h> | |
#include <Ppi/NtFwh.h> | |
#include <Ppi/TemporaryRamSupport.h> | |
#include <Library/PcdLib.h> | |
#include <Library/DebugLib.h> | |
#include <Library/PrintLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include <Library/ReportStatusCodeLib.h> | |
#include <IndustryStandard/PeImage.h> | |
#define STACK_SIZE 0x20000 | |
typedef struct { | |
EFI_PHYSICAL_ADDRESS Address; | |
UINT64 Size; | |
} NT_FD_INFO; | |
typedef struct { | |
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 CONST EFI_PEI_SERVICES **PeiServices, | |
IN EFI_STATUS_CODE_TYPE CodeType, | |
IN EFI_STATUS_CODE_VALUE Value, | |
IN UINT32 Instance, | |
IN CONST EFI_GUID * CallerId, | |
IN CONST 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 | |
SecTemporaryRamSupport ( | |
IN CONST EFI_PEI_SERVICES **PeiServices, | |
IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase, | |
IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase, | |
IN UINTN CopySize | |
); | |
extern EFI_WIN_NT_THUNK_PROTOCOL *gWinNt; |