2023年12月5日发(作者:)

实用第一/智慧密集*基于UEFI固件的

Windows

Abnormal

Shutdown

问题分析顾长利(合肥联宝信息技术有限公司,合肥230601)摘

要:简要介绍了

UEFI固件的组成及Windows操作系统的历史,详细介绍了导致Windows

Abnormal

Shutdown问题的原因及基于UEFI固件的分析造成这个原因的方法,并给出了部分程序代码。关键词:UEFI

固件;Windows

系统;Abnormal

Shutdown

问题1概述电脑正常使用一段时间后,可能会突然蓝屏重启;

或者电脑开机后放着长时间不动,重启系统需要很长时

间,或重启后无法进入Windows操作。遇到这种问题,

系统工程师一般会查看Windows日志,在系统事件下,

可以看到一个事件号为41的关键事件,这个事件就是

Abnormal

Shutdowno

Windows给的描述是:系统在未正

常关机的情况下重新启动。如果系统停止响应,发生崩

溃或意外断电,则可能导致此错误。但具体是什么原因

导致该事件的产生,Windows并没有给出。这就给处理

该问题的工程师带来很大的挑战。2

UEFI固件UEFI

全称为

Universal

Extensible

Firmware

Interface

即统一可扩展固件接口。该接口规范定义了连接操作系

统和平台硬件之间的软件接口。提供了一个标准Inter­face,

以便在硬件发生变更时固件能提供足够信息而保

证操作系统不受影响。它包含有芯片组和外设芯片的驱

动程序及各类协议的程序,并通过系统表提供引导时服

务和运行时服务。如图1所示。CPUIniLChipsetInitDevice,BoardInilEFl

Driver

BootOS-PresentDispatcherManagerAppIntrinsicServicesFinal

OS

securityEnvironmentDriver

Security

InitializationPre

EFIExecution

Boot

DevTransientAfter(SEC)

(PEI)Environment

Select

SystemRun

TimeLife(DXE)(BDS)'(TSL)

Load

(RT)(AL)Power

on

-----*■

[..Platform

initialization..][....OS

<]Shutdown图1一般认为,统一可扩展固件接口(UEFI)由以下几

个部分组成:(1)

SEC

(Security

Phase)阶段是平台初始化的第

一个阶段,计算机系统加电进入这个阶段。(2)

Pre -EFI

(Pre-EFI

Initialization)负责最初的

CPU,芯片组及存储器的初始化工作,其主要功能是为

DXE准备执行环境。(3)

DXE

(Driver

Execution

Environment)完成大部

分的驱动加载和初始化工作。遍历固件中所有的Driv­er,

当Driver所依赖的资源都满足要求时,调度Driver

到执行队列执行,直到所有的Driver都被加载和执行完

毕,系统完成初始化。(4)

BDS

(Boot

Device

Seletction),启动设备选择,

初始化控制台设备,力卩载执行必要的设备驱动,根据用

户的选择,执行相应的启动项。(5)

TSL

(Transient

System

Load)操作系统装载器,

OS

Loader调用ExitBootService结束启动服务,进入

RunTime

阶段。(6)

RT,

(Run

Time)系统进入RT阶段后,系统的

控制权从UEFI内核转交到OS

Loader手中,UEFI占用

的各种资源被回收到OS

Loader,仅有UEFI运行时服务

保留给OS

Loader和OS使用。随着OS

Loader的执行,

OS最终取得对系统的控制权。(7)

AL

(After

Life),

AL系统灾难恢复期,在RT阶

段,如果系统(硬件或软件)遇到灾难性错误,系统固件

需要提供错误处理和灾难恢复机制,

这种机制运行在阶段。

3

Windows操作系统Windows操作系统是在个人计算机领域内普及度最

高的操作系统。最早的Windows系统是由Microsoft公

司从1983年开始研制,最初的研制目标是在MS

-

DOS作者简介:顾长利(1981-),男,本科,高级工程师,

研究方向:UEFI固件开发。的基础上提供一个多任务的图形用户界面。Windows操

作系统界面友好,窗口制作优美,操作动作易学,多代

系统之间有良好的传承,计算机资源管理效率较高,效

果较好。4

导致

Windows

Abnormal

shutdown

原因Windows

Shutdown程序关机功能具体的步骤是:当

操作系统完成所有对磁盘的写操作后,接着会删除磁盘

缓存,关闭窗口程序,关闭当前运行的程序,并把所有

处于保护模式的驱动程序切换到实模式。导致操作系统

关闭程序出错的主要原因有:(1)

用户使用的应用软件或系统文件被破坏。(2)

应用软件或系统文件被破坏。(3)

电源异常掉电。串行输入/输出接口的看门口遥(4)

BIOS在“高级电源管理”或“高级配置和电

源接口”不合适。UEFI

BIOS的设置与系统硬件不兼容。(5)

硬件损坏或者硬件兼容性问题。5

分析

Windows

Abnormal

Shutdown

的问题Windows历史上的问题比较多:未知原因当机、程

序卡死的例子很多;为了方便工程师分析这些问题,微

软推出了

Memory

Dump的机制:当Windows操作系统

发现程序出现异常而会导致系统崩溃时,Windows会调

用Memory

Dump的机制来形成一个转储文件(*.dmp)

存储到操作系统所在的分区中。微软同时提供了特殊工

具(WinDbg)用来分析这个Dump文件,从而方便工程

师们找到造成程序崩溃的原因。因此在做分析之前,我们首先需要要把Windows

Memory

Dump的功能激活。但因Dump文件会暂用硬盘

的空间,所以操作系统默认是不打开这个功能的。所以

这就需要工程师们自己开启Dump功能,以下是激活该

功能的操作步骤:(1)

桌面单击此电脑,选择属性。(2)

进入属性界面,点击高级系统设置。(3)

在高级界面,点击启动与恢复故障下面的设置

按钮。(4)

进入设置,可以看到一个目录,这个就是存放

Dump文件的路径。5.1应用软件或系统文件被破坏一般出现这种问题时,相关的软件已经不能正常使

软件研发与应用用了;但通常此时操作系统依然可以正常运行。我们可

以通过特殊方法强制操作系统产生Dump文件,然后使

用WinDbg工具分析这个Dump文件,快速找到造成问

题的原因。下面提供一种使用USB键盘热键来强制操

作系统生成

Dump

文件的方法:(1)

进入操作系统的注册表(开始->运行->输入:

Regedit,回车)。(2)

导航到以下位置

HKEY_LOCAL_MACHINESYS-

TEMCurrentControlSetServiceskbdhidParameters0(3)

右击右侧窗格并创建新的DWORD键CrashOn-

CtrlScroll,并将其赋值为1遥(4)

重启系统,尝试触发BSOD系统崩溃使用键

盘,按右键和滚动锁两次同时。如果要删除上述功能,只需删除注册表项,野CrashOnCtrlScroll”

并重新启动系统05.2电源异常掉电主板的芯片组在设计之初就有考虑到电源异常掉电

给主板的影响,通常都预留了寄存器来记录主板是否有

掉电情况。如图2所示。PWR_FLR(PF):1

=

Indicates

that

the

trickle

current

(from

the

main

battery

or

trickle

supply)

was

removed

or

failed.141hRW/1C0 =

Indicates

that

the

trickle

current

has

not

failed

si

nce

the

last

time

the bit

re

writes

a

1

to

this

bit

to

clear

it.

This

bit

is

i

the

DSW

well,

and

defaults

to

'1'

based

on

DSW_PWROK

deassertion

(not clearedy

any

type

of

reset).图2软件可以读取这个寄存器来判断此次开机是否存在

电源掉电的情况。UEFI固件也实现了这个功能,给这

个功能命名为After

Power

Loss.这个功能就是用来决定

当电脑非正常断电之后,电流再次恢复时,计算机要处

在什么状态。有3个选项:Power

Off

(当电流恢复时,计算机处在关机状态)Power

On

(当电流恢复时,

计算机处在开机状态)Last

state

(最近一次的状态,也就是断电时的状态)

正常情况下,一般设定为Last

state,即保持最近一

次的状态,

也就是断电时的状态0

如果是在操作系统正

在使用的时候,出现掉电,下次电流恢复时,电脑自动

开机。如果上次电脑出在关机状态下,出现掉电,下次

电流恢复时,

电脑处在关机状态下0具体时间的代码实现是://

If

set

the

After

Power

Loss

function

to

Power

off

If(erLoss

== POWER_OFF){SreeaeBBHI*>SBSI3EIEIEIEIffiEBBI!IBBBeaeBI3BigBlslBBai3IIBBEISBHI3glBBIIIIIIBSSI3aBIIIglEISa3BEIQISB>E实用第一f智慧密集//

BIOS

clears

this

bit

by

writing

a

T

to

d32

(PchPwrmBase

+

GEN_PMCON_A,

~BIT14);//

1

=

System

will

return

to

the

S5

state.

In

the

S5

state,

power

button//

can

wake

the

system

up.

This

bit

is

in

the

RTC

8

(PchPwrmBase

+

GEN_PMCON_A,

AF-

TERG3_EN);}现在要检测是否Abnormal

