⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loader.h

📁 Next BIOS Source code : Extensible Firmware Interface
💻 H
字号:
/*++

Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.


Module Name:


Abstract:




Revision History

--*/


#include "efifw.h"


#define LOADED_IMAGE_SIGNATURE   EFI_SIGNATURE_32('l','d','r','i')

typedef struct {
    UINTN                       Signature;
    EFI_HANDLE                  Handle;         // Image handle
    UINTN                       Type;           // Image type

    CHAR16                      *Name;          // Displayable name

    BOOLEAN                     Started;        // If entrypoint has been called
    VOID                        *StartImageContext;

    EFI_IMAGE_ENTRY_POINT       EntryPoint;     // The image's entry point
    EFI_LOADED_IMAGE            Info;           // loaded image protocol

    // 
    EFI_PHYSICAL_ADDRESS        ImageBasePage;  // Location in memory
    UINTN                       NumberOfPages;  // Number of pages 
    CHAR8                       *ImageBase;     // As a char pointer
    CHAR8                       *ImageEof;      // End of memory image
    LIST_ENTRY                  ImageLink;      // External image list

    // relocate info
    CHAR8                       *ImageAdjust;   // Bias for reloc calculations
    CHAR8                       *FixupData;     // Original fixup data
    UINT16                      Machine;        // Machine type from PE image
} LOADED_IMAGE;


//
//
//

EFI_STATUS
LoadPeImage (
    IN SIMPLE_READ_FILE             FHand,
    IN LOADED_IMAGE                 *Image
    );

VOID
ConvertPeImage (
    IN LOADED_IMAGE                 *Image
    );

INTERNAL
EFI_STATUS
CheckImageMachineType (
    IN UINTN                        MachineType
    );

INTERNAL
EFI_STATUS
SetImageType (
    IN OUT LOADED_IMAGE             *Image,
    IN UINTN                        ImageType
    );

EFI_STATUS
RUNTIMEFUNCTION 
LoadPeRelocate_Ex (
    IN UINT16      *Reloc,
    IN OUT CHAR8   *Fixup, 
    IN OUT CHAR8   **FixupData,
    IN UINT64      Adjust
    );

STATIC
EFI_STATUS
RUNTIMEFUNCTION INTERNAL
ConvertPeImage_Ex (
    IN UINT16      *Reloc,
    IN OUT CHAR8   *Fixup, 
    IN OUT CHAR8   **FixupData,
    IN UINT64      Adjust
    );

//
// Globals
//

extern INTERNAL FLOCK       ImageListLock;
extern INTERNAL LIST_ENTRY  BootImageList;
extern INTERNAL LIST_ENTRY  RuntimeImageList;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -