news 2026/4/18 8:44:58

ACPIBuildProcessRunMethodPhaseCheckBridge函数根据deviceExtension->Flags设置Device (PE83)下一个状态为WORK_DONE_CO

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ACPIBuildProcessRunMethodPhaseCheckBridge函数根据deviceExtension->Flags设置Device (PE83)下一个状态为WORK_DONE_CO

ACPIBuildProcessRunMethodPhaseCheckBridge函数根据deviceExtension->Flags设置Device (PE83)下一个状态为WORK_DONE_COMPLETE

不会运行ACPI!ACPIBuildProcessRunMethodPhaseRecurse检查子节点了

dsdt.dsl:14398: Device (PE83)
dsdt.dsl:14447: Device (S1F0)

因为Device (PE83)父节点本身就不存在,就不会处理子节点了。


1: kd> g
Breakpoint 5 hit
eax=00000004 ebx=00000004 ecx=899058e8 edx=00000001 esi=899058d8 edi=80b019f4
eip=f73fb911 esp=f78aef68 ebp=f78aef84 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
ACPI!ACPIBuildProcessGenericList+0x4d:
f73fb911 ff55f4 call dword ptr [ebp-0Ch] ss:0010:f78aef78={ACPI!ACPIBuildProcessRunMethodPhaseCheckBridge (f73fbb44)}
1: kd> dt ACPI_BUILD_REQUEST 0x899058d8
+0x000 ListEntry : _LIST_ENTRY [ 0x89905888 - 0xf743b870 ]
+0x008 Signature : 0x5f534750
+0x00c Flags : 0xc
+0x00c UFlags : __unnamed
+0x010 WorkDone : 1
+0x014 CurrentWorkDone : 4
+0x018 NextWorkDone : 2
+0x01c BuildContext : 0x89925840 Void
+0x020 Status : 0n0
+0x024 CurrentObject : (null)
+0x028 CallBack : (null)
+0x02c CallBackContext : (null)
+0x030 DeviceRequest : __unnamed
+0x030 RunRequest : __unnamed
+0x030 SynchronizeRequest : __unnamed
+0x044 Integer : 0
+0x044 String : (null)
+0x044 TargetListEntry : (null)

1: kd> dt acpi!_DEVICE_EXTENSION 0x89925840
+0x000 Flags : 0x00800000`2000000a
+0x000 UFlags : __unnamed
+0x008 Signature : 0x5f534750
+0x00c DebugFlags : 0
+0x010 DispatchTable : (null)
+0x014 WorkContext : WORK_QUEUE_CONTEXT
+0x014 Fdo : _FDO_DEVICE_EXTENSION
+0x014 Filter : _FILTER_DEVICE_EXTENSION
+0x014 Pdo : _PDO_DEVICE_EXTENSION
+0x058 WorkQueue : EXTENSION_WORKER
+0x058 Button : BUTTON_EXTENSION
+0x058 Thermal : THERMAL_EXTENSION
+0x058 LinkNode : LINK_NODE_EXTENSION
+0x058 Dock : DOCK_EXTENSION
+0x058 Processor : _PROCESSOR_DEVICE_EXTENSION
+0x088 DeviceState : 0 ( Stopped )
+0x08c PreviousState : 0 ( Stopped )
+0x090 PowerInfo : _ACPI_POWER_INFO
+0x10c DeviceID : (null)
+0x10c Address : 0
+0x110 InstanceID : (null)
+0x114 ResourceList : (null)
+0x118 PnpResourceList : (null)
+0x11c OutstandingIrpCount : 0n1
+0x120 ReferenceCount : 0n5
+0x124 HibernatePathCount : 0n0
+0x128 RemoveEvent : (null)
+0x12c AcpiObject : 0x89934554 _NSObj
+0x130 DeviceObject : (null)
+0x134 TargetDeviceObject : (null)
+0x138 PhysicalDeviceObject : (null)
+0x13c ParentExtension : 0x899c0d58 _DEVICE_EXTENSION
+0x140 ChildDeviceList : _LIST_ENTRY [ 0x89925758 - 0x89925758 ]
+0x148 SiblingDeviceList : _LIST_ENTRY [ 0x89925558 - 0x89925db8 ]
+0x150 EjectDeviceHead : _LIST_ENTRY [ 0x89925990 - 0x89925990 ]
+0x158 EjectDeviceList : _LIST_ENTRY [ 0x89925998 - 0x89925998 ]
1: kd> db 0x89934554
89934554 8c 3c 93 89 1c 4e 93 89-ac ff 9a 89 98 45 93 89 .<...N.......E..
89934564 50 45 38 33 30 f3 9a 89-10 45 93 89 00 00 06 00 PE830....E......


NTSTATUS
ACPIBuildProcessRunMethodPhaseCheckBridge(
IN PACPI_BUILD_REQUEST BuildRequest
)
/*++

Routine Description:

This routine determines if the current object is present or not

Arguments:

BuildRequest - The request that we are processing

Return Value:

NTSTATUS

--*/
{
NTSTATUS status = STATUS_SUCCESS;
PDEVICE_EXTENSION deviceExtension = (PDEVICE_EXTENSION) BuildRequest->BuildContext;

//
// Check the flags to see if we need to check the result of the device
// presence test
//
if (BuildRequest->RunRequest.Flags & RUN_REQUEST_CHECK_STATUS) {

//
// Is the device present?
//
if ( (deviceExtension->Flags & DEV_TYPE_NOT_PRESENT) ) {

BuildRequest->NextWorkDone = WORK_DONE_COMPLETE;
goto ACPIBuildProcessRunMethodPhaseCheckBridgeExit;

}


ACPIBuildProcessRunMethodPhaseCheckBridgeExit:

//
// Common code to handle the result of the 'Get' routine
//
ACPIBuildCompleteMustSucceed(
NULL,
status,
NULL,
BuildRequest
);


//
// Done
//
return status;
}

typedef enum _WORK_DONE {
WORK_DONE_COMPLETE = 0,
WORK_DONE_PENDING,
WORK_DONE_FAILURE,
WORK_DONE_STEP_0,


1: kd> dt ACPI_BUILD_REQUEST 0x899058d8
+0x000 ListEntry : _LIST_ENTRY [ 0x89905888 - 0xf743b870 ]
+0x008 Signature : 0x5f534750
+0x00c Flags : 0xc
+0x00c UFlags : __unnamed
+0x010 WorkDone : 0
+0x014 CurrentWorkDone : 4
+0x018 NextWorkDone : 2
+0x01c BuildContext : 0x89925840 Void
+0x020 Status : 0n0
+0x024 CurrentObject : (null)
+0x028 CallBack : (null)
+0x02c CallBackContext : (null)
+0x030 DeviceRequest : __unnamed
+0x030 RunRequest : __unnamed
+0x030 SynchronizeRequest : __unnamed
+0x044 Integer : 0
+0x044 String : (null)
+0x044 TargetListEntry : (null)

第二部分:

1: kd> x acpi!ACPIBuild*dispatch
f74380d4 ACPI!AcpiBuildPowerResourceDispatch = <function> *[5]
f7438104 ACPI!AcpiBuildThermalZoneDispatch = <function> *[4]
f74380e8 ACPI!AcpiBuildRunMethodDispatch = <function> *[7]
f7438008 ACPI!AcpiBuildDeviceDispatch = <function> *[23]
f74380c4 ACPI!AcpiBuildOperationRegionDispatch = <function> *[4]
1: kd> dx -r1 (*((ACPI!long (*(*)[7])(_ACPI_BUILD_REQUEST *))0xf74380e8))
(*((ACPI!long (*(*)[7])(_ACPI_BUILD_REQUEST *))0xf74380e8)) [Type: long (* [7])(_ACPI_BUILD_REQUEST *)]
[0] : 0xf73fb840 [Type: long (*)(_ACPI_BUILD_REQUEST *)]
[1] : 0x0 [Type: long (*)(_ACPI_BUILD_REQUEST *)]
[2] : 0x0 [Type: long (*)(_ACPI_BUILD_REQUEST *)]
[3] : 0xf73fbbfa [Type: long (*)(_ACPI_BUILD_REQUEST *)]
[4] : 0xf73fbb44 [Type: long (*)(_ACPI_BUILD_REQUEST *)]
[5] : 0xf73fbcf2 [Type: long (*)(_ACPI_BUILD_REQUEST *)]
[6] : 0xf73fd6b0 [Type: long (*)(_ACPI_BUILD_REQUEST *)]
1: kd> dds 0xf74380e8
f74380e8 f73fb840 ACPI!ACPIBuildProcessGenericComplete [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 4654]
f74380ec 00000000
f74380f0 00000000
f74380f4 f73fbbfa ACPI!ACPIBuildProcessRunMethodPhaseCheckSta [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 5683]
f74380f8 f73fbb44 ACPI!ACPIBuildProcessRunMethodPhaseCheckBridge [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 5585]
f74380fc f73fbcf2 ACPI!ACPIBuildProcessRunMethodPhaseRunMethod [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 5864]
f7438100 f73fd6b0 ACPI!ACPIBuildProcessRunMethodPhaseRecurse [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 5773]
f7438104 f73fb840 ACPI!ACPIBuildProcessGenericComplete [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 4654]


typedef enum _WORK_DONE {
WORK_DONE_COMPLETE = 0,
WORK_DONE_PENDING,
WORK_DONE_FAILURE,
WORK_DONE_STEP_0,
WORK_DONE_STEP_1,
WORK_DONE_STEP_2,
WORK_DONE_STEP_3,
WORK_DONE_STEP_4,
WORK_DONE_STEP_5,

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:40:35

Excel字符编码完全指南:LEN、LENB、WIDECHAR、ASC函数深度解析

在处理文本数据时&#xff0c;你是否曾困惑于中英文混合字符的长度计算&#xff1f;本文将揭开Excel字符编码的神秘面纱&#xff0c;带你彻底理解字符与字节的区别。 一、计算机字符编码基础&#xff1a;从位到字符 1. 存储单位&#xff1a;从比特到字节 基础单位定义 比特&…

作者头像 李华
网站建设 2026/4/18 8:07:06

【Hot100|14-LeetCode53. 最大子数组和】

一、问题理解问题描述给定一个整数数组 nums&#xff0c;找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。示例text输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&#xff1a;6 解释&#xff1a;连续子数组 [4…

作者头像 李华
网站建设 2026/4/12 14:26:43

2025年大模型6大范式转变,收藏这份指南掌握AI未来

2025年大模型领域发生六大结构性变革&#xff1a;RLVR成为训练新核心&#xff0c;通过可验证奖励提升模型可靠性&#xff1b;模型呈现"锯齿状智能"&#xff0c;在可验证领域表现卓越&#xff1b;大模型从网页服务迁移至本地计算环境&#xff1b;Vibe Coding编程范式兴…

作者头像 李华
网站建设 2026/4/17 19:15:18

一文搞懂二叉树

一文搞懂二叉树 二叉树是计算机科学中最基础的树形数据结构&#xff0c;也是面试、算法开发、工程应用&#xff08;如表达式解析、搜索索引&#xff09;的核心考点。本文从 概念→分类→存储→遍历→操作→应用 层层递进&#xff0c;结合 C 代码示例&#xff0c;让你彻底吃透二…

作者头像 李华
网站建设 2026/3/14 11:18:12

防劝退指南!网络安全入门全景图:从协议到攻防实战速成

第一章&#xff1a;网络安全的基本概念和术语 网络安全是指保护网络系统、硬件、软件、数据以及用户的隐私和权益&#xff0c;防止其受到未经授权的访问、篡改、窃取或破坏。以下是一些网络安全的基本概念和术语&#xff1a; 漏洞&#xff08;Vulnerability&#xff09;&…

作者头像 李华