ACPI!ACPIBuildProcessGenericComplete函数的作用是摘下当前处理的节点PCI0后ACPI!AcpiBuildRunMethodList剩9个节点

ACPI!ACPIBuildProcessGenericComplete函数的作用是摘下当前处理的节点PCI0后ACPI!AcpiBuildRunMethodList剩9个节点

NTSTATUS
ACPIBuildProcessGenericComplete(
IN PACPI_BUILD_REQUEST BuildRequest
)
{

//
// Remove the entry from the current list. We might not need to be
// hodling the lock to do this, but it doesn't pay to not do it while
// we can
//
RemoveEntryList( &(BuildRequest->ListEntry) );


参考:
0: kd> kc
#
00 ACPI!ACPIBuildProcessRunMethodPhaseRecurse
01 ACPI!ACPIBuildProcessGenericList
02 ACPI!ACPIBuildDeviceDpc
03 nt!KiRetireDpcList
04 nt!KiDispatchInterrupt
WARNING: Frame IP not in any known module. Following frames may be wrong.
05 0x0
0: kd> dv
BuildRequest = 0x89906d70
childExtension = 0x89906d70
deviceExtension = 0x00000008
eled = struct EXTENSIONLIST_ENUMDATA
0: kd> dx -r1 ((ACPI!_ACPI_BUILD_REQUEST *)0x89906d70)
((ACPI!_ACPI_BUILD_REQUEST *)0x89906d70) : 0x89906d70 [Type: _ACPI_BUILD_REQUEST *]
[+0x000] ListEntry [Type: _LIST_ENTRY]
[+0x008] Signature : 0x5f534750 [Type: unsigned long]
[+0x00c] Flags : 0xc [Type: unsigned long]
[+0x00c] UFlags [Type: __unnamed]
[+0x010] WorkDone : 0x1 [Type: unsigned long]
[+0x014] CurrentWorkDone : 0x6 [Type: unsigned long]
[+0x018] NextWorkDone : 0x2 [Type: unsigned long]
[+0x01c] BuildContext : 0x899c0d58 [Type: void *]
[+0x020] Status : 0 [Type: long]
[+0x024] CurrentObject : 0x0 [Type: _NSObj *]
[+0x028] CallBack : 0x0 [Type: void (*)(void *,void *,long)]
[+0x02c] CallBackContext : 0x0 [Type: void *]
[+0x030] DeviceRequest [Type: __unnamed]
[+0x030] RunRequest [Type: __unnamed]
[+0x030] SynchronizeRequest [Type: __unnamed]
[+0x044] Integer : 0xf [Type: unsigned long]
[+0x044] String : 0xf : Unable to read memory at Address 0xf [Type: unsigned char *]
[+0x044] TargetListEntry : 0xf [Type: _LIST_ENTRY *]

0: kd> dt acpi!_DEVICE_EXTENSION 0x899c0d58
+0x000 Flags : 0x00400000`00000008

+0x12c AcpiObject : 0x899affac _NSObj
+0x130 DeviceObject : (null)
+0x134 TargetDeviceObject : (null)
+0x138 PhysicalDeviceObject : (null)
+0x13c ParentExtension : 0x89981a18 _DEVICE_EXTENSION
+0x140 ChildDeviceList : _LIST_ENTRY [ 0x899c0d38 - 0x8990efe8 ]
+0x148 SiblingDeviceList : _LIST_ENTRY [ 0x899ae150 - 0x89981b58 ]
+0x150 EjectDeviceHead : _LIST_ENTRY [ 0x899c0ea8 - 0x899c0ea8 ]
+0x158 EjectDeviceList : _LIST_ENTRY [ 0x899c0eb0 - 0x899c0eb0 ]
0: kd> db 0x899affac
899affac 4c ff 9a 89 ac 40 9b 89-f0 f0 9a 89 24 00 9b 89 L....@......$...
899affbc 50 43 49 30 30 f3 9a 89-4c ff 9a 89 00 00 06 00 PCI00...L.......
899affcc 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
899affdc 58 0d 9c 89 00 00 00 00-48 4f 52 47 34 00 00 00 X.......HORG4...
899affec 00 f0 9a 89 50 00 00 00-30 00 00 00 02 00 00 00 ....P...0.......
899afffc 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
899b000c 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
899b001c 44 00 00 00 00 f0 9a 89-64 a0 91 89 68 00 9b 89 D.......d...h...

参考:

0: kd> gu
Breakpoint 10 hit
eax=00000000 ebx=00000000 ecx=89906d80 edx=00000001 esi=89906d70 edi=80b019f4
eip=f73fb840 esp=f789ef64 ebp=f789ef84 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!ACPIBuildProcessGenericComplete:
f73fb840 55 push ebp
0: kd> gu
Breakpoint 6 hit
eax=00000000 ebx=00000000 ecx=00020001 edx=00010000 esi=89906d70 edi=80b019f4
eip=f73fb914 esp=f789ef6c ebp=f789ef84 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+0x50:
f73fb914 85db test ebx,ebx


0: kd> x ACPI!AcpiBuildRunMethodList
f743b870 ACPI!AcpiBuildRunMethodList = struct _LIST_ENTRY [ 0x89906d20 - 0x89906aa0 ]
0: kd> dx -r1 (*((ACPI!_LIST_ENTRY *)0xf743b870))
(*((ACPI!_LIST_ENTRY *)0xf743b870)) [Type: _LIST_ENTRY]
[+0x000] Flink : 0x89906d20 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906aa0 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906d20)
((ACPI!_LIST_ENTRY *)0x89906d20) : 0x89906d20 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906cd0 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0xf743b870 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906cd0)
((ACPI!_LIST_ENTRY *)0x89906cd0) : 0x89906cd0 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906c80 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906d20 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906c80)
((ACPI!_LIST_ENTRY *)0x89906c80) : 0x89906c80 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906c30 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906cd0 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906c30)
((ACPI!_LIST_ENTRY *)0x89906c30) : 0x89906c30 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906be0 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906c80 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906be0)
((ACPI!_LIST_ENTRY *)0x89906be0) : 0x89906be0 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906b90 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906c30 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906b90)
((ACPI!_LIST_ENTRY *)0x89906b90) : 0x89906b90 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906b40 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906be0 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906b40)
((ACPI!_LIST_ENTRY *)0x89906b40) : 0x89906b40 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906af0 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906b90 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906af0)
((ACPI!_LIST_ENTRY *)0x89906af0) : 0x89906af0 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0x89906aa0 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906b40 [Type: _LIST_ENTRY *]
0: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x89906aa0)
((ACPI!_LIST_ENTRY *)0x89906aa0) : 0x89906aa0 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0xf743b870 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x89906af0 [Type: _LIST_ENTRY *]

第二部分:

//
// If we have completed the request, then we should look at the
// at the next request, otherwise, we need to look at the current
// request again
if (workDone == WORK_DONE_COMPLETE|| workDone == WORK_DONE_FAILURE) {

currentEntry = tempEntry;

}

把下一个节点赋值给currentEntry,继续处理下一个节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1173837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026横梁货架优选集:实力厂商排行榜,仓库货架/横梁货架/仓储货架/中型货架/重型货架/层板货架,横梁货架供应商怎么选 - 品牌推荐师

行业背景:横梁货架市场升级,技术驱动成关键 随着制造业智能化转型加速,仓储物流设备需求从“基础存储”向“高效管理”跃迁。横梁货架作为高密度存储的核心载体,其承重性能、空间利用率及定制化能力直接影响仓库运…

踩下油门时混合动力车的能量分配就像打扑克——既要看当前手牌,也得算后面几步。模型预测控制(MPC)在这局游戏里当起了军师,今天咱们就拆解这背后的骚操作

模型预测控制(MPC)在混合动力汽车能量管理策略开发上的运用。 [1]利用车速预测模型(BP或者RBF神经网络,预测模型资料也有发在其他链接)根据预测的信息对车辆进行优化控制,可以对混动汽车的能量管理具有一定…

基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真

目录 手把手教你学Simulink--基础MPPT控制场景实例:基于Simulink的双模式MPPT(快速追踪稳态优化)仿真 一、引言:为什么需要双模式MPPT?——光伏系统“效率与响应”的平衡术 二、核心原理:双模式MPPT的“切…

深圳AI智能办公鼠标服务选择哪家好,这几家值得关注 - 工业品牌热点

2026年AI工具普及浪潮下,AI智能办公鼠标已成为企业降本增效、个人提升生产力的核心入口级设备。无论是企业职员的会议记录、PPT制作需求,还是营销人员的公私域内容产出、多平台发布痛点,一款专业的AI办公鼠标能从根…

学Simulink--基础储能管理场景实例:基于Simulink的储能参与黑启动过程控制仿真

目录 手把手教你学Simulink 一、引言:什么是“黑启动”?为什么需要储能? 二、黑启动典型流程 三、系统整体架构(Simulink 模型) 控制模式切换: 四、Simulink 建模全流程 步骤1:储能与变流器建模 步骤2:V/f 控制器设计(核心) A. 电压外环(PI 控制) B. 电流…

消失的“AI”:当大模型不再是新闻,我们该如何保卫“人”的价值?

如果说 2023 年是 AI 的“奇迹年”,那么 2024 年正在变成 AI 的“消失年”。这里的“消失”并非指技术退场,而是指它正像电力、Wi-Fi 或自来水一样,悄无声息地融入背景,成为一种基础设施。当“AI 驱动”不再是一个值得炫耀的卖点&…

告别盲目选购!2026年儿童洗发水九大品牌排行榜:分龄设计小金盾认证,公认好用 - 资讯焦点

亲子洗护时光本应温馨,却常因孩子头皮问题变得棘手:婴幼儿头皮娇嫩易受刺激,洗头时哭闹不止;学龄儿童运动后头皮多汗黏腻,发丝打结难梳理;青春期孩子则面临油头、头屑等困扰。一款能适配全年龄段、兼具安全性与实…

单北斗GNSS位移监测技术在变形监测中的应用与发展

本文将探讨单北斗GNSS位移监测技术在变形监测中的广泛应用和发展潜力。单北斗变形监测系统的安装与维护流程将被详细解析,以期帮助用户更好地理解这一技术的实践操作。同时,将分析单北斗GNSS设备的价格构成和市场动态,为用户在采购决策时提供…

身体乳什么牌子好?2026超级补水止痒润肤效果特别好的身体乳推荐,高效多效保湿 - 资讯焦点

对于追求高效护肤的人来说,选身体乳就一个要求:简单高效!不用反复补涂、不用搭配其他产品,一瓶就能搞定保湿需求才是王道~ 本次测评从2026年热门保湿身体乳中,筛选出10款“高效实用+多效合一”的宝藏款,要么长效…

去螨虫产品哪个品牌最有效?2026厉害推荐榜单,效果超强,家庭必备! - 资讯焦点

还在为床垫、沙发的螨虫清理犯愁?除螨不彻底反复滋生、喷雾有异味呛鼻、高档面料一喷就受损……2026年别再盲目跟风踩坑!结合中国疾控中心环境所与中国家居协会联合发布的《家庭螨虫防控白皮书》,再加上联合800个不…

2025年口碑最佳光纤熔接机品牌排行榜,电子对抗设备/无线信号测量仪表/光时域反射仪/无线电综合测试测试仪/光通信测量仪表光纤熔接机品牌推荐 - 品牌推荐师

随着5G网络深度覆盖、千兆光网加速普及以及“东数西算”等国家战略工程的推进,光纤网络作为信息通信的“大动脉”,其建设与维护需求持续攀升。光纤熔接机作为光缆施工与运维的核心工具,其性能的稳定性、熔接的精准度…

【开题答辩全过程】以 基于Java的智慧园林管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

2026年四川口碑好的木方,辐射松木方,南方松木方厂家行业热门推荐 - 品牌鉴赏师

引言在2026年的四川木方市场,各类建筑木方如白松木方、新西兰松木方、樟子松木方、桥梁木方、工程木方、落叶松木方、花旗松木方、辐射松木方、南方松木方等需求旺盛。为了给消费者提供真实、公正、客观的木方厂家推荐…

给我的新网站 md-to.com 测试了一下安全评分

给我的新网站 md-to.com 测试了一下安全评分给我的新网站 md-to.com 测试了一下安全评分,目前是 61 分,刚刚及格。

2026年成都优秀的桥梁板,桥梁模版,模板厂家品牌推荐清单 - 品牌鉴赏师

引言在建筑行业蓬勃发展的今天,模板作为建筑施工中不可或缺的重要工具,其质量和性能直接影响着建筑工程的质量、进度和成本。为了帮助广大建筑从业者和相关企业更科学、准确地选择合适的模板厂家,我们参考了国内建筑…

详细介绍:谷歌云AI 时代的算力革命:CPU、GPU 到 TPU 的架构与定位解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【测试人生】一套灵活的变更风险观测策略匹配机制设计

近期笔者在投入变更风险防控开放平台的额外功能开发,目的是希望设计一套更加灵活的变更风险观测策略匹配机制,能够在满足面向任意变更场景应用观测策略的同时,尽可能保证产品体验,让用户清晰地了解到自己配置的什么策略能够在什么…

轴承代理来图定制哪家好,伯陆商城口碑出众 - 工业品牌热点

在工业制造的精密运转中,轴承作为核心传动部件,其品质与供应效率直接影响设备稳定性与企业生产节奏。面对市场上鱼龙混杂的轴承供应商,如何找到兼具品牌授权资质、定制能力与全链路服务的合作伙伴?以下结合行业需求…

【极客日常】快速上手复杂后端项目开发的经验

去年年底一段时间,笔者参与了组织内部智能化平台项目研发攻坚,虽然主攻平台工程部分,但多少也了解了下目前AIGC可以应用到的一些业务场景,以及技术实践、项目管理的一些事情。在先前的文章里头,有浅要描述下AIGCWeb类项…

2026年度GEO服务商加盟代理权威推荐:基于百家客户真实反馈效果排行榜 - 品牌推荐

2026年,生成式AI搜索生态已进入规模化应用与精细化运营阶段,企业对于GEO服务的需求,正从单一的品牌曝光优化,向构建可持续的本地化获客与渠道拓展能力演进。GEO服务商的加盟代理模式,因其低门槛、强赋能与可复制的…