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执行文件。
    包由模块、平台描述文件和包声明文件组成。它可以不包含模块,也可以包含多个模块。

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

更多相关文章

SWF文件与目录系统:一份全面的属性解析指南

24天前

在前面的章节内容中,都是围绕普通文件IO 操作进行的一系列讨论,譬如打开文件、读写文件、关闭文件等,本章将抛开文件IO 相关话题,来讨论Linux 文件系统的其它特性以及文件相关属性;我们将从系统调用stat 开始,可利用其返回一

Flash中心的进阶技巧:从初学者到大师的秘诀

23天前

此文编写参考朱有鹏老师视频课程,错误之处,欢迎指正。 内容关系图 一、linux中各种文件类型 1、普通文件(-regular file)(1)文本文件。文件中的内容是由文本构成的,文本指的是AS

ASF文件与HTTP的幕后故事:Flash中心的神秘链接

23天前

asf 是 ( advanced streaming format 高级串流格式)的缩写,是 microsoft 为 windows 98 所开发的串流 文件格式。这个词汇当前可和 wma 及 wmv 互换使用

ASF文件的秘密:深入探讨ASF文件格式,让你在Adobe Flash Player领域更精通

23天前

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

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

23天前

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

告别视觉干扰,一招搞定桌面快捷方式箭头

23天前

大家好,我是冰河~~这两天笔记本硬盘坏了,一些数据不能恢复了,哎,才买了一年多的电脑,竟然因为硬盘老化突然出现很多磁盘坏道,尝试各种方式读盘均失败,各种工具都无法检测磁盘的存在。无奈之下,拿到电脑维修部去修,同样无法恢复

NTLDR失踪?轻松几步,让你的电脑重启如新!

23天前

平时,我们偶尔会遇到系统启动时显示“NTLDR is missing”而无法进入系统的情况。其实导致该故障的原因多,但网上绝大部分文章都只针对一种情况进行讨论。下面笔者将各种情况和原因进行汇总,希望对大家有所帮助。一、NT

轻松转换QQ音乐格式:QMCDecode让你畅听无阻

23天前

QQ音乐格式转换工具QMCDecode全解析:从加密限制到跨平台自由播放 QMCDecode是一款专为macOS用户设计的开源音频格式转换工具,专注于解决QQ音乐加密文件的播放限制问题。通过深度解析QMC加密算法,该工具能够将

告别QQ音乐难题,QMCDecode破解指南全面揭秘

23天前

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

D3DX9_43.dll 文件丢失?别怕,这里有5个简单步骤帮你轻松修复!

22天前

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

遇到d3dx9_43.dll丢失?轻松几步,让Flash动画再度闪亮

22天前

在现代计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到d3dx9_43.dll,无法继续执行代码”。这个错误提示通常出现在运行某些游戏或应用程序时,它会导致程序无法正常运行。本文将针对这个问题进行原因分析,并提供6种

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

22天前

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

哎呀,电脑卡顿又卡顿,d3dx9_43.dll出问题了?!怎么修复?

22天前

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

D3DX9_43.dll故障?6步快速修复,让游戏和应用重新运转!

22天前

​d3dx9_43.dll是DirectX 9组件的一部分,这是一个由微软开发的图形API,用于处理与游戏和多媒体相关的图形渲染。d3dx9_43.dll库包含了DirectX 9中用于3D图形渲染和处理的许多实用程序函数。这些函数为

当d3dx9_43.dll不见了,别慌!这里有6个实用技巧,帮你解决Adobe Flash Player的问题!

22天前

当d3dx9_43.dll文件缺失时,系统会显示错误信息来提示用户。这些错误信息可能会包含类似于"d3dx9_43.dll未找到"或"找不到d3dx9_43.dll"等字样。通常出现这样的字样那就是导

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

22天前

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

破解代码执行障碍:寻找并修复d3dx9_43.dll的秘籍!

22天前

在计算机打开游戏和运行过程中,常常会遇到一些错误提示,其中最常见的就是缺少某个动态链接库(DLL)文件。而d3dx9_43.dll文件就是其中之一。本文将对d3dx9_43.dll文件进行总体介绍,帮助读者了解该文件的作用、安装方法以

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

22天前

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

ZIP加密秘籍:轻松几步,保护你的文件不被窥视!

22天前

在工作中,我们经常需要将重要文件打包成ZIP文件,再发送给他人。如果想要保护压缩包不被随意打开,只需要添加密码保护就可以了。那如何给ZIP文件加密呢?根据不同场景,方法也不同,一起来看看吧! 场景一:在压缩ZIP文件时加密

从入门到精通:Python解压缩加密Flash文件,全面解析

22天前

实验目的 应用Python程序设计语言的相关知识, 对加密的压缩文件进行破解。 实验所用仪器(或实验环境) Python3.8 实验基本原理及步骤(或方案设计及理论计算)

发表评论

全部评论 0
暂无评论