mirror of https://github.com/acidanthera/audk.git
216 lines
4.0 KiB
C
216 lines
4.0 KiB
C
/**@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
|