IA-32, x86, IPF, and EBC processor types. The library functions are memory-based \r
and can be ported easily to any environment.\r
\r
-Copyright (c) 2006 - 2008, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php. \r
\r
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
#define IMAGE_ERROR_SECTION_NOT_LOADED 8\r
#define IMAGE_ERROR_FAILED_RELOCATION 9\r
#define IMAGE_ERROR_FAILED_ICACHE_FLUSH 10\r
+#define IMAGE_ERROR_UNSUPPORTED 11\r
\r
/**\r
Reads contents of a PE/COFF image.\r
On output, the number of bytes actually read.\r
@param Buffer Output buffer that contains the data read from the PE/COFF image.\r
\r
- @retval RETURN_SUCCESS The specified portion of the PE/COFF image was read and the size \r
- @retval RETURN_DEVICE_ERROR The specified portion of the PE/COFF image could not be read due \r
- to a device error.\r
+ @retval RETURN_SUCCESS The specified portion of the PE/COFF image was \r
+ read and the size return in ReadSize.\r
+ @retval RETURN_DEVICE_ERROR The specified portion of the PE/COFF image \r
+ could not be read due to a device error.\r
\r
**/\r
typedef\r
);\r
\r
///\r
-/// Context structure used while PE/COFF image is being loaded and relocated\r
+/// The context structure used while PE/COFF image is being loaded and relocated.\r
///\r
typedef struct {\r
///\r
- /// Is set by PeCoffLoaderGetImageInfo() to the ImageBase in the PE/COFF header\r
+ /// Set by PeCoffLoaderGetImageInfo() to the ImageBase in the PE/COFF header.\r
///\r
PHYSICAL_ADDRESS ImageAddress;\r
///\r
- /// Is set by PeCoffLoaderGetImageInfo() to the SizeOfImage in the PE/COFF header.\r
+ /// Set by PeCoffLoaderGetImageInfo() to the SizeOfImage in the PE/COFF header.\r
/// Image size includes the size of Debug Entry if it is present.\r
///\r
UINT64 ImageSize;\r
///\r
- /// Is set to zero by PeCoffLoaderGetImageInfo(). If DestinationAddress is non zero,\r
+ /// Is set to zero by PeCoffLoaderGetImageInfo(). If DestinationAddress is non-zero,\r
/// PeCoffLoaderRelocateImage() will relocate the image using this base address.\r
/// If the DestinationAddress is zero, the ImageAddress will be used as the base\r
/// address of relocation.\r
///\r
VOID *FixupData;\r
///\r
- /// Is set by PeCoffLoaderGetImageInfo() to the Section Alignment in the PE/COFF header\r
+ /// Set by PeCoffLoaderGetImageInfo() to the Section Alignment in the PE/COFF header.\r
/// If the image is a TE image, then this field is set to 0.\r
///\r
UINT32 SectionAlignment;\r
///\r
/// Set by PeCoffLoaderGetImageInfo() to offset to the PE/COFF header.\r
- /// If the PE/COFF image does not start with a DOS header, this value is zero; \r
- /// otherwise, it's the offset to the PE/COFF header.\r
+ /// If the PE/COFF image does not start with a DOS header, this value is zero. \r
+ /// Otherwise, it's the offset to the PE/COFF header.\r
///\r
UINT32 PeCoffHeaderOffset;\r
///\r
- /// Set by PeCoffLoaderGetImageInfo() to the Relative Virtual Address of the debug directory\r
+ /// Set by PeCoffLoaderGetImageInfo() to the Relative Virtual Address of the debug directory,\r
/// if it exists in the image\r
///\r
UINT32 DebugDirectoryEntryRva;\r
/// Not used by this library class. Other library classes that layer on top of this library \r
/// class fill in this value as part of their GetImageInfo call.\r
/// This allows the caller of the library to know what type of memory needs to be allocated\r
- /// to load and relocate the image\r
+ /// to load and relocate the image.\r
///\r
UINT32 ImageDataMemoryType;\r
///\r
UINT32 ImageError;\r
///\r
/// Set by PeCoffLoaderLoadImage() to indicate the size of FixupData that the caller must\r
- /// allocate before calling PeCoffLoaderRelocateImage()\r
+ /// allocate before calling PeCoffLoaderRelocateImage().\r
///\r
UINTN FixupDataSize;\r
///\r
- /// Set by PeCoffLoaderGetImageInfo() to the machine type stored in the PE/COFF header\r
+ /// Set by PeCoffLoaderGetImageInfo() to the machine type stored in the PE/COFF header.\r
///\r
UINT16 Machine;\r
///\r
BOOLEAN IsTeImage;\r
///\r
/// Set by PeCoffLoaderLoadImage() to the HII resource offset\r
- /// if the image contains a custom PE/COFF resource with the type 'HII';\r
- /// otherwise, the entry remains to be 0.\r
+ /// if the image contains a custom PE/COFF resource with the type 'HII'.\r
+ /// Otherwise, the entry remains to be 0.\r
///\r
PHYSICAL_ADDRESS HiiResourceData;\r
+ ///\r
+ /// Private storage for implementation specific data. \r
+ ///\r
+ UINT64 Context; \r
} PE_COFF_LOADER_IMAGE_CONTEXT;\r
\r
/**\r
The ImageRead and Handle fields of ImageContext structure must be valid prior \r
to invoking this service.\r
\r
- @param ImageContext Pointer to the image context structure that describes the PE/COFF\r
- image that needs to be examined by this function.\r
+ @param ImageContext The pointer to the image context structure that \r
+ describes the PE/COFF image that needs to be \r
+ examined by this function.\r
\r
@retval RETURN_SUCCESS The information on the PE/COFF image was collected.\r
@retval RETURN_INVALID_PARAMETER ImageContext is NULL.\r
cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
prior to transferring control to a PE/COFF image that is loaded using this library.\r
\r
- @param ImageContext Pointer to the image context structure that describes the PE/COFF\r
+ @param ImageContext The pointer to the image context structure that describes the PE/COFF\r
image that is being relocated.\r
\r
@retval RETURN_SUCCESS The PE/COFF image was relocated.\r
cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
prior to transferring control to a PE/COFF image that is loaded using this library.\r
\r
- @param ImageContext Pointer to the image context structure that describes the PE/COFF\r
+ @param ImageContext The pointer to the image context structure that describes the PE/COFF\r
image that is being loaded.\r
\r
@retval RETURN_SUCCESS The PE/COFF image was loaded into the buffer specified by\r
If ReadSize is NULL, then ASSERT().\r
If Buffer is NULL, then ASSERT().\r
\r
- @param FileHandle Pointer to base of the input stream\r
+ @param FileHandle The pointer to base of the input stream\r
@param FileOffset Offset into the PE/COFF image to begin the read operation.\r
@param ReadSize On input, the size in bytes of the requested read operation. \r
On output, the number of bytes actually read.\r
@param Buffer Output buffer that contains the data read from the PE/COFF image.\r
\r
- @retval RETURN_SUCCESS Data is read from FileOffset from the Handle into \r
+ @retval RETURN_SUCCESS The data is read from FileOffset from the Handle into \r
the buffer.\r
**/\r
RETURN_STATUS\r
cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
prior to transferring control to a PE/COFF image that is loaded using this library.\r
\r
- @param ImageBase Base address of a PE/COFF image that has been loaded \r
+ @param ImageBase The base address of a PE/COFF image that has been loaded \r
and relocated into system memory.\r
@param VirtImageBase The request virtual address that the PE/COFF image is to\r
be fixed up for.\r