UEFI原理与编程(六):UEFI工程模块文件-驱动模块工程文件
来源:互联网 发布:工业机器人编程用什么 编辑:程序博客网 时间:2024/06/07 04:05
UEFI工程模块文件-驱动模块
前言
在UEFI中,驱动分为两类:一类是符合UEFI的驱动模型的驱动,模型的类型为UEFI_DRIVER,称为UEFI驱动;另一类是不遵循UEFI驱动模型的驱动,称为DXE驱动。下面介绍的是UEFI驱动工程文件格式。
一、驱动与应用程序
1. 驱动与应用程序的入口函数相同,入口函数原型如下:
typedef EFI_STATUS API (*UEFI_ENTRYPOINT)( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
2. 驱动与应用程序的最大区别是驱动会常驻内存,而应用程序执行完毕后就会从内存清除。
二、UEFI驱动模块工程文件
基本和应用程序模块相同,注意一下几点即可。
- [Defines]块
将MODULE_TYPE
设置为UEFI_DRIVER - [Sources]块
通常包含ComponentName.c
,在此文件中定义了驱动的名字,驱动安装之后,这个名字将显示给用户。 - [LibraryClasses]块
必须包含UefiDriverEntryPoint。
三、UEFI驱动模块工程文件示例
## @file# Module that lays Disk I/O protocol on every Block I/O protocol.## This module produces Disk I/O protocol to abstract the block accesses# of the Block I/O protocol to a more general offset-length protocol# to provide byte-oriented access to block media. It adds this protocol# to any Block I/O interface that appears in the system that does not# already have a Disk I/O protocol. File systems and other disk access# code utilize the Disk I/O protocol.# # Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR># This program and the accompanying materials# are licensed and made available under the terms and conditions of the BSD License# which accompanies this distribution. The full text of the license may be found at# http://opensource.org/licenses/bsd-license.php# # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.# ##[Defines] INF_VERSION = 0x00010005 BASE_NAME = DiskIoDxe MODULE_UNI_FILE = DiskIoDxe.uni FILE_GUID = 6B38F7B4-AD98-40e9-9093-ACA2B5A253C4 MODULE_TYPE = UEFI_DRIVER VERSION_STRING = 1.0 ENTRY_POINT = InitializeDiskIo## The following information is for reference only and not required by the build tools.## VALID_ARCHITECTURES = IA32 X64 IPF EBC## DRIVER_BINDING = gDiskIoDriverBinding# COMPONENT_NAME = gDiskIoComponentName# COMPONENT_NAME2 = gDiskIoComponentName2#[Sources] ComponentName.c DiskIo.h DiskIo.c[Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec[LibraryClasses] UefiBootServicesTableLib MemoryAllocationLib BaseMemoryLib BaseLib UefiLib UefiDriverEntryPoint DebugLib PcdLib[Protocols] gEfiDiskIoProtocolGuid ## BY_START gEfiDiskIo2ProtocolGuid ## BY_START gEfiBlockIoProtocolGuid ## TO_START gEfiBlockIo2ProtocolGuid ## TO_START[Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdDiskIoDataBufferBlockNum ## SOMETIMES_CONSUMES[UserExtensions.TianoCore."ExtraFiles"] DiskIoDxeExtra.uni
四、小结
本文只是简要介绍了驱动模块的工程文件。关于驱动模块的更详细知识内容,后续再边学边整理。你也可以去看《UEFI原理与编程》的第九章开发UEFI驱动
学习。
参考资料
- 《UEFI原理与编程》 戴正华 著。
- UEFI Spec2_6。
0 0
- UEFI原理与编程(六):UEFI工程模块文件-驱动模块工程文件
- UEFI原理与编程(二):UEFI工程模块文件-标准应用程序工程模块
- UEFI原理与编程(三):UEFI工程模块文件-Shell应用程序工程模块
- UEFI原理与编程(五):UEFI工程模块文件-库模块
- UEFI原理与编程(四):UEFI工程模块文件-使用main函数的应用程序工程模块
- 编写UEFI标准应用程序工程模块小结
- UEFI简单的应用程序模块MyHelloWorld:C源文件/INF工程文件源码/简析[6]
- UEFI原理与编程(九):UEFI中的Protocol使用方法
- UEFI原理与编程(七):包及.dsc、.dec、.fdf文件
- UEFI HII 模块介绍
- UEFI原理与编程(八):UEFI中的Protocol基础结构及其在内核中的表示
- UEFI原理与编程(十):UEFI的基础服务-系统表
- UEFI原理与编程(一):环境搭建
- uefi读取文件
- UEFI应用与编程--HelloWorld(01)
- UEFI工程编译命令Build用法
- UEFI原理与编程——互动出版网
- 编译第一个uefi文件
- 高精度模版
- springboot 集成ueditor
- C++中类的构造函数与复制构造函数
- 第五届上交会完美收官,SLAMTEC获众多关注
- Jmeter Mysql数据库驱动配置
- UEFI原理与编程(六):UEFI工程模块文件-驱动模块工程文件
- 分享一个项目
- 4、SQL安装及配置
- CentOS7安装qemu2.7.0+spice0.12.5过程遇到的问题
- vuejs几种不同组件(页面)间传值的方式
- 【EhCache】Java缓存框架使用EhCache结合Spring AOP
- 349. Intersection of Two Arrays的C++解法
- ScrollView上下滑动修改顶部title背景色淡入淡出
- html中引入js,不同时候引入的区别