当前位置: 首页 > news >正文

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.jsqmd.com/news/258475/

相关文章:

  • 2026横梁货架优选集:实力厂商排行榜,仓库货架/横梁货架/仓储货架/中型货架/重型货架/层板货架,横梁货架供应商怎么选 - 品牌推荐师
  • 基于Simulink的双模式MPPT(快速追踪+稳态优化)仿真
  • 踩下油门时混合动力车的能量分配就像打扑克——既要看当前手牌,也得算后面几步。模型预测控制(MPC)在这局游戏里当起了军师,今天咱们就拆解这背后的骚操作
  • 深圳AI智能办公鼠标服务选择哪家好,这几家值得关注 - 工业品牌热点
  • 学Simulink--基础储能管理场景实例:基于Simulink的储能参与黑启动过程控制仿真
  • 消失的“AI”:当大模型不再是新闻,我们该如何保卫“人”的价值?
  • 告别盲目选购!2026年儿童洗发水九大品牌排行榜:分龄设计小金盾认证,公认好用 - 资讯焦点
  • 单北斗GNSS位移监测技术在变形监测中的应用与发展
  • 身体乳什么牌子好?2026超级补水止痒润肤效果特别好的身体乳推荐,高效多效保湿 - 资讯焦点
  • 去螨虫产品哪个品牌最有效?2026厉害推荐榜单,效果超强,家庭必备! - 资讯焦点
  • 2025年口碑最佳光纤熔接机品牌排行榜,电子对抗设备/无线信号测量仪表/光时域反射仪/无线电综合测试测试仪/光通信测量仪表光纤熔接机品牌推荐 - 品牌推荐师
  • 2026年四川口碑好的木方,辐射松木方,南方松木方厂家行业热门推荐 - 品牌鉴赏师
  • 【开题答辩全过程】以 基于Java的智慧园林管理系统为例,包含答辩的问题和答案
  • 给我的新网站 md-to.com 测试了一下安全评分
  • 2026年成都优秀的桥梁板,桥梁模版,模板厂家品牌推荐清单 - 品牌鉴赏师
  • 详细介绍:谷歌云AI 时代的算力革命:CPU、GPU 到 TPU 的架构与定位解析
  • 【测试人生】一套灵活的变更风险观测策略匹配机制设计
  • 轴承代理来图定制哪家好,伯陆商城口碑出众 - 工业品牌热点
  • 支付宝立减金回收天花板:15 秒到账的隐藏玩法 - 可可收
  • 2026年度GEO服务商加盟代理权威推荐:基于百家客户真实反馈效果排行榜 - 品牌推荐
  • 【极客日常】快速上手复杂后端项目开发的经验
  • 导入自己的购物评价记录(商品名,评分,评价内容),统计好评率(5分为好评),输出差评商品整改建议。
  • 10万并发IM系统架构设计方案
  • 第1章:快速入门SpringBoot
  • 基于SpringBoot的美发管理系统毕业设计
  • 实用指南:物联网实训室系列产品介绍
  • 学霸同款2026 AI论文软件TOP10:继续教育必备测评
  • 权威数据发布:2026年GEO服务商加盟代理市场深度调研分析与靠谱推荐清单 - 品牌推荐
  • 我居然才知道!微信立减金不用花,回收能赚这么多 - 可可收
  • 2026年靠谱的全自动抛光机,打磨机器人抛光去毛刺,门执手自动抛光机厂家综合实力参考 - 品牌鉴赏师