[TOC]
系统表是重要的数据接口之一,是用户空间通往内核空间的通道。
(1)在应用程序和驱动中访问系统表
系统表是 UEFI 内核的一个全局结构体,其指针作为程序映像入口函数的参数传递到用户空间。程序映像(包括 UEFI 应用程序、DXE 驱动程序、UEFI 驱动程序)的入口函数有统一的格式,函数原型如下:
(2)系统表指针从内核传递到用户空间的过程
程序映像的入口函数通常是 _ModuleEntryPoint。当应用程序或驱动加载到内存形成 Image 后,_ModuleEntryPoint 函数地址被赋值给 Image 对象的 EntryPoint,然后 Image->EntryPoint 会被执行,最终会从 Image 的入口函数 _ModuleEntryPoint 执行到模块的入口函数。
系统表可分为以下6个部分
系统表数据结构:
UEFI 中的表通常都以 EFI_TABLE_HEADER 开头,数据结构如下:
这三个控制台设备以及 ConIn、ConOut、StdErr 三个 Protocol 在驱动 ConSplitterDxe 中被初始化。
ConfigurationTable 是系统配置表,指向 EFI_CONFIGUTATION_TABLE 数组,数组中每一项是一个表,这个表的数据结构如下:
在 UEFI 中只有一个地址空间,所有程序都运行在 RING0 优先级,应用程序地址空间(用户空间)占用 UEFI 地址空间的一部分。
系统表的地址可以通过模块的入口函数的参数得到。示例:
上面示例中的模块入口函数 UefiMain 中使用传入的参数 SystemTable 访问系统表。EDK2 为了方便开发者,提供了 UefiBootServicesTableLib,在 UefiLib 定义了全局变量 gST
、gBS、gImageHandle。这三个全局变量在函数 UefiBootServicesTableLibConstructor 中被初始化,该函数是库 UefiBootServicesTableLib 的构造函数,在 AutoGenc 中的 ProcessLibraryConstructorList 被调用,而 ProcessLibraryConstructorList 是在 UefiMain 之前被调用的。
构造函数 UefiBootServicesTableLibConstructor 源码:
gST 变量是定义在用户空间的变量,而它指向的系统表定义在 UEFI 内核中。在应用程序或驱动工程文件的 [LibraryClasses] 里引用 UefiBootServicesTableLib 后,就可以使用 gST 访问系统表了。示例:
其实就是使用 gST 和 gBS 替换掉 SystemTable 和 SystemTable->BootServices。
启动服务是 UEFI 的核心数据结构,可以分为以下几类:UEFI 事件服务、内存管理服务、Protocol 管理服务、Protocol 使用类服务、驱动管理服务、Image 管理服务、ExitBootServices、其他服务。
启动服务由 UEFI 表头和表项组成,表中每一项是一个函数指针,该函数用于提供一项服务。
事件是异步 *** 作的基础,使得在 UEFI 系统内可以执行并发 *** 作。UEFI 事件服务包含事件(Event)、定时器(Timer)、任务优先级(TPL)三类服务。
详见第六章。
内存管理服务主要提供内存的分配与释放服务、管理系统内存映射。主要包括:AllocatePages、FreePages、AllocatePool、FreePool、GetMemoryMap。
AllocatePool/FreePool 用法
AllocatePool 和 FreePool 服务函数原型:
枚举类型 EFI_MEMORY_TYPE:
调用 gBS->ExitBootServices 之后, EfiBootServicesCode 和 EfiBootServicesData 类型内存被回收;EfiLoaderCode 和 EfiLoaderData 由 OS Loader 和 *** 作系统决定是否回收;EfiACPIReclaimMemory 类型内存在 APCI 启用后被回收;其他类型内存保留。
AllocatePages/FreePages 用法
内存和驱动开发中经常会要求分配到的内存不得跨页,或需要分配完整的内存页,为此提供了分配页的服务 AllocatePages。
AllocatePages 和 FreePages 服务函数原型:
枚举类型 EFI_AlLOCATE_TYPE
GetMemoryMap 用法
GetMemoryMap 用于取得系统中所有的内存映射。
GetMemoryMap 服务函数原型:
EFI_MEMORY_DESCRIPTOR 数据结构
Protocol 管理服务提供安装与卸载 Protocol 的服务,以及注册 Protocol 通知函书(安装时调用)的服务。
详见第八章、第九章。
Protocol 使用类服务包括 Protocol 的打开与关闭,查找支持 Protocol 的控制器,主要提供 Protocol 使用者使用。
详见第四章。
驱动管理服务包括将驱动安装到控制器的 connect 服务和将驱动从控制器上卸载的 disconnect 服务。
详见第九章。
Image 管理服务包括加载、卸载、启动、退出 UEFI 应用程序或驱动。
启动服务中的 Image 管理服务
ExitBootService 用于结束启动服务,该服务成功返回后,系统进入 RT 期。 *** 作系统加载器从启动服务接过对计算机系统的控制权后必须调用该服务。
启动服务中的其他服务
从进入 DXE 阶段运行时服务被初始化,直到 *** 作系统结束,运行时服务都一直存在并向上层提供服务。运行时服务主要包括:时间服务、读写系统变量、虚拟内存服务、其他服务。
时间服务包括:读取 / 设置硬件事件、读取 / 设置唤醒定时器。
GetTime/SetTime
计算机硬件时钟由单独的电池供电, *** 作系统启动时通过读取硬件时钟获得事件。
GetTime/SetTime 服务函数原型:
时钟性能用 EFI_TIME_CAPABILITIES 表示:
GetWakeupTime/SetWakeupTime
GetWakeupTime 用于读取唤醒定时器的状态,SetWakeupTime 用于启用或禁用唤醒定时器。
GetWakeupTime/SetWakeupTime 服务函数原型:
UEFI 系统变量服务包括:GetVariable、SetVariable、GetNextVariableName。
GetVariable 用法
GetVariable 用于根据变量名获取变量值和属性。
GetVariable 服务函数原型:
SetVariable 用法
SetVariable 有三项功能:新建、更新、删除变量。
SetVariable 服务函数原型:
GetNextVariableName 用法
GetNextVariableName 用于获取下一个系统变量,通过这个服务可以遍历系统中的变量。
GetNextVariableName 服务函数原型:
要启动搜索(获得第一个变量),需要 VariableName 指向空字符串。
虚拟内存服务包括:SetVirtualAddressMap 和 ConvertPointer。这两个服务只有在运行时期间被 *** 作系统加载器调用。
调用流程:
SetVirtualAddressMap/ConvertPointer 服务函数原型:
Address 作为输入参数时是物理地址,作为输出参数时返回对应的虚拟地址。ConvertPointer 通过查询系统的内存映射表计算出给定物理地址的虚拟地址。当 DebugDispositon 设置了 EFI_OPTION_PTR 标志时,输入参数 Address 允许为空。
在确定不是摄像头损坏的情况下,可能是电脑的驱动问题导致使用不了。首先鼠标右键桌面的此电脑图标,然后选择管理打开。
2、在设备管理器窗口中,找到并展开图像设备下的摄像头设备,选中后鼠标右键,选择更新驱动程序打开。
3、来到更新驱动程序窗口中,建议可以选择浏览我的计算机以查找驱动程序软件(手动查找并安装驱动程序软件),联网的情况下也可以自动搜索更新驱动。
4、选择让我从计算机上的可用驱动程序列表中选取(此列表将显示与该设备兼容的可用驱动程序,以及与该设备属于同一类别的所有驱动程序)。
5、选择要为此硬件安装的设备驱动程序,请选定硬件设备的厂商和型号,然后单击下一步。如果手头有包含要安装的驱动程序的磁盘,那就单击从磁盘安装,在型号中点击USB视频设备,完成后显示USB视频设备,重启电脑即可
dism封装首次运行自动安装?1Windows光盘映像文件加载到虚拟光驱或者解压到硬盘某一目录下
Windows 8/81/10可以直接加载光盘映像文件加载到虚拟光驱
低版本的Windows可以使用Virtual CD-ROM Control Panel
(以下命令假设将Windows光盘映像文件加载到虚拟光驱,驱动器号为H:)
2 复制sources文件夹下installwim到D:\,在D:\新建文件夹"x86"和"export-image"
3 以管理员身份运行cmd或者powershell,在cmd或者powershell下运行以下命令
dism /mount-wim /wimfile:D:\installwim /index:1 /applydir:D:\x86
(ndex不一定为1,根据想要安装的版本,运行dism /get-imageinfo /imagefile:D:\installwim查询相应的索引号)
将wim文件安装到指定的目录,以便该文件可用于提供服务
dism /image:D:\x86 /add-driver /driver:驱动程序所在文件夹路径或者inf安装文件路径
/forceunsigned可以向脱机映像中添加未签名的驱动程序
向脱机映像中添加驱动程序
dism /unmount-wim /mountdir:D:\x86 /commit
保存更改并卸载wim文件
另外安装的驱动程序可以用解压软件在安装包里提取或者使用驱动精灵备份,在C:\Windows\System32\DriverStore\FileRepository\查找备份驱动程序所在文件夹
dism /export-image /sourceimagefile:D:\installwim /sourceindex:1 /destinationimagefile:D:\export-image\installwim
将指定映像的副本导出到其他文件
4 使用ultraoiso打开Windows光盘映像文件替换sources文件夹下的installwim另存为新的光盘映像文件
1、保持电脑工作环境清洁
硬盘以带有超精过滤纸的呼吸孔与外界相通,它可以在普通无净化装置的室内环境中使用,若在灰尘严重的环境下,会被吸附到PCBA的表面、主轴电机的内部以及堵塞呼吸过滤器,因此必须防尘。 还有环境潮湿、电压不稳定都可能导致硬盘损坏。
2、养成正确关机的习惯
硬盘在工作时突然关闭电源,可能会导致磁头与盘片猛烈磨擦而损坏硬盘,还会使磁头不能正确复位而造成硬盘的划伤。关机时一定要注意面板上的硬盘指示灯是否还在闪烁,只有当硬盘指示灯停止闪烁、硬盘结束读写后方可关机。
3、正确移动硬盘,注意防震
移动硬盘时最好等待关机十几秒硬盘完全停转后再进行。在开机时硬盘高速转动,轻轻的震动都可能碟片与读写头相互磨擦而产生磁片坏轨或读写头毁损。所以在开机的状态下,千万不要移动硬盘或机箱,最好等待关机十几秒硬盘完全停转后再移动主机或重新启动电源,可避免电源因瞬间突波对硬盘造成伤害。在硬盘的安装、拆卸过程中应多加小心,硬盘移动、运输时严禁磕碰,最好用泡沫或海绵包装保护一下,尽量减少震动。 注意:硬盘厂商所谓的“抗撞能力”或“防震系统”等,指在硬盘在未启动状态下的防震、抗撞能力,而非开机状态。
4、用户不能自行拆开硬盘盖
此外硬盘的制造和装配过程是在绝对无尘的环境下进行,切记:一般计算机用户不能自行拆开硬盘盖,否则空气中的灰尘进入硬盘内,高速低飞的磁头组件旋转带动的灰尘或污物都可能使磁头或盘片损坏,导致数据丢失,即使仍可继续使用,硬盘寿命也会大大缩短,甚至会使整块硬盘报废。
5、注意防高温、防潮、防电磁干扰
硬盘的工作状况与使用寿命与温度有很大的关系,硬盘使用中温度以20~25℃为宜,温度过高或过低都会使晶体振荡器的时钟主频发生改变,还会造成硬盘电路元件失灵,磁介质也会因热胀效应而造成记录错误;温度过低,空气中的水分会被凝结在集成电路元件上,造成短路。 也可用软件监控硬盘温度
建议你与主机板厂商联系,更新你的BIOS。若你无法立即更新BIOS,你可以进入Bios选单,查看Bios Power Management Setup 中 Disable \'ACPI function\'。并重新运行windows XP安装时按F5,在出现的选项中,选择Standard PC,以便完成windows XP安装。但完成安装后将无法使用ACPI各项功能。如何利用Ghost方式来快速安装Windows XP到多台硬件设备相同的计算机? �0�2 如果你单位有多台相同硬件设备的计算机,你想利用\'Symantec Ghost\'这类产品所做的映像档(image file)来快速安装Windows XP在这些计算机时,你可使用\'SYSPREP\' TOOL修改本机计算机的 [安全性识别码 (SID)],让它成为每台计算机的专用识别码。 A、运行步骤: (1)请先利用WINZIP,解压缩SysPrep tool(在Windows XP安装光盘,路径 support oolsdeploycab)。 (2)准备复制主要安装:先在某一台主计算机上安装 Windows XP Professional,你可选择安装及自定Microsoft Office、Internet Explorer 收藏夹项目等应用程序 。 (3)运行Sysprepexe。注意:请先确定Sysprepexe及Setupclexe 档案都在本机硬盘的 %systemdrive%Sysprep 文件夹中,或是在Windows 启动菜单出现时插入的磁盘中。如果 Setupclexe 和 Sysprepexe 不在同一个目录,Sysprep 无法运作。 (4)在旗标里选择 [MiniSetup] 与 [PNP] ,然后选择〔重新安装〕,在关机项目里,可自行选择重新启动计算机或直接关机 。 (5)如果计算机符合 ACPI,它会自行关机。否则会出现对话框指出你现在可以安全的关闭计算机。 (6)关机后,你就可以运行GHOST程序,将运行过SysPrep的Windows XP,制作成映像档(image file)。 B、当用Ghost方式复制安装Windows XP的硬盘安装到计算机后,使用者开启计算机时,会出现下列对情况: (1)随插即用开始侦测 - 约需 3 分钟; (2)请你指定使用者的名称及组织; (3)请你加入网域或工作群组; (4)请你指定地区选项信息; (5)请你指定 TAPI 信息; (6)请你指定要安装的网络通讯协议及服务; (7)请你删除 %systemdrive% 中有 Sysprepexe 及 Sysprepinf 的本机 Sysprep 文件夹。 C、注意事项: (1)先在测试的机器测试过,再依照实际的环境做必要的调配 。 (2)若要将 SysPrep 使用成磁盘复制程序的一部份,则必须遵守下列规定: a、主要安装及目的地计算机的硬件抽象层 (HAL) 必须兼容。例如:HAL APIC 及 HAL MP (多处理器系统) 是兼容的,而 HAL PIC (Programmable Interrupt Controller) 与 HAL APIC 或 HAL MP是不兼容的。 b、参照计算机与目的地计算机之间的大型存放装置控制器 (IDE 或 SCSI) 必须相同。调制解调器、声卡、网络卡、视讯卡等随插即用装置,不一定要相同。但是,运行 Sysprep 之前,Driverscab 中没有的装置驱动程序,应该放入主要安装中。或是让未安装的驱动程序在初次运行目的地计算机时都有效,以便让随插即用 可侦测到后,完成安装驱动程序的程序。 c、目的地计算机的硬盘空间,至少必须与主要安装的硬盘大小相同。
以上就是关于第五章 UEFI 的基础服务全部的内容,包括:第五章 UEFI 的基础服务、笔记本电脑摄像头指示灯亮没图像、dism封装首次运行自动安装等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)