Shutdown是否异常掉电。

就需要把After

Power Loss的功能设成Power

Off,即当

电流恢复时,计算机处在关机状态。这样在测试的时候

如果发现电脑处于关机状态,可以知道电脑出现异常掉

电。沿着异常掉电的可能性分析,问题的原因很快就能

找到05.3串行输入输出芯片看门口传统的输出输入芯片中都会集成软硬件结合的看

门狗功能,又称为看门狗定时器,用以监控系统运行

的状态。通常是在软件稳定运行到特定的程序后给狗

喂食,如果看门狗在一定时间内没有收到软件的喂狗

信号,系统将被视为失败,进入中断处理程序或强制

系统复位。系统通电后,可以根据不同的工作模式选择

开启看门狗的时间0

如果看门狗被启用,

计数器将开始

计数。如果没有在规定的时间内及时喂食,看门狗就会

超时0为了分析Abnormal

Shutdown是否由看门口造成的,

需要关掉看门口的功能。同时通过读取特殊的寄存器来

判断看门口功能是否被触发。具体程序如下:VOID

OemClearWatchDog()

{UINT8

Temp0,

Data8

=

0;//

Enter

configuration

Value

(0x0A,0x01,&Temp0);Temp0

|=BIT7;OemSetValue

(0x0A,0x01,Temp0)OemSetValue

(0x07,

0x56,

&Data8);//

Disable

WDTData8

&=

~BIT3;OemSetValue

(0x07,

0x56,

Data8);//

Exit

the

Nuvoton

SIO

Platform

Parameter

Reg

Value

(0x0A,0x07,0xff);}5.4

BIOS在“高级电源管理”或“高级配置和电源接

口”不合适高级配置和电源接口

(ACPI)为设备发现、操作系

统配置和电源管理(OSPM)等功能提供了标准化、灵活

的机制。通过与系统固件、操作系统和外围设备的通

信,ACPI标准提高了系统电源分布和保护。ACPI的两

个主要角色包括设备配置和电源管理o在设备配置的

角色下,ACPI可以让操作系统知道它包含什么硬件,

包括不容易检测到的设备o至于电源管理的角色,一

旦操作系统运行,有一些功能可以将机器转移到低功耗

状态0根据ACPI规范,UEFI固件需要提供当前电脑的

相应硬件信息及控制接口给OSPM来管理外围设备。并

且ACPI明确定义电源管理的相关接口及系统调用的先

后顺序。这样可以在相应的接口中加入特殊的标志位来

区分对应的接口是否跑到了确定造成Abnormal

Shut­down

的原因在哪两个接口之前。5.5

UEFI

BIOS的设置与系统硬件不兼容为了兼容竟可能多的设备,UEFI固件在开发的时

候有预留很多选项供用户使用0

但这些设定需要用户比

较熟悉UEFI固件才能使用。有些DIY用户可能在使用

过程中更改UEFI

BIOS的设置,从而导致电脑无法正

常使用。为了避免出现该问题,UEFI固件提供了一个

“恢复出厂设置”的功能。可以通过如下方法来激活这

个功能:第一步,在启动电脑时不间断按住Delete键,

笔记本的用户可以按F2键,通过此方法进入UEFI

BIOS设置界面。第二步,进入页面后,会看到一个对

话框,此时选择Exit菜单下的Load

Setup

Defaults并按

回车键,弹出一个Yes

or

No的对话框,选择Yes之后,

再次按回车键。第三步:完成前面几步操作后,按F10

键,选择Yes后按回车键,此时系统就会重新启动,

BIOS主板则成功恢复出厂设置。为了避免

Abnormal

Shutdown

是由

UEFI

BIOS

的设

置造成,

可以在分析问题之前,

把测试机通过上述方法

恢复出厂设置05.6硬件损坏或者硬件兼容性问题硬件兼容性是指硬件之间或是软硬件组合系统之间

的相互协调工作的程度。几种不同的电脑部件,如CPU、

内存、显示卡等,如果在工作时不能够相互配合稳定地

工作,

就会存在兼容性问题0

造成硬件兼容性的问题可 SOFTWARE

DEVELOPMENT

&

APPLICATION能的原因有:硬件的异常导致的内存分配的改变;声卡

网卡等pci设备的异常,显卡的丢失或者异常。通常工程师是通过在系统下查看当前设备的使用是

否异常,设备使用的资源是否异常及中断是否冲突几个

方面来分析这类问题。但这种分析方法有个问题:只能

