MdeModulePkg[all]  0.98
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PeCoffImageEmulator.h File Reference

Data Structures

struct  _EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL
 

Macros

#define EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID   { 0x96F46153, 0x97A7, 0x4793, { 0xAC, 0xC1, 0xFA, 0x19, 0xBF, 0x78, 0xEA, 0x97 } }
 
#define EDKII_PECOFF_IMAGE_EMULATOR_VERSION   0x1
 

Typedefs

typedef struct
_EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL 
EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL
 
typedef IN UINT16 ImageType
 
typedef IN UINT16 IN
EFI_DEVICE_PATH_PROTOCOL * 
DevicePath
 
typedef IN EFI_PHYSICAL_ADDRESS ImageBase
 
typedef IN
EFI_PHYSICAL_ADDRESS IN UINT64 
ImageSize
 
typedef IN
EFI_PHYSICAL_ADDRESS IN UINT64
IN OUT EFI_IMAGE_ENTRY_POINT * 
EntryPoint
 

Functions

typedef BOOLEAN (EFIAPI *EDKII_PECOFF_IMAGE_EMULATOR_IS_IMAGE_SUPPORTED)(IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This
 
typedef EFI_STATUS (EFIAPI *EDKII_PECOFF_IMAGE_EMULATOR_REGISTER_IMAGE)(IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This
 

Variables

EFI_GUID gEdkiiPeCoffImageEmulatorProtocolGuid
 

Detailed Description

Copyright (c) 2019, Linaro, Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

#define EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID   { 0x96F46153, 0x97A7, 0x4793, { 0xAC, 0xC1, 0xFA, 0x19, 0xBF, 0x78, 0xEA, 0x97 } }
#define EDKII_PECOFF_IMAGE_EMULATOR_VERSION   0x1

Typedef Documentation

typedef IN UINT16 IN EFI_DEVICE_PATH_PROTOCOL* DevicePath
typedef IN EFI_PHYSICAL_ADDRESS IN UINT64 IN OUT EFI_IMAGE_ENTRY_POINT* EntryPoint
typedef IN EFI_PHYSICAL_ADDRESS ImageBase
typedef IN EFI_PHYSICAL_ADDRESS IN UINT64 ImageSize
typedef IN UINT16 ImageType

Function Documentation

typedef BOOLEAN ( EFIAPI *  EDKII_PECOFF_IMAGE_EMULATOR_IS_IMAGE_SUPPORTED)

Check whether the emulator supports executing a certain PE/COFF image

Parameters
[in]ThisThis pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure
[in]ImageTypeWhether the image is an application, a boot time driver or a runtime driver.
[in]DevicePathPath to device where the image originated (e.g., a PCI option ROM)
Return values
TRUEThe image is supported by the emulator
FALSEThe image is not supported by the emulator.
typedef EFI_STATUS ( EFIAPI *  EDKII_PECOFF_IMAGE_EMULATOR_UNREGISTER_IMAGE)

Register a supported PE/COFF image with the emulator. After this call completes successfully, the PE/COFF image may be started as usual, and it is the responsibility of the emulator implementation that any branch into the code section of the image (including returns from functions called from the foreign code) is executed as if it were running on the machine type it was built for.

Parameters
[in]ThisThis pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure
[in]ImageBaseThe base address in memory of the PE/COFF image
[in]ImageSizeThe size in memory of the PE/COFF image
[in,out]EntryPointThe entry point of the PE/COFF image. Passed by reference so that the emulator may modify it.
Return values
EFI_SUCCESSThe image was registered with the emulator and can be started as usual.
otherThe image could not be registered.

If the PE/COFF machine type or image type are not supported by the emulator, then ASSERT().

Unregister a PE/COFF image that has been registered with the emulator. This should be done before the image is unloaded from memory.

Parameters
[in]ThisThis pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure
[in]ImageBaseThe base address in memory of the PE/COFF image
Return values
EFI_SUCCESSThe image was unregistered with the emulator.
otherImage could not be unloaded.

Variable Documentation

EFI_GUID gEdkiiPeCoffImageEmulatorProtocolGuid