admin管理员组

文章数量:1516870

EDKII官方Spec 合集网站

前言

之前在向代码中添加自己创建的代码时,一直都是在自己创建的 LilyPackage 中创建好相应的 .h .c .inf 文件,然后在 EmulatorPkg.dsc 文件中将 .inf 文件进行包含,一直没有出现问题。但是在创建新的 protocol 的时候,出现了一点问题,就是关于 include 的 TestProtocol.h
在UEFI中,创建新的 protocol 是需要在 .dec 文件中声明对应的GUID 的,我当时的做法是将GUID 在 EmulatorPkg.dsc [Protocols] 下进行声明,并且将自己定义的 .h 文件放在了 EmulatorPkg\Include\Protocol 路径下。但是有人提出,在他的代码中 需要将定义的 .h文件放在 MdePkg\Include\Protocol 路径下才可以得到编译结果 。之前我从来没有关心过文件的路径问题,对于不同类型的文件作用也没有进行深入的研究,借着这个疑问,也终于有机会对这些问题深入的研究一下。

Module & Package 概念

刚刚学习UEFI的人,不能避免的会遇到这两个概念,EDKII的代码组织形式就是以这两个概念为基础的,但是这两个概念在代码结构中的表现却很少有人提起。
我们打开EDKII代码的根目录,就可以看到许多个 .pkg 结尾的文件夹,每一个都是一个package

继续向下 我们就可以看到更多的子文件夹 有的子文件夹就是一个模块 ,但这也并不是绝对的。我们这样可以说是语焉不详,这种模棱两可的表述肯定搞不清楚这两个UEFI中最常见的概念的定义。为了明晰这两个概念,首先先看一下Build Spec (下载链接已经放在开头了 所有的EDKII需要的SPEC基本都能从这个连接中找到 )中对这两个定义的解释:

Module :A module is either an executable image or a library instance. For a list of module types supported by this package, see module type
Module: 是一个可执行image或者一个 lib instance 。某一个package中支持的module类型可以查看module type类型

Package:A package is a container. It can hold a collection of files for any given set of modules.
Packages may be described as one of the following types of modules:

  1. source modules, containing all source files and descriptions of a module
  2. binary modules, containing EFI Sections or a Framework File System and a description file specific to linking and binary editing of features and attributes specified in a Platform Configuration Database (PCD).
  3. mixed modules, with both binary and source modules
    Multiple modules can be combined into a package, and multiple packages can be combined into a single package.

Package:Package是一个容器,他容纳了一系列给定Module的文件的集合。
Package可以被描述成为以下几种类型的Modules的之一:

  1. source modules:包含了一个模块的所有源代码文件和描述文件
  2. 二进制 modules:包含了 EFI section 或者 一个ffs,以及 一个des 文件,专门用来链接和二进制编辑PCD中指定的功能和属性
  3. 混合modules :包含以上两种
    多个modules可以被包含在一个package中,多个package也可以结合成一个package

我觉得Spec里面的解释可以说是非常抽象了 幸亏 我手边有两本参考书 可以看一下书中所言:

  1. 包(package)是一组模块及平台描述文件(dsc)、包声明(dec)文件组成的集合。
    模块(可执行文件,即.efi文件)像插件一样可以动态地加载到UEFI内核中。
  2. 模块是UEFI上最小的可单独编译的代码单元,或是预编译的二进制文件,比如.efi执行文件。
    包由模块、平台描述文件和包声明文件组成。它可以不包含模块,也可以包含多个模块。

本文标签: 一个文件这个位置

更多相关文章

Linux下文件权限属性浅谈:从'r--p'到'rw-p'

24天前

我们在 Linux 中,存在文件的目录中执行 ls -al 命令,就会获得该目录下文件及其文件属性的信息。 例如: $ ls -al-rw-r--r-- 1 root root 120 Jan 6 2019 .bashrc

Linux玩转文件:从类型识别到权限管理,带你深入文件系统

24天前

1.linux中各种文件类型 普通文件:(1) 文本文件:由文本构成,常见的.c文件, .h文件 .txt文件等都是文本文件,文本文件的好处就是可以被人轻松读懂和编写。 (2)

从头到尾解读ASF文件:揭秘其在Flash中的角色

24天前

最近一个月经理让我把我公司.vm4格式的video文件,封装成MS的ASF文件。 ASF文件是一个容器。理论上来说,可以包容各种video文件。这些文件可以用MS自己的codec,也可用第三方的codec。 ASF主要

Win11里的小秘密:让你的文件不再被藏匿

24天前

Win11操作系统也推出一段时间了,不少小伙都有下载体验,但是使用过程中还是会有一些问题。Windows11会为用户自主地隐藏一些私密的文件数据,目的是为了防止用户进行误删除操作,那么我们该如何恢复隐藏的文件?下面和小编一起来了解一下

Kali Linux中,让隐形文件重新现身的步骤详解

24天前

在 Kali Linux 中,文件可能因为多种原因被隐藏,以下是几种恢复隐藏文件的方法: 1. 查看并显示隐藏文件 大多数情况下,文件只是被设置为隐藏属性(以点"."开头): bash ls

U盘中的Word大作战:破解无法打开的权限谜题

23天前

对于很多上班一族的人来说,经常需要使用到U盘来传输文件,如果遇上U盘中word文档打不开该怎么办?你知道该如何处理吗?今天企业网盘坚果云干货分享就来和大家分享解决 u盘文件打不开 弹出警告提示的解决办法。 第一种情况:因为U盘

从安装文件出发:探索APP_e2esoft vcam的核心功能与反向使用

23天前

主要分析CyberLink的Youcam 和e2esoft的VCam。 ========================== CyberLink YouCam =============================

掌握这招,QQ聊天记录数据恢复不再难题

23天前

简介:本文围绕如何在重装QQ后查看历史留言记录,并探讨查看他人电脑上QQ聊天记录的方法展开,主要涉及QQ本地数据存储机制、第三方查看工具使用以及聊天记录恢复技巧。文中介绍了QQ聊天记录默认存储路径、“Tencent Files”目录作

QQ音乐不再神秘,揭秘其加密真相,QMCDecode助你自由畅听!

23天前

5步破解QQ音乐加密:QMCDecode终极解决方案 你是否遇到过下载的QQ音乐无法在车载播放器、MP3设备或其他音乐软件中播放的情况?这是因为QQ音乐采用专有的QMC加密格式对音频文件进行保护。QMCDecode作为一款专为

剑灵游戏出错?试试这3步,轻松搞定126‘未找到dll’!

23天前

在《剑灵》中遇到游戏崩溃弹窗显示“错误126:未找到dll”时,可尝试这样解决。先检查游戏文件完整性,确保相关动态链接库文件未缺失,然后更新驱动程序,清理电脑垃圾,若还不行,可考虑重新安装游戏来解决这一问题。本篇将为大家带来《剑灵》游

剑灵游戏崩溃?解决'未找到dll'错误,只需几步!

23天前

在《剑灵》中遇到游戏崩溃弹窗显示“错误126:未找到dll”时,可尝试这样解决。先检查游戏文件完整性,确保相关动态链接库文件未缺失,然后更新驱动程序,清理电脑垃圾,若还不行,可考虑重新安装游戏来解决这一问题。本篇将为大家带来《剑灵》游

丢失d3dx9_43.dll?一招轻松搞定!

23天前

d3dx9_43.dll 是一个与 Microsoft DirectX 9.0c 版本相关的动态链接库(DLL)文件。DirectX 是由微软开发的一个应用程序接口(API),用于处理多媒体相关任务,尤其是在游戏和高性能图形应用中。具

从新手到高手:d3dx9_43.dll修复全面教程,轻松搞定游戏BUG

23天前

本指南旨在提供一个全面的解决方案集,以协助用户克服遇到的“d3dx9_43.dll文件丢失”错误,从而使软件或游戏能够再次正常运行。本文将为不同技术水平的读者介绍一系列清晰、易于理解的修复策略,无论您是初学者还是有丰富经验的用户,都能

DirectX文件丢失?解码器故障?修复方法大公开!

22天前

在电脑使用过程中,我们可能会遇到一些错误提示,其中之一就是“d3dx9_43.dll缺失”。这个错误提示通常表示我们的电脑上缺少了DirectX的一个组件,而DirectX是游戏和多媒体应用所必需的软件。本文将介绍d3dx9_43.d

别担心!一文解决找不到d3dx9_43.dll的问题,重启程序轻松搞定

22天前

很多人经常使用电脑的时候可能遇到过电脑缺失d3dx9_43.dll的情况。这种情况通常是由于不当操作导致病毒感染或软件误删等原因引起的。今天,我将为大家详细讲解电脑缺失d3dx9_43.dll的原因以及几种解决方法。一、了

当d3dx9_43.dll文件不见了,如何用简单步骤找回并解决困扰?

22天前

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个d3dx9_43.dll文件进行安装(前提

d3dx9_43.dll出错,Flash动画播放不起来?试试这5种方法!

22天前

找不到d3dx9_43.dll文件导致无法继续执行代码的问题,通常是由于DirectX组件缺失或损坏引起的。这个错误通常出现在运行某些游戏或应用程序时,它会导致程序无法正常运行。下面我将介绍5种解决找不到d3dx9_43.dll的方法

一文教你找回丢失的d3dx9_43.dll,轻松修复

22天前

d3dx9_43.dll如何修复?d3dx9_43.dll是电脑内十分重要的文件,它的丢失易导致游戏、应用软件等程序运行出现错误,致使程序无法正常运行,它的解决办法也是非常简单的,只要下载好d3dx9_43.dll文件,

Java秘籍:一步到位的加密压缩,从创建ZipFile到目的地文件

22天前

创建于 2021年6月15日 作者:想想java 加密压缩文件 1、引入依赖 <dependency><groupId>net.lingala.zip4j<groupId&g

一步到位,修复你的ClientBase.dll,DNF再无启动难题!

22天前

遇到《地下城与勇士》(DNF)提示“由于找不到ClientBase.dll无法继续执行代码”的问题时,意味着游戏在启动或运行时未能找到或加载一个必要的动态链接库(Dynamic Link Library)文件。ClientBase.d

发表评论

全部评论 0
暂无评论