/**@file Copyright (c) 2006, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent Module Name: SecMain.h Abstract: Include file for Windows API based SEC **/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #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 CountSeparatorsInString ( IN CONST CHAR16 *String, IN CHAR16 Separator ) /*++ Routine Description: TODO: Add function description Arguments: String - TODO: add argument description Separator - 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;