ACPI!PciConfigSpaceHandler到ACPI!PciConfigSpaceHandlerWorker到ACPI!GetPciAddress

ACPI!PciConfigSpaceHandler到ACPI!PciConfigSpaceHandlerWorker到ACPI!GetPciAddress

ACPI!GetPciAddress函数较复杂,可以单独研究。


ACPI!PciConfigSpaceHandlerWorker+0xcf
ACPI!PciConfigSpaceHandlerWorker+0xd4


1: kd> kc
#
00 ACPI!PciConfigSpaceHandler
01 ACPI!InternalOpRegionHandler
02 ACPI!WriteCookAccess
03 ACPI!RunContext
04 ACPI!InsertReadyQueue
05 ACPI!RestartCtxtPassive
06 ACPI!ACPIWorker
07 nt!PspSystemThreadStartup
08 nt!KiThreadStartup
1: kd> dv
AccessType = 1
OpRegion = 0x899b0b50
Address = 0xd8
Size = 4
Data = 0x8997dc28
Context = 0
CompletionHandler = 0xf7420914
CompletionContext = 0x8997c0ac


1: kd> t
Breakpoint 48 hit
eax=899affac ebx=00008000 ecx=8997c0ac edx=89987378 esi=899affac edi=899873b4
eip=f740d62c esp=f791ac74 ebp=f791ac8c iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286
ACPI!PciConfigSpaceHandlerWorker:
f740d62c 55 push ebp
1: kd> kc
#
00 ACPI!PciConfigSpaceHandlerWorker
01 ACPI!PciConfigSpaceHandler
02 ACPI!InternalOpRegionHandler
03 ACPI!WriteCookAccess
04 ACPI!RunContext
05 ACPI!InsertReadyQueue
06 ACPI!RestartCtxtPassive
07 ACPI!ACPIWorker
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup
1: kd> dv
AcpiObject = 0x899affac
CompletionStatus = 0n0
Result = 0x00000000
Context = 0x89987378


1: kd> dt PCI_CONFIG_STATE 0x89987378
ACPI!PCI_CONFIG_STATE
+0x000 AccessType : 1
+0x004 OpRegion : 0x899b0b50 _NSObj
+0x008 Address : 0xd8
+0x00c Size : 4
+0x010 Data : 0x8997dc28 -> 0x40e98102
+0x014 Context : 0
+0x018 CompletionHandler : 0xf7420914 Void
+0x01c CompletionContext : 0x8997c0ac Void
+0x020 PciObj : 0x899affac _NSObj
+0x024 ParentObj : (null)
+0x028 CompletionHandlerType : 0
+0x02c Flags : 0
+0x030 RunCompletion : 0n-1
+0x034 Slot : _PCI_SLOT_NUMBER
+0x038 Bus : 0 ''
+0x039 IsPciDeviceResult : 0 ''
1: kd> u 0xf7420914
ACPI!RestartCtxtCallback [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 401]:
f7420914 55 push ebp
f7420915 8bec mov ebp,esp
f7420917 56 push esi
f7420918 8b7508 mov esi,dword ptr [ebp+8]
f742091b 57 push edi
f742091c 6a01 push 1
f742091e bf603f43f7 mov edi,offset ACPI!`string' (f7433f60)
f7420923 57 push edi
1: kd> dt _ctxt 0x8997c0ac-ac
ACPI!_ctxt
+0x000 dwSig : 0x54585443
+0x004 pbCtxtEnd : 0x8997e000 "TSER"
+0x008 listCtxt : _List
+0x010 listQueue : _List
+0x018 pplistCtxtQueue : (null)
+0x01c plistResources : 0x8997c198 _List
+0x020 dwfCtxt : 0x130
+0x024 pnsObj : 0x899b4938 _NSObj
+0x028 pnsScope : 0x899b40ac _NSObj
+0x02c powner : 0x8997c1ac _objowner
+0x030 pcall : 0x8997dd18 _call
+0x034 pnctxt : (null)
+0x038 dwSyncLevel : 0xf
+0x03c pbOp : 0x899b4122 ""
+0x040 Result : _ObjData
+0x054 pfnAsyncCallBack : 0xf7407364 void ACPI!ACPIGetWorkerForInteger+0
+0x058 pdataCallBack : 0x899c634c _ObjData
+0x05c pvContext : 0x899c6320 Void
+0x060 Timer : _KTIMER
+0x088 Dpc : _KDPC
+0x0a8 pheapCurrent : 0x8997c0bc _heap
+0x0ac CtxtData : _ctxtdata
+0x0bc LocalHeap : _heap

if (!state->OpRegion->Context) { 不符合条件


state->PciObj = (PNSOBJ)state->OpRegion->Context;

pciDeviceFilter = (PDEVICE_EXTENSION)state->PciObj->Context;

if (pciDeviceFilter == NULL) { 不符合条件 eax=899c0d58

1: kd> p
eax=899c0d58 ebx=89987378 ecx=899873a8 edx=899b0b50 esi=00000103 edi=899b0b80
eip=f740d6a1 esp=f791ac20 ebp=f791ac70 iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286
ACPI!PciConfigSpaceHandlerWorker+0x75:
f740d6a1 85c0 test eax,eax

//
// If interface is non-zero, we have enumerated this PCI
// device. So use the PCI driver to do config ops.
// If it is zero, make some attempt to figure out what
// device this request is for. The result will be
// used in calls to the HAL.
//如果接口非零,则表示我们已经枚举了此PCI设备。因此,使用PCI驱动程序进行配置操作。
//
如果值为零,请尝试确定此请求针对的是哪个设备。该结果将用于对HAL的调用。
if (!interface) {

if (!(state->Flags & PCISUPP_GOT_SLOT_INFO)) {

state->Flags |= PCISUPP_GOT_SLOT_INFO;

status = GetPciAddress(state->PciObj,
PciConfigSpaceHandlerWorker,
(PVOID)state,
&state->Bus,
&state->Slot);


1: kd> p
eax=899873b0 ebx=89987378 ecx=00000100 edx=899b0b50 esi=00000103 edi=00000000
eip=f740d6fb esp=f791ac0c ebp=f791ac70 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
ACPI!PciConfigSpaceHandlerWorker+0xcf:
f740d6fb e838fcffff call ACPI!GetPciAddress (f740d338)
1: kd> bp f740d6fb

49 e Disable Clear f740d6fb 0001 (0001) ACPI!PciConfigSpaceHandlerWorker+0xcf

这个断点下面会用到好多次
ACPI!PciConfigSpaceHandlerWorker+0xcf


1: kd> t
eax=899873b0 ebx=89987378 ecx=00000100 edx=899b0b50 esi=00000103 edi=00000000
eip=f740d338 esp=f791ac08 ebp=f791ac70 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
ACPI!GetPciAddress:
f740d338 55 push ebp
1: kd> kc
#
00 ACPI!GetPciAddress
01 ACPI!PciConfigSpaceHandlerWorker
02 ACPI!PciConfigSpaceHandler
03 ACPI!InternalOpRegionHandler
04 ACPI!WriteCookAccess
05 ACPI!RunContext
06 ACPI!InsertReadyQueue
07 ACPI!RestartCtxtPassive
08 ACPI!ACPIWorker
09 nt!PspSystemThreadStartup
0a nt!KiThreadStartup
1: kd> dv
PciObj = 0x899affac
CompletionRoutine = 0xf740d62c
Context = 0x89987378
Bus = 0x899873b0 ""
Slot = 0x899873ac
1: kd> kv
# ChildEBP RetAddr Args to Child
00 f791ac04 f740d700 899affac f740d62c 89987378 ACPI!GetPciAddress (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 951]
01 f791ac70 f740d9dd 899affac 00000000 00000000 ACPI!PciConfigSpaceHandlerWorker+0xd4 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 654]
02 f791ac8c f742813d 00000001 899b0b50 000000d8 ACPI!PciConfigSpaceHandler+0x6d (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 424]
03 f791acbc f7417e5f 00000001 899b0b50 000000d8 ACPI!InternalOpRegionHandler+0x67 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\shared\acpioprg.c @ 160]
04 f791acf4 f741d832 8997c000 8997dc08 00000000 ACPI!WriteCookAccess+0x242 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\object.c @ 1437]
05 f791ad1c f7420671 00000000 4556414c 8997c000 ACPI!RunContext+0x122 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\ctxt.c @ 588]
06 f791ad44 f742079a 8997c000 00000000 f743a948 ACPI!InsertReadyQueue+0x155 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 275]
07 f791ad64 f74133c5 899050e8 00000000 89981ca0 ACPI!RestartCtxtPassive+0x54 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 384]
08 f791adac 80d391f0 00000000 00000000 00000000 ACPI!ACPIWorker+0xbf (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\worker.c @ 302]
09 f791addc 80b00d52 f7413306 00000000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]
0a 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]
1: kd> bp f740d700
返回地址加上断点:
50 e Disable Clear f740d700 0001 (0001) ACPI!PciConfigSpaceHandlerWorker+0xd4

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

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

相关文章

Pinia vs Vuex:如何选择?

Pinia vs Vuex:如何选择? 在 Vue.js 生态中,Pinia 和 Vuex 均为核心状态管理库,但设计理念、功能特性和适用场景存在显著差异。选择时需结合项目需求、技术栈和开发体验综合判断。以下是具体对比与分析: 一、核心差异对…

Windows正测试新版运行对话框设计,附启用方法

Windows 11的运行对话框是目前仍在使用的最古老的用户界面元素之一。虽然它运行良好,但其美学设计仍然保留着早期微软操作系统的风格。现在,这种情况即将发生改变。如果你安装了最新的Beta或Dev预览版本,微软正在测试全新版本的运行对话框。你…

SpringMVC深度解析从基础架构到实战应用的全方位指南

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…

好用的问卷调查平台测评:随机抽题+360度评估全功能解析 - 品牌排行榜

截至2025年1月,国内在线问卷市场活跃用户已突破4.2亿人次,企业级调研需求年增长率达58%。面对问卷星、腾讯问卷、金数据等数十款工具,用户普遍困惑:哪款平台真正兼顾"简单易用"与"企业级功能"…

《从字节到速度:手撕一个零拷贝二进制协议(struct + buffer protocol 深度实战)》

《从字节到速度:手撕一个零拷贝二进制协议(struct buffer protocol 深度实战)》 一、开篇:为什么我们必须重新理解“二进制协议”? 如果你做过网络通信、数据采集、游戏开发、数据库引擎、消息队列、RPC 框架&#xf…

解决精密装配难题:这家值得推荐的电爪品牌以高精度和可靠性脱颖而出 - 品牌2025

在高端制造迈向智能化、柔性化的新阶段,电动夹爪作为机器人末端执行的关键部件,正成为破解精密装配难题的核心利器。面对3C电子、半导体、新能源等行业对微米级定位、克级力控的严苛要求,传统气动方案已难以胜任。而…

ACPI!GetPciAddress到ACPI!GetPciAddressWorker完成后会调用state->CompletionRoutine:ACPI!PciConfigSpaceHandler

ACPI!GetPciAddress到ACPI!GetPciAddressWorker完成后会调用state->CompletionRoutine:ACPI!PciConfigSpaceHandler 1: kd> kc# 00 ACPI!GetPciAddress 01 ACPI!PciConfigSpaceHandlerWorker 02 ACPI!PciConfigSpaceHandler 03 ACPI!InternalOpRegionHandler …

在组件外使用Vuex的几种方法

在 Vue.js 应用中,Vuex 作为集中式状态管理工具,允许在组件外部访问和操作状态。以下是几种在组件外使用 Vuex 的常见方法及其详细说明: 一、直接访问 Vuex Store 实例 方法说明: 在创建 Vuex Store 实例后,可以将其…

Hugging Face 命令失效问题解析: huggingface-cli: command not found -问题解决有效方案

文章目录Hugging Face 命令失效问题解析: huggingface-cli: command not found -问题解决有效方案一、错误出现的真实背景二、确认依赖是否真实存在三、定位 CLI 实际生成位置四、PATH 未配置是最常见问题临时修复(当前终端生效)永久修复&…

2026/1/19

1、不足之处 1、没坚持自己的立场,该卖就卖,而不是心存着侥幸,然后继续买,而是应该继续观察 2、我今天意识到了自己的一个错误,就是已经有一个稳定的盈利方式的时候,又去尝试一个其他的方式,我不知道这样子是否…

降本增效:XinServer 如何帮助全栈工程师加速项目上线?

降本增效:如何让后端开发像搭积木一样简单? 最近跟几个创业的朋友聊天,他们都在抱怨同一个问题:产品想法很好,前端也做得挺快,但一到后端就卡住了。要么是找不到合适的后端开发,要么是后端开发…

2026 十大图库推荐:自媒体、小红书、公众号配图素材网站盘点 - 品牌2025

在自媒体创作、小红书运营、公众号排版的过程中,配图质量直接影响内容传播效果。电商详情页、印刷物料、短视频剪辑等场景更对素材的正版性与适配性提出高要求。但不少创作者因素材侵 权面临纠纷,单次赔 偿常超万元。…

盲盒经济持续升温,如何解锁消费新场景?

盲盒经济持续升温,如何解锁消费新场景? 盲盒从线下火到了线上,不少品牌通过小程序打造轻量级互动体验,不仅降低了用户参与门槛,还通过社交裂变快速触达年轻群体。为什么用户偏爱盲盒小程序? ✅ 轻量化体验&…

【dz-1012】小型无士栽培自动控制系统设计与实现

摘要 在无土栽培领域,环境参数与营养液状态的精准调控对作物生长质量与产量起着决定性作用。传统无土栽培管理多依赖人工巡检和经验调节,存在参数控制滞后、营养液配比失衡、资源浪费等问题,难以满足精细化种植的严苛需求。 基于 STM32F103…

gitlab-ce 的简单使用

gitlab-ce 的简单使用 简单认识 gitlab-ce 以下理解是个人理解,细节的正确性请做测试验证 😃。 请求流程: # HTTP/HTTPS 请求 客户端 (浏览器/终端)|| HTTP/HTTPS 请求 (如克隆仓库、访问网页)v 外部 Nginx 反向代…

2026年十字传动轴市场,口碑厂家大盘点,球齿传动轴/联轴器/传动轴/球齿联轴器/齿式联轴器,十字传动轴企业推荐排行榜 - 品牌推荐师

在工业生产中,十字传动轴作为核心传动部件,直接影响机械设备的运行效率与稳定性。尤其在重型机械、矿山机械、汽车制造等领域,其承载扭矩、补偿角度及使用寿命等指标,直接关系到设备的安全性与作业效率。随着国内工…

Springboot小树立社工服务中心管理信息系统9mpe3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能:案主,社工,服务信息,服务类型,招聘信息,招聘类型,服务订单,分配信息,服务内容,评价打分,退单信息,工资信息,活动支出,外界捐助,考勤信息开题报告内容一、研究背景与意义随着社会治理体系的不断完善,公众对社区服务的需求呈现多…

写这个方法的人真是个不折不扣的大SB_Ruoyi

用set去封装push操作. 浓浓的外包风. /*** 缓存List数据** @param key 缓存的键值* @param dataList 待缓存的List数据* @return 缓存的对象*/ public <T> long setCacheList(final String key, final List<T…

【dz-1015】基于STM32单片机智能鱼缸

摘要 在观赏鱼养殖领域&#xff0c;水质状态、水温稳定性及饲喂合理性对鱼类生存质量与健康状况起着决定性作用。传统鱼缸管理多依赖人工换水、经验控温及定时投喂&#xff0c;存在水质恶化预警滞后、水温波动大、饲喂不规律等问题&#xff0c;难以满足精细化养殖的严苛需求。…

强烈安利MBA必备AI论文软件TOP8

强烈安利MBA必备AI论文软件TOP8 2026年MBA必备AI论文软件测评&#xff1a;精准匹配学术需求 随着人工智能技术在学术领域的广泛应用&#xff0c;MBA学生在撰写论文过程中对高效、专业的工具需求日益增长。然而&#xff0c;面对市场上众多的AI写作软件&#xff0c;如何选择真正适…