看到问题出现后的硬件信息,但很难知道是什么原因导

致的异常。提出一种方法即在UEFI启动过程中,把相关硬件的

数据写到硬盘文件中,通过在系统下对比文件的大小来

判断是否出现异常;或者当硬件出现异常的时候,对比

硬盘中这次保存的数据与正常启动的数据是否有异常及

异常出现在哪里,从而找到问题的所在。UEFI固件中读

写文件的大概流程:利用UEFI固件的Boot

Service的

LocateHandleBuffer,查询所有

EFI_SIMPLE_FILE_SYS-

TEM_PROTOCOL

(FileSystemIo)的

EFI_HANDLE,通

过HandleProtocol来获得所有有效的FileSystemIo,通过

EFI_SIMPLE_FILE_SYSTEM_PROTOCOL

OpenVolume

获得FAT文件系统的跟目录句柄;再使用目录句柄

(EFI_FILE_PROTOCOL)

Filelo

Open

函数用来打开一

个文件,然后把需要写的数据通过Write函数写到打开

的文件中,使用Close函数关闭文件。5.6.1内存分配改变硬件的异常,通常会导致系统启动过程中,内存分

配的改变;所以可以通过对比主板每次启动时,内存的

使用情况,来分析硬件的异常。具体的方法是:调用

UEFI

固件的

Boot

Service

GetMemoryMap()

获得当前

内存映射的副本的信息,具体函数如下gBS->GetMem-

oryMap

(

&MemMapSize,MemMap,

&MapKey,

&Descrip-

torSize,

&DescriptorVersion);这个函数返回当前内存映

射的副本,是内存描述符数组,每个描述一个连续的内

存块。包括这块内存块的类型、起始的物理地址,块的

大小及属性等信息。通过上述UEFI固件操作文件的方法,把内存分配

的信息保存到文件中,在系统下对比每次启动产生的内

存分配信息的文件,来查寻是否存在内存分配异常的存

在。然后对比正常启动的内存分配信息来看到底是哪一

块内存被改动了。查询UEFI固件代码,找出是哪段程

序申请了这块内存,为什么会申请失败?该段内存是哪

个设备需要的。找到导致这些问题的根本原因,问题的

解决方案自然水到渠成。软件研发与应用5.6.2PCI设备的异常分析PCI设备工作的异常的方法是,通过UEFI固

Boot

Service

LocateHandleBuffer,

E

FI_PCI_IO_PROTOCOL(PciIoProtocol)的句柄从而获得所

有PCI总线的PCI

I/O

Protocol。遍历这些总线,调用PCI

I/O

Protocol

GetLocation()函数返回支持该协议的PCI设

备的位置,如果位置信息有误,退出这个设备的遍历;

继续遍历其他设备。如果位置信息是正确,调用PCII/O

Protocol

PCI

Read()

函数,

读取该

PCI

设备的前

256字节的配置空间,并把位置信息及该配置空间的数

据写入文件中。PCI设备的位置和配置空间的数据能真

实反映硬件设备资源情况,系统工程师可以通过对比文

件及参考PCI规范很容易查到出问题的寄存器,从而快

速定位出问题设备。再进一步分析该设备运行逻辑,从

而找出造成问题的原因,最终找到解决问题方法。5.6.3显卡与主板不兼容每个显示器都有一个

EDID,

Extended

display

identi­fication

data,中文名称扩展显示器识别数据,是VESA

在制定DDC显示器数据通道通信协议时,制定的有关

显示器识别数据的标准。EDID存储在显示器中的DDC

存储器中,当电脑主机与显示器连接后,电脑主机会通

DDC

通道读取显示器

DDC

存储器中的存储的

EDID。可以通过检测每次启动过程EDID是否存在,来

判断显卡是否存在;

通过对比

EDID

的数据来判断显

卡的枚举是否正常遥具体的方法是:查询UEFI固件

Boot

Service

EFI_EDID_DISCOVERED_PROTOCOL,

如果没有,表示系统没有接显示器;如果有,把该显示

器的

EDID

(Extended

display

identification

data)

保存到

文件中。同时每个显示器支持解析度都是固定的,

可以通过

对比每次启动的解析度来判断显卡工作是否正常。具体的方法是:

查询

EFI_GRAPHICS_OUTPUT_PR

OTOCOL

(GraphicsOutput),调用

EFI_GRAPHICS_OUTP

UT_PROTOCOL_MODE、

(Mode)

EFI_GRAPHICS_

OUTPUT_MODE_INFORMATION

(Info)

获得所有解析度

的数据(X,

Y维度上以像素为单位的视频屏幕的大),

并把相关数据保存到文件中。6

结语介绍了造成的Windows

Abnormal

Shutdown的可能

(下转第20页)SreeaeBBHI*>SBSI3EIEIEIEIffiEBBI!IBBBeaeBI3BigBlslBBai3IIBBEISBHI3glBBIIIIIIBSSI3aBIIIglEISa3BEIQISB>E实用第一f智慧密集装修方案拿不定主意时,系统将会通过Dijkstra自动为

其推荐几套最佳方案,供用户挑选,通过用户的喜好将

日益提升,从硬件中心变成为软件中心,智能、环保

(电动)、互联等已经成为装修电子技术的发展趋势。集

合了车联网、传感器、智能终端、无人用户的新一代装

最佳方案推荐给用户。满足目前用户的消费心理和功能

需求。语音唤醒功能,增加人机交互性。用户通过说出相

应的语音指令,装修系统对其进入语音识别。识别成功

修电子技术的装修在彻底改变人们的生活。产品机会。国家的相关政策和社会舆论催生了

“互

联网+智能网联”的诞生,此类产品会受到社会的欢迎。

3.4威胁(1)

市面上已有类似产品。市面上已经有了土巴兔

后将进入指令状态,用户便能通过语音命令进行相应的

装修检测,云端接收数据后将会进行相应指标的情况语

音播报,界面交互极其便捷。ADL能将用户的装修数据存储在云端,让用户使用

APP、齐家APP、住小帮APP这些相对成熟的APP,如

果产品设计未能有突破点则很难打入市场。(2)

自身在管理过程中产生的矛盾。得更加放心。并且,系统利用大数据对将用户的装修数

据与云端数据进行比对,得出的装修报告和装修建议极

4结语具说服力,更好地保障用户的装修安全。系统也将通过微信公众号会日常推送智能网联装修

根据对于市场的调查分析及现存的一些问题,有了

基于室内装饰的构思。ADL运用大数据分析、云计算、

信息识别等技术,基于“ADL”

APP为用户提供了自由

用户伙伴系统的相关文章,增强人们用户安全的意识,

提高用户安全方面的知识。3.2劣势设计的空间,实现了将平面图纸立体化的技术,可以依

照自己的意愿设计出只属于自己的装修风格。前端以手

当前智能装修技术尚未得到较深的研究,消费者

对于新产品的接受能力时间周期较长,在短时间内很

难实现用户量的大幅度提升,存在预期收益不太明显

机APP作为主要开发平台,后端通过Tomcat进行搭建,

利用Android技术进行开发,数据库采用轻量级的

MySQL数据库进行数据存储,再通过蓝牙,无线网的

的风险。连接方式实现VR眼镜的交互功能,实现更加便捷化、

智能化、信息化的新型自主装修平台。参考文献[1]谢亚力.Android开发中使用SQLite数据库[J].市场没有什么技术上的难点,并且现在正处于上升

期,许多潜在商家可能会进入市场。3.3机会需求机会。行业高速发展--智能、环保、互联,

移动开发,2010,

(8):

8.-必-W■仝-W■仝-W—4A

4A亠

纯-U

纯-U

g-U

4-U

4-U随着人们对装修安全性、舒适性、智能性等方面的需求

-U

-必-W■仝-W■仝-W■仝-W—4A

如-3

纯-U

-4亠

4-U

-必-U

-必-U

(上接第15页)参考文献[1]

陈竹云,叶雯.计算机信息处理技术在学校办公自

的发展,提高了业务效率,加强了企业部门之间的沟通

与交流。计算机处理技术广泛用于办公室自动化,它使

动化系统中的应用[J].电脑知识与技术,2018,

14

(35)

:

76-77+82.[2]

孟进.计算机信息处理技术在办公自动化中的应用

企业能够构建全面的信息管理系统并实现企业内部的科

学管理。在发展过程中,必须充分利用新技术,并结合

新技术进行发展。(上接第13页)原因,及如何基于UEFI固件来分析导致原因的逻辑及

初探[J].电脑迷,2018,

(05)

:

23.参考文献[1]

ACPI

Specification

Version

6.3

(released

January

2019).[2]

UEFI

和ecification

Version

2.8

(released

March

2019).部分代码。工程师可以通过对比UEFI固件在电脑启动

的过程中保存到文件中的硬件信息的差异,找出造成这

⑶吴伟明,吴辉,苏庆.UEFI固件存储系统分析[J].

计算机工程与设计,

2017,

04.些问题的设备,最终找到解决这些问题的方法。