blob: a9a21007e316e5da7279ce66c609d4638a6e3250 [file] [log] [blame]
/**@file
Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
Module Name:
WinHost.h
Abstract:
Include file for Windows Host
**/
#ifndef _HOST_H_
#define _HOST_H_
#include <stdio.h>
#include <time.h>
#include "WinInclude.h"
#include <PiPei.h>
#include <IndustryStandard/PeImage.h>
#include <Guid/FileInfo.h>
#include <Guid/FileSystemInfo.h>
#include <Guid/FileSystemVolumeLabelInfo.h>
#include <Ppi/EmuThunk.h>
#include <Ppi/Reset2.h>
#include <Protocol/EmuThunk.h>
#include <Protocol/SimpleFileSystem.h>
#include <Protocol/EmuBlockIo.h>
#include <Protocol/BlockIo.h>
#include <Protocol/EmuSnp.h>
#include <Library/BaseLib.h>
#include <Library/PeCoffLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/ThunkPpiList.h>
#include <Library/ThunkProtocolList.h>
#include <Library/PcdLib.h>
#include <Library/PrintLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/PeiServicesLib.h>
#include <Library/PeCoffExtraActionLib.h>
#include <Library/NetLib.h>
#define TEMPORARY_RAM_SIZE 0x20000
typedef struct {
VOID *Address;
UINTN Size;
} NT_FD_INFO;
typedef struct {
EFI_PHYSICAL_ADDRESS Memory;
UINT64 Size;
} NT_SYSTEM_MEMORY;
RETURN_STATUS
EFIAPI
SecPeCoffGetEntryPoint (
IN VOID *Pe32Data,
IN OUT VOID **EntryPoint
);
VOID
SecLoadSecCore (
IN UINTN TemporaryRam,
IN UINTN TemporaryRamSize,
IN VOID *BootFirmwareVolumeBase,
IN UINTN BootFirmwareVolumeSize,
IN VOID *SecCorePe32File
)
/*++
Routine Description:
This is the service to load the SEC Core from the Firmware Volume
Arguments:
TemporaryRam - Memory to use for SEC.
TemporaryRamSize - Size of Memory to use for SEC
BootFirmwareVolumeBase - Start of the Boot FV
SecCorePe32File - SEC Core PE32
Returns:
Success means control is transferred and thus we should never return
--*/
;
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
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
--*/
;
BOOLEAN
EfiSystemMemoryRange (
IN VOID *MemoryAddress
);
VOID
SecInitializeThunk (
VOID
);
extern EMU_THUNK_PROTOCOL gEmuThunkProtocol;
extern EMU_IO_THUNK_PROTOCOL mWinNtWndThunkIo;
extern EMU_IO_THUNK_PROTOCOL mWinNtFileSystemThunkIo;
extern EMU_IO_THUNK_PROTOCOL mWinNtBlockIoThunkIo;
extern EMU_IO_THUNK_PROTOCOL mWinNtSnpThunkIo;
#endif