ACPI!RestartCtxtCallback函数里面的ACPI!RestartContext到ACPI!DispatchCtxtQueue函数里面的ACPI!RunContext

ACPI!RestartCtxtCallback函数里面的ACPI!RestartContext到ACPI!DispatchCtxtQueue函数里面的ACPI!RunContext


1: kd> kc
#
00 ACPI!RestartCtxtCallback
01 ACPI!PciConfigSpaceHandlerWorker
02 ACPI!GetPciAddressWorker
03 ACPI!ACPIGetWorkerForInteger
04 ACPI!AsyncCallBack
05 ACPI!RunContext
06 ACPI!DispatchCtxtQueue
07 ACPI!StartTimeSlicePassive
08 ACPI!ACPIWorker
09 nt!PspSystemThreadStartup
0a nt!KiThreadStartup
1: kd> dv
pctxtdata = 0x8997c0ac

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 : 0x120
+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
1: kd> dx -id 0,0,899a2278 -r1 (*((ACPI!_heap *)0x8997c0bc))
(*((ACPI!_heap *)0x8997c0bc)) [Type: _heap]
[+0x000] dwSig : 0x50414548 [Type: unsigned long]
[+0x004] pbHeapEnd : 0x8997dc08 : 0x57 [Type: unsigned char *]
[+0x008] pheapHead : 0x8997c0bc [Type: _heap *]
[+0x00c] pheapNext : 0x0 [Type: _heap *]
[+0x010] pbHeapTop : 0x8997c1f0 : 0x0 [Type: unsigned char *]
[+0x014] plistFreeHeap : 0x0 [Type: _List *]
[+0x018] Heap [Type: _heapobjhdr]
1: kd> db framehdr 0x8997dc08
Couldn't resolve error at 'framehdr 0x8997dc08'
1: kd> dt framehdr 0x8997dc08
ACPI!FRAMEHDR
+0x000 dwSig : 0x41435257
+0x004 dwLen : 0x30
+0x008 dwfFrame : 3
+0x00c pfnParse : 0xf7417c1d long ACPI!WriteCookAccess+0


1: kd> dt _WRCOOKACC 0x8997dc08
ACPI!_wrcookacc
+0x000 FrameHdr : _framehdr
+0x010 pnsBase : 0x899b0b50 _NSObj
+0x014 prsa : 0x89996d68 _rsaccess
+0x018 dwAddr : 0xd8
+0x01c dwSize : 4
+0x020 dwData : 0x40e98102
+0x024 dwDataMask : 0xffffffff
+0x028 dwDataTmp : 0
+0x02c fPreserve : 0 ''


1: kd> kc
#
00 ACPI!RestartContext
01 ACPI!RestartCtxtCallback

02 ACPI!PciConfigSpaceHandlerWorker
03 ACPI!GetPciAddressWorker
04 ACPI!ACPIGetWorkerForInteger
05 ACPI!AsyncCallBack
06 ACPI!RunContext
07 ACPI!DispatchCtxtQueue
08 ACPI!StartTimeSlicePassive
09 ACPI!ACPIWorker
0a nt!PspSystemThreadStartup
0b nt!KiThreadStartup
1: kd> dv
pctxt = 0x8997c000
fDelayExecute = 0x00 ''

1: kd> x ACPI!gReadyQueue
f743a928 ACPI!gReadyQueue = struct _ctxtq
1: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))
(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]
[+0x000] dwfCtxtQ : 0x0 [Type: unsigned long]
[+0x004] pkthCurrent : 0x89981ca0 [Type: _KTHREAD *]
[+0x008] pctxtCurrent : 0x89903000 [Type: _ctxt *]
[+0x00c] plistCtxtQ : 0x0 [Type: _List *]
[+0x010] dwmsTimeSliceLength : 0x64 [Type: unsigned long]
[+0x014] dwmsTimeSliceInterval : 0x64 [Type: unsigned long]
[+0x018] pfnPauseCallback : 0x0 [Type: void (__cdecl*)(void *)]
[+0x01c] PauseCBContext : 0x0 [Type: void *]
[+0x020] mutCtxtQ [Type: _mutex]
[+0x028] Timer [Type: _KTIMER]
[+0x050] DpcStartTimeSlice [Type: _KDPC]
[+0x070] DpcExpireTimeSlice [Type: _KDPC]
[+0x090] WorkItem [Type: _WORK_QUEUE_ITEM]

if (KeGetCurrentIrql() < DISPATCH_LEVEL)
{
AcquireMutex(&gReadyQueue.mutCtxtQ);
rc = InsertReadyQueue(pctxt, fDelayExecute);
ReleaseMutex(&gReadyQueue.mutCtxtQ);
}

1: kd> x ACPI!gReadyQueue
f743a928 ACPI!gReadyQueue = struct _ctxtq
1: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))
(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]
[+0x000] dwfCtxtQ : 0x0 [Type: unsigned long]
[+0x004] pkthCurrent : 0x89981ca0 [Type: _KTHREAD *]
[+0x008] pctxtCurrent : 0x89903000 [Type: _ctxt *]
[+0x00c] plistCtxtQ : 0x8997c010 [Type: _List *]
[+0x010] dwmsTimeSliceLength : 0x64 [Type: unsigned long]
[+0x014] dwmsTimeSliceInterval : 0x64 [Type: unsigned long]
[+0x018] pfnPauseCallback : 0x0 [Type: void (__cdecl*)(void *)]
[+0x01c] PauseCBContext : 0x0 [Type: void *]
[+0x020] mutCtxtQ [Type: _mutex]
[+0x028] Timer [Type: _KTIMER]
[+0x050] DpcStartTimeSlice [Type: _KDPC]
[+0x070] DpcExpireTimeSlice [Type: _KDPC]
[+0x090] WorkItem [Type: _WORK_QUEUE_ITEM]

第二部分:acpi!AcpiGetListEntry删除了一个节点


VOID
EXPORT
ACPIGetWorkerForInteger(
IN PNSOBJ AcpiObject,
IN NTSTATUS Status,
IN POBJDATA Result,
IN PVOID Context
)
{

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
);

}

//
// Remove the request from the queue
//
KeAcquireSpinLock( &AcpiGetLock, &oldIrql );
RemoveEntryList( &(request->ListEntry) ); 这里会删除一个acpi!AcpiGetListEntry节点
KeReleaseSpinLock( &AcpiGetLock, oldIrql );


1: kd> x acpi!AcpiGetListEntry
f743b940 ACPI!AcpiGetListEntry = struct _LIST_ENTRY [ 0x899c6328 - 0x899c6328 ]
1: kd> dx -r1 (*((ACPI!_LIST_ENTRY *)0xf743b940))
(*((ACPI!_LIST_ENTRY *)0xf743b940)) [Type: _LIST_ENTRY]
[+0x000] Flink : 0x899c6328 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0x899c6328 [Type: _LIST_ENTRY *]
1: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x899c6328)
((ACPI!_LIST_ENTRY *)0x899c6328) : 0x899c6328 [Type: _LIST_ENTRY *]
[+0x000] Flink : 0xf743b940 [Type: _LIST_ENTRY *]
[+0x004] Blink : 0xf743b940 [Type: _LIST_ENTRY *]

第三部分:


1: kd> gu
eax=00000000 ebx=f743a948 ecx=00050001 edx=00040000 esi=89903000 edi=00008004
eip=f741d905 esp=f791ad18 ebp=f791ad34 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!RunContext+0x1f5:
f741d905 f6462101 test byte ptr [esi+21h],1 ds:0023:89903021=01
1: kd> gu
eax=00008004 ebx=89903000 ecx=8997e000 edx=00002707 esi=f743a928 edi=f743a934
eip=f742042d esp=f791ad3c ebp=f791ad4c 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!DispatchCtxtQueue+0xaf:
f742042d 57 push edi


VOID LOCAL DispatchCtxtQueue(PCTXTQ pctxtq)
{

while ((plist = ListRemoveHead(&pctxtq->plistCtxtQ)) != NULL)
{
pctxt = CONTAINING_RECORD(plist, CTXT, listQueue);

ASSERT(pctxt->pplistCtxtQueue == &pctxtq->plistCtxtQ);

pctxt->pplistCtxtQueue = NULL;
pctxt->dwfCtxt &= ~CTXTF_IN_READYQ;
RunContext(pctxt);
}


1: kd> x ACPI!gReadyQueue
f743a928 ACPI!gReadyQueue = struct _ctxtq
1: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))
(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]
[+0x000] dwfCtxtQ : 0x0 [Type: unsigned long]
[+0x004] pkthCurrent : 0x0 [Type: _KTHREAD *]
[+0x008] pctxtCurrent : 0x0 [Type: _ctxt *]
[+0x00c] plistCtxtQ : 0x8997c010 [Type: _List *]
[+0x010] dwmsTimeSliceLength : 0x64 [Type: unsigned long]
[+0x014] dwmsTimeSliceInterval : 0x64 [Type: unsigned long]
[+0x018] pfnPauseCallback : 0x0 [Type: void (__cdecl*)(void *)]
[+0x01c] PauseCBContext : 0x0 [Type: void *]
[+0x020] mutCtxtQ [Type: _mutex]
[+0x028] Timer [Type: _KTIMER]
[+0x050] DpcStartTimeSlice [Type: _KDPC]
[+0x070] DpcExpireTimeSlice [Type: _KDPC]
[+0x090] WorkItem [Type: _WORK_QUEUE_ITEM]

1: kd> g
Breakpoint 39 hit
eax=8997c010 ebx=8997c000 ecx=00008004 edx=00002707 esi=f743a928 edi=f743a934
eip=f741d710 esp=f791ad38 ebp=f791ad4c 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!RunContext:
f741d710 55 push ebp
1: kd> kc
#
00 ACPI!RunContext
01 ACPI!DispatchCtxtQueue

02 ACPI!StartTimeSlicePassive
03 ACPI!ACPIWorker
04 nt!PspSystemThreadStartup
05 nt!KiThreadStartup
1: kd> dv
pctxt = 0x8997c000
pctxtSave = 0xf741d711
pkthSave = 0x00000008
rc = 0n-1986543616

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

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

相关文章

NMR波谱仪品牌Top5与生产商全解析:从供应商到价格指南 - 品牌推荐大师1

在制药、化学、材料科学等领域,核磁共振(NMR)波谱仪是进行物质结构解析与定量分析不可或缺的核心工具。面对从数十万到数千万元不等的价格区间和复杂的品牌选择,如何做出明智的采购决策?本指南将为您剖析市场格局…

2026年广州大雄发动机公司推荐榜:广州大雄汽车配件有限公司,大雄发动机拆机件/大雄汽车发动机改装/发动机拆车件大雄/大雄发动机拆车件售卖/大雄汽配发动机拆机件/陈田大雄发动机改装公司精选

一台宝马N52直列六缸发动机在江苏王牌动力的再制造车间内完成了最后的性能测试,其能耗相比全新发动机降低了55%,售价却仅有新机的40%,即将发往欧洲市场。 在广州、扬州和襄阳等地,一个围绕汽车发动机“涅槃重生”的…

漏洞挖掘的不同场景的挖掘技巧、必备工具与避坑要点!

漏洞挖掘是网络安全领域的核心技能&#xff0c;指通过技术手段发现软件、系统、应用中存在的安全缺陷&#xff0c;为修复漏洞、提升防护能力提供依据。不同于渗透测试的“端到端攻击”&#xff0c;漏洞挖掘更侧重“精准定位漏洞、验证漏洞危害性”&#xff0c;是安全从业者、白…

先写计划再动手:OpenCSG公益课的AI编程方法

由特许全球金融科技师CGFT认证项目(Chartered Global FinTech) 、模速空间与OpenCSG(开放传神)联合推出《普通人的AI掘金课——6天学会,马上能用》系列直播课程,把 AI 编程里最“反直觉但最省钱”的原则讲明白了:…

2026最新三亚旅游公司TOP5评测!资深团队+定制服务权威榜单发布,文旅赋能重构品质旅行体验 - 品牌推荐2026

随着三亚成为国内外游客向往的旅游胜地,选择一家专业可靠的旅游公司至关重要。本榜单基于服务经验、产品丰富度、客户口碑、行业资质四大维度(艾游国际旅行社新增“安全保障”维度),结合市场调研及游客反馈,权威解…

游戏手柄测试全攻略:5分钟掌握手柄故障排查技巧

游戏手柄测试全攻略&#xff1a;5分钟掌握手柄故障排查技巧 【免费下载链接】gamepadtest Gamepad API Test 项目地址: https://gitcode.com/gh_mirrors/ga/gamepadtest 你是否遇到过游戏中手柄按键失灵、摇杆漂移的困扰&#xff1f;面对手柄故障&#xff0c;很多用户往…

智能补帧技术:让静态动图重获新生

智能补帧技术&#xff1a;让静态动图重获新生 【免费下载链接】Waifu2x-Extension-GUI Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, Real-ESRGAN, Real-CUGAN, RTX Video Super Resolution VSR, SRMD, Rea…

3步打造专属Plex直播中心:IPTV插件完整配置指南

3步打造专属Plex直播中心&#xff1a;IPTV插件完整配置指南 【免费下载链接】IPTV.bundle Plex plug-in that plays live streams (like IPTV) from a M3U playlist 项目地址: https://gitcode.com/gh_mirrors/ip/IPTV.bundle 还在为无法在Plex中观看直播节目而烦恼吗&a…

最快速查询sql的方法. asyncmy

最快速查询sql的方法. asyncmy# 异步加线程池. from concurrent.futures import ThreadPoolExecutor import asyncio all_tables=["select * from hdrx.bas_source", "select * from hdrx.bas_station…

2026年生活垃圾智能分选设备,垃圾分类设备,可回收物智能分选设备厂家推荐及选购参考榜 - 深度智识库

随着 “无废城市” 建设进入精细化落地阶段,垃圾分类、处理、分拣设备的技术迭代速度与场景适配能力,成为推动固废资源化利用的核心引擎。从前端智能分类的精准化到后端处理的高效化,具备技术沉淀与实践经验的企业,正通…

2026年二手/全新稳定土/混凝土搅拌站推荐榜:山东昊晟机械专业回收与供应全解析

在基础设施建设领域,稳定土搅拌站与混凝土搅拌站是核心设备之一。据行业数据显示,2025年国内搅拌站市场规模达120亿元,其中二手设备交易占比超35%,反映出市场对高性价比设备的需求持续增长。本文聚焦山东昊晟机械有…

突破!LLM自我批评让规划能力暴涨89.3%!DeepMind新方法,不依赖外部验证,小白程序员也能轻松掌握!

大家好&#xff0c;我是PaperAgent&#xff0c;不是Agent&#xff01; 不借助外部验证器&#xff0c;只让 LLM 反复“自评 重写”&#xff0c;就能把 Blocksworld 准确率从 49.8% 飙到 89.3%&#xff0c;刷新多项规划 benchmark 的记录。 Self-Critique 带来的暴涨 &#x1f5…

浙大西湖Ant团队:让大语言模型用“听“来优化“看“的压缩技术

这篇由浙江大学、西湖大学和蚂蚁集团联合发表的开创性研究&#xff0c;发表于2025年11月的arXiv平台&#xff08;论文编号&#xff1a;arXiv:2511.14582v1&#xff09;&#xff0c;为多模态大语言模型的效率提升开辟了全新道路。该研究的第一作者是来自浙江大学的陶科达&#x…

程序员必看!COTA游戏AI架构大揭秘:从LLM大脑到毫秒级执行,这才是真正的“思考型“智能体!

不讲武德&#xff01;游戏圈这回真是被AI抄家了。&#xff08;doge&#xff09; 这两天&#xff0c;一个ID名为**「快递员」**的神秘游戏账号引起全网围观。 51小时高强度排位&#xff0c;胜率一度逼近93%&#xff0c;直接碾压式登顶韩服LOL。 相关词条更是直冲热搜第一&…

Mastercam许可管理入门指南

在制造业中,Mastercam以其卓越的数控编程和加工功能成为行业中的佼佼者。然而,对于许多新用户或初次接触Mastercam的用户来说,许可管理可能是一个陌生的领域。本文旨在为您提供一份Mastercam许可管理的入门指南,帮…

【深度解析】2025大模型架构内卷升级!DeepSeek、Mistral、NVIDIA最新模型技术全攻略,小白也能看懂的LLM进化史

自最初的 GPT 架构被提出以来&#xff0c;已经过去了七年。乍一看&#xff0c;从 2019 年的 GPT-2 回顾&#xff0c;再展望 2024–2025 年的 DeepSeek V3 和 Llama 4&#xff0c;人们或许会惊讶地发现&#xff0c;这些模型在结构上依然高度相似。 比较不同的大语言模型&#x…

如何快速掌握PvZ Toolkit:游戏修改的终极指南

如何快速掌握PvZ Toolkit&#xff1a;游戏修改的终极指南 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 还在为植物大战僵尸中的资源不足而烦恼吗&#xff1f;PvZ Toolkit作为植物大战僵尸PC版的终…

油门刹车来回切换的ACC系统到底咋做的?今天咱们直接开撸Simulink+CarSim联合仿真。注意看这个PID控制模块的代码,老司机都爱这么玩

ACC自适应巡航控制模型simulink模型&#xff0b;carsim设置 可选购模型说明文件和操作说明&#xff08;联系前请明确需求知识类商品出售不退&#xff09;function [acc_cmd, mode_flag] ACC_Controller(v_ego, v_set, gap_actual, gap_target)persistent integral_error;if is…

[USACO09OPEN] Work Scheduling G

[USACO09OPEN] Work Scheduling G 依旧糖的要死 题目大意 总共 \(N\) 项工作,每个工作两个参数 \(D_i\)(截至日期) 和 \(P_i\)(所获利润),时间 \(0\) 开始,总共有 \(10^9\) 个时间单位。他目前可以从 \(N\) 项工…

救命!制造业AI Agent这么强?架构拆解+实战案例+ROI计算,一篇搞定!

双轨价值&#xff1a;为开发者解析Agent架构&#xff0c;为企业主量化投资回报 引言&#xff1a;制造业的认知革命 当AI从“感知”走向“决策”&#xff0c;AI Agent&#xff08;人工智能代理&#xff09;正成为智能工厂的“超级大脑”。它不再只是识别缺陷&#xff0c;而是理…