ACPI!ACPIGetWorkerForInteger函数中的request->CallBackRoutine=ACPI!GetPciAddressWorker

ACPI!ACPIGetWorkerForInteger函数中的request->CallBackRoutine=ACPI!GetPciAddressWorker

第一部分:
1: kd> kc
#
00 ACPI!ACPIGetWorkerForInteger
01 ACPI!AsyncCallBack
02 ACPI!RunContext
03 ACPI!DispatchCtxtQueue
04 ACPI!StartTimeSlicePassive
05 ACPI!ACPIWorker
06 nt!PspSystemThreadStartup
07 nt!KiThreadStartup
1: kd> dv
AcpiObject = 0x899b00f0
Status = 0n0
Result = 0x899050cc
Context = 0x899050a0
freeData = 0x00 ''
1: kd> dt ACPI_GET_REQUEST 0x899050a0
+0x000 Flags : 0x48040402
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x5244415f
+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x899c6328 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x899affac _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x899bf408 Void
+0x020 Buffer : 0x899bf420 -> (null)
+0x024 BufferSize : (null)
+0x028 Status : 0n0
+0x02c ResultData : _ObjData
1: kd> p
eax=00000050 ebx=899b00f0 ecx=8997e000 edx=00002707 esi=89901000 edi=899050a0
eip=f7407369 esp=f791acd0 ebp=f791acd8 iopl=0 nv up ei ng nz ac pe cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000297
ACPI!ACPIGetWorkerForInteger+0x5:
f7407369 8b5d0c mov ebx,dword ptr [ebp+0Ch] ss:0010:f791ace4=00000000
1: kd> p
eax=00000050 ebx=00000000 ecx=8997e000 edx=00002707 esi=89901000 edi=899050a0
eip=f740736c esp=f791acd0 ebp=f791acd8 iopl=0 nv up ei ng nz ac pe cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000297
ACPI!ACPIGetWorkerForInteger+0x8:
f740736c 85db test ebx,ebx
1: kd> p
eax=00000050 ebx=00000000 ecx=8997e000 edx=00002707 esi=89901000 edi=899050a0
eip=f7407376 esp=f791acc8 ebp=f791acd8 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!ACPIGetWorkerForInteger+0x12:
f7407376 c645ff01 mov byte ptr [ebp-1],1 ss:0010:f791acd7=00
1: kd> p
eax=00000050 ebx=00000000 ecx=8997e000 edx=00002707 esi=89901000 edi=899050a0
eip=f740737a esp=f791acc8 ebp=f791acd8 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!ACPIGetWorkerForInteger+0x16:
f740737a 8b7514 mov esi,dword ptr [ebp+14h] ss:0010:f791acec=899050a0
1: kd> p
eax=00000050 ebx=00000000 ecx=8997e000 edx=00002707 esi=899050a0 edi=899050a0
eip=f740739a esp=f791acc8 ebp=f791acd8 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
ACPI!ACPIGetWorkerForInteger+0x36:
f740739a 8b4620 mov eax,dword ptr [esi+20h] ds:0023:899050c0=899bf420
1: kd> p
eax=899bf420 ebx=00000000 ecx=8997e000 edx=00002707 esi=899050a0 edi=899050cc
eip=f74073ab esp=f791acc8 ebp=f791acd8 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
ACPI!ACPIGetWorkerForInteger+0x47:
f74073ab 8b0e mov ecx,dword ptr [esi] ds:0023:899050a0=48040402
1: kd> p
eax=899bf420 ebx=00000000 ecx=48040402 edx=00002707 esi=899050a0 edi=899050cc
eip=f74073b2 esp=f791acc8 ebp=f791acd8 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!ACPIGetWorkerForInteger+0x4e:
f74073b2 ff7624 push dword ptr [esi+24h] ds:0023:899050c4=00000000
1: kd> p
eax=00000000 ebx=00000000 ecx=48040402 edx=00002707 esi=899050a0 edi=899050cc
eip=f74073c3 esp=f791acc8 ebp=f791acd8 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!ACPIGetWorkerForInteger+0x5f:
f74073c3 eb43 jmp ACPI!ACPIGetWorkerForInteger+0xa4 (f7407408)
1: kd> dt ACPI_GET_REQUEST 0x899050a0
+0x000 Flags : 0x48040402
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x5244415f
+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x899c6328 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x899affac _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x899bf408 Void
+0x020 Buffer : 0x899bf420 -> (null)
+0x024 BufferSize : (null)
+0x028 Status : 0n0
+0x02c ResultData : _ObjData
1: kd> p
eax=00000000 ebx=00000000 ecx=48040402 edx=00002707 esi=899050a0 edi=899050cc
eip=f7407408 esp=f791acc8 ebp=f791acd8 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!ACPIGetWorkerForInteger+0xa4:
f7407408 807dff00 cmp byte ptr [ebp-1],0 ss:0010:f791acd7=01
1: kd> dt ACPI_GET_REQUEST 0x899050a0
+0x000 Flags : 0x48040402
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x5244415f
+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x899c6328 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x899affac _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x899bf408 Void
+0x020 Buffer : 0x899bf420 -> (null)
+0x024 BufferSize : (null)
+0x028 Status : 0n0
+0x02c ResultData : _ObjData
1: kd> p
eax=00000000 ebx=00000000 ecx=48040402 edx=00002707 esi=899050a0 edi=899050cc
eip=f7407411 esp=f791acc8 ebp=f791acd8 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!ACPIGetWorkerForInteger+0xad:
f7407411 6a01 push 1
1: 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...
1: kd> dv
AcpiObject = 0x899b00f0
Status = 0n0
Result = 0x899050cc
Context = 0x899050a0
freeData = 0x01 ''
1: kd> dx -r1 ((ACPI!_ObjData *)0x899050cc)
((ACPI!_ObjData *)0x899050cc) : 0x899050cc [Type: _ObjData *]
[+0x000] dwfData : 0x0 [Type: unsigned short]
[+0x002] dwDataType : 0x1 [Type: unsigned short]
[+0x004] dwRefCount : 0x0 [Type: unsigned long]
[+0x004] pdataBase : 0x0 [Type: _ObjData *]
[+0x008] dwDataValue : 0x0 [Type: unsigned long]
[+0x008] uipDataValue : 0x0 [Type: unsigned long]
[+0x008] pnsAlias : 0x0 [Type: _NSObj *]
[+0x008] pdataAlias : 0x0 [Type: _ObjData *]
[+0x008] powner : 0x0 [Type: void *]
[+0x00c] dwDataLen : 0x0 [Type: unsigned long]
[+0x010] pbDataBuff : 0x0 [Type: unsigned char *]

//
// We are done, but we must check to see if we are the async or the
// sync case. If we are the sync case, then we have much less cleanup
// to perform
//
if ( !(request->Flags & GET_PROP_SKIP_CALLBACK) ) {

//
// Is there a callback routine to call?
//
if (request->CallBackRoutine != NULL) {

(request->CallBackRoutine)(
AcpiObject,
status,
NULL,
request->CallBackContext
);

}


第二部分:

1: kd> kc
#
00 ACPI!GetPciAddressWorker
01 ACPI!ACPIGetWorkerForInteger
02 ACPI!AsyncCallBack
03 ACPI!RunContext
04 ACPI!DispatchCtxtQueue
05 ACPI!StartTimeSlicePassive
06 ACPI!ACPIWorker
07 nt!PspSystemThreadStartup
08 nt!KiThreadStartup
1: kd> dv
AcpiObject = 0x899b00f0
Status = 0n0
Result = 0x00000000
Context = 0x899bf408
buffer = unsigned char [64] ""
1: kd> dt GET_ADDRESS_CONTEXT 0x899bf408
ACPI!GET_ADDRESS_CONTEXT
+0x000 PciObject : 0x899affac _NSObj
+0x004 Bus : 0x899873b0 ""
+0x008 Slot : 0x899873ac _PCI_SLOT_NUMBER
+0x00c ParentBus : 0 ''
+0x010 ParentSlot : _PCI_SLOT_NUMBER
+0x014 Flags : 8
+0x018 Address : 0
+0x01c BaseBusNumber : 0
+0x020 RunCompletion : 0n0
+0x024 CompletionRoutine : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker+0
+0x028 CompletionContext : 0x89987378 Void
1: kd> ?0x899bf408+0x018
Evaluate expression: -1986268128 = 899bf420 +0x020 Buffer : 0x899bf420 -> (null)

参考:
1: kd> dt ACPI_GET_REQUEST 0x899050a8-8
+0x000 Flags : 0x48040402
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x5244415f
+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x899c6328 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x899affac _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x899bf408 Void
+0x020 Buffer : 0x899bf420 -> (null)
+0x024 BufferSize : (null)
+0x028 Status : 0n0
+0x02c ResultData : _ObjData
参考:

#define PCISUPP_CHECKED_ADR 8


//
// First, determine the slot number.
//
if (!(state->Flags & PCISUPP_CHECKED_ADR)) {

//
// Get the _ADR.
//
state->Flags |= PCISUPP_CHECKED_ADR;这里设置的,现在不用再重入了。
status = ACPIGetNSAddressAsync(
state->PciObject,
GetPciAddressWorker,
(PVOID)state,
&(state->Address), ?0x899bf408+0x018=899bf420!!!
NULL
);

if (status == STATUS_PENDING) {
return status;
}

参考:
1: kd> dt ACPI_GET_REQUEST 0x899050a0
+0x000 Flags : 0x48040402
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x5244415f
+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x899c6328 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x899affac _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x899bf408 Void
+0x020 Buffer : 0x899bf420 -> (null) 这里正好是+0x020 Buffer : 0x899bf420!!!
+0x024 BufferSize : (null)
+0x028 Status : 0n0
+0x02c ResultData : _ObjData
参考:

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

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

相关文章

2026真空干燥箱定制厂家推荐:技术与服务双优之选 - 品牌排行榜

真空干燥箱作为工业生产与科研实验中的关键设备,其性能直接影响物料干燥效率与质量。在定制化需求日益增长的当下,选择技术实力强、产品可靠性高的厂家成为企业关注的重点。本文基于市场调研与用户反馈,梳理值得关注…

一文快速了解SEO(初学者必看)

一、先搞懂:SEO到底是什么,搜索引擎怎么工作 SEO的全称是搜索引擎优化,简单来说,就是通过对网站的内容、结构、技术等方面进行合理调整,让搜索引擎能更轻松地发现、理解我们的网站,同时让网站在搜索引擎的…

test 20260120 -2

在工业制造领域,粉末冶金制品以其高精度、高性能的特点,成为汽车、家电、医疗器械等行业的关键部件。据统计,全球粉末冶金市场规模已突破200亿美元,年复合增长率达6.5%,其中中国占比超30%。在众多生产厂家中,深圳…

2026靠谱的真空干燥箱厂家推荐 - 品牌排行榜

真空干燥箱作为一种利用真空环境进行干燥处理的设备,广泛应用于电子、医药、材料等领域,其性能稳定性与技术可靠性对实验与生产结果具有重要影响。在选择相关设备提供方时,技术实力、产品质量与服务体系是需要关注的…

没有自己的靶场?安排上,自己动手建一个

靶场篇 1、在线靶场 BugKu(简单,推荐新手入门,还有在线工具)https://ctf.bugku.com/index.html 北京联合大学BUUCTF(新靶场,难度中上,搜集了很多大赛原题) https://buuoj.cn/ CT…

微算法科技(NASDAQ :MLGO)开发基于QML的入侵检测识别系统(QML-IDS),强化网络安全防护

随着网络技术的飞速发展,网络环境日益复杂,各类网络攻击层出不穷,传统的入侵检测系统在面对日益复杂且多变的威胁时,逐渐暴露出检测准确率不够高、应对新型攻击乏力等问题。而量子计算技术的兴起为网络安全领域带来…

2025年网络安全威胁趋势深度分析

A 2025 Threat Trends Analysis 随着2025年接近尾声并步入假日季节,现在是回顾和反思网络安全行业一年来所发生事件的好时机。业界人士都明白,虽然每年的情况不尽相同,但某些趋势往往会年复一年地持续存在。因此,牢记过去发生的事…

自动化测试框架实战

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快一、什么是自动化测试框架在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组…

2026南宁市英语雅思培训辅导机构推荐、2026权威出国雅思课程排行榜 - 苏木2025

基于南宁市青秀区、兴宁区、江南区、西乡塘区、良庆区、邕宁区、武鸣区及宾阳县、上林县、马山县、隆安县、横州市全域区县的雅思培训市场调研,结合上千名考生反馈、专业教研团队深度测评及实战提分数据,本文推出202…

35 岁程序员拒被裁!掌握这项技能,轻松实现职场逆袭

一、35 岁老周的逆袭:从 “被优化” 到 “被争抢” “35 岁生日刚过,我就收到了优化通知”—— 这是老周去年的遭遇。做了 12 年 Java 开发的他,每天重复着 CRUD 工作,薪资卡在 25K 多年没涨,最终成了部门 “优化名单…

Pytest自动化测试执行环境切换的两种解决方案

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、痛点分析在实际企业的项目中,自动化测试的代码往往需要在不同的环境中进行切换,比如多套测试环境、预上线环境、UAT环境、线上环境等…

主组与附加组

主包主包,为什么我改不了test4的组啊?root@btc-VMware20-1:/nihao/zaijian# id test4 uid=1001(test4) gid=1002(hahaha) 组=1002(hahaha),1003(hello) root@btc-VMware20-1:/nihao/zaijian# gpasswd -d test4 hahah…

阿里出品2026版Java架构师面试指南,涵盖Java所有核心技能

最近很多粉丝朋友私信我说:熬过了去年的寒冬却没熬过现在的内卷;打开Boss直拒一排已读不回,回的基本都是外包,薪资还给的不高,对技术水平要求也远超从前;感觉Java一个初中级岗位有上千人同时竞争&#xff0…

FBM237-P0917QZ输出模块

FBM237-P0917QZ 输出模块特点概览:高性能输出:支持多路数字/模拟信号输出,响应速度快,控制精确。模块化设计:便于扩展和替换,灵活适应不同控制系统需求。多接口兼容:可与各种控制器、PLC或DCS系…

2026 垂直生命线系统防护厂家权威推荐榜单:水平生命线系统/垂直生命线系统/水平生命线系统装置/垂直生命线系统装置源头厂家精选。

高空作业安全是工业生产中不可忽视的核心环节。据统计,我国每年因高空坠落导致的事故超过3000起,其中约65%的事故与防护设备缺失或质量不达标直接相关。在建筑、电力、船舶、石油等高危行业中,如何选择可靠的生命线…

2026年Java岗最全面试攻略,面试必刷,跳槽大厂神器

现在 Java 面试可以说是老生常谈的一个问题了,确实也是这么回事。面试题、面试宝典、面试手册......各种 Java 面试题一搜一大把,根本看不完,也看不过来, 而且每份面试资料也都觉得 Nice,然后就开启了收藏之路。Java 开…

FBM242-P0916JY外置开关模块

FBM242-P0916JY 外置开关模块特点概览:模块化设计:标准化接口,便于安装、扩展和替换。多通道输入:支持多路开关信号输入,实现灵活控制。工业级可靠性:耐高温、防尘、防振动,适应连续运行的工业环…

深入解析:【MySQL】视图

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

2026南宁市英语雅思培训辅导机构推荐;2026权威出国雅思课程排行榜 - 苏木2025

基于2024-2025雅思官方发布的中国大陆地区考生成绩大数据报告,南宁市雅思考生整体均分为5.8分,其中写作、口语单科平均分分别低至5.6分、5.5分,显著低于全球均值。无论是兴宁区、江南区、青秀区、西乡塘区、邕宁区、…

2026南宁市英语雅思培训辅导机构推荐2026权威出国雅思课程排行榜 - 苏木2025

雅思考试作为出国深造、职场晋升的核心语言凭证,近年来在南宁市兴宁区、江南区、青秀区、西乡塘区、邕宁区、良庆区、武鸣区及横州市、宾阳县、上林县、马山县、隆安县等全域区县的报考热度持续攀升。但多数考生在备考…