news 2026/4/16 13:44:06

ACPI!IsNsobjPciBus看event从主线程到异步线程返回部分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ACPI!IsNsobjPciBus看event从主线程到异步线程返回部分

ACPI!IsNsobjPciBus看event从主线程到异步线程返回部分

第一部分:

1: kd> kc
#
00 ACPI!AmlisuppCompletePassive
01 ACPI!IsPciBusAsyncWorker
02 ACPI!PciConfigSpaceHandlerWorker
03 ACPI!GetPciAddressWorker
04 ACPI!GetPciAddressWorker
05 ACPI!ACPIGetWorkerForInteger
06 ACPI!AsyncCallBack
07 ACPI!RunContext
08 ACPI!DispatchCtxtQueue
09 ACPI!StartTimeSlicePassive
0a ACPI!ACPIWorker
0b nt!PspSystemThreadStartup
0c nt!KiThreadStartup
1: kd> kv
# ChildEBP RetAddr Args to Child
00 f791ab54 f740dcce 8996dc38 00000000 00000000 ACPI!AmlisuppCompletePassive+0x32 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\amlisupp.c @ 210]
01 f791ab78 f740d903 8996dc38 00000000 00000000 ACPI!IsPciBusAsyncWorker+0x21c (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1815]
02 f791abe0 f740d0d2 899b00ac 00000000 00000000 ACPI!PciConfigSpaceHandlerWorker+0x2d7 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 873]
03 f791ac48 f740d0d2 899b00ac 00000000 00000000 ACPI!GetPciAddressWorker+0x1e8 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1207]
04 f791acb0 f7407433 899b00ac 00000000 00000000 ACPI!GetPciAddressWorker+0x1e8 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1207]
05 f791acd8 f741f89b 899b00ac 00000000 899ae324 ACPI!ACPIGetWorkerForInteger+0xcf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 4814]
06 f791ad10 f741d905 f7407364 00000000 f743a934 ACPI!AsyncCallBack+0xe7 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sync.c @ 81]
07 f791ad34 f742042d 00000000 f7433d3c f743a928 ACPI!RunContext+0x1f5 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\ctxt.c @ 649]
08 f791ad4c f74204ec f743a950 f743b318 f743a9b8 ACPI!DispatchCtxtQueue+0xaf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 150]
09 f791ad64 f74133c5 f743a928 00000000 89981ca0 ACPI!StartTimeSlicePassive+0x57 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 107]
0a f791adac 80d391f0 00000000 00000000 00000000 ACPI!ACPIWorker+0xbf (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\worker.c @ 302]
0b f791addc 80b00d52 f7413306 00000000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]
0c 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]
1: kd> dv
AcpiObject = 0x8996dc38
Status = 0n0
Result = 0x00000000
Context = 0xf78f2cf4

0xf78f2cf4 AMLISUPP_CONTEXT_PASSIVE
0x899c5218 IS_PCI_BUS_STATE
0x89909b70 IS_PCI_DEVICE_STATE
89968240 ACPI_GET_REQUEST
0x895c6000 _ctxt
f743a928 _ctxtq


1: kd> dt AMLISUPP_CONTEXT_PASSIVE 0xf78f2cf4
ACPI!AMLISUPP_CONTEXT_PASSIVE
+0x000 Event : _KEVENT
+0x010 Status : 0n-1073741275
1: kd> dx -id 0,0,899a2278 -r1 (*((ACPI!_KEVENT *)0xf78f2cf4))
(*((ACPI!_KEVENT *)0xf78f2cf4)) [Type: _KEVENT]
[+0x000] Header [Type: _DISPATCHER_HEADER]
1: kd> dx -id 0,0,899a2278 -r1 (*((ACPI!_DISPATCHER_HEADER *)0xf78f2cf4))
(*((ACPI!_DISPATCHER_HEADER *)0xf78f2cf4)) [Type: _DISPATCHER_HEADER]
[+0x000] Type : 0x1 [Type: unsigned char]
[+0x001] Absolute : 0x56 [Type: unsigned char]
[+0x002] Size : 0x4 [Type: unsigned char]
[+0x003] Inserted : 0x89 [Type: unsigned char]
[+0x003] DebugActive : 0x89 [Type: unsigned char]
[+0x000] Lock : -1996204543 [Type: long]
[+0x004]SignalState : 0[Type: long]
[+0x008] WaitListHead [Type: _LIST_ENTRY]
1: kd> dx -id 0,0,899a2278 -r1 (*((ACPI!_LIST_ENTRY *)0xf78f2cfc))
(*((ACPI!_LIST_ENTRY *)0xf78f2cfc)) [Type: _LIST_ENTRY]
[+0x000]Flink : 0x8999ce40[Type: _LIST_ENTRY *]
[+0x004] Blink : 0x8999ce40 [Type: _LIST_ENTRY *]

1: kd> dt kthread 0x8999ce40-a0
nt!KTHREAD
+0x000 Header : _DISPATCHER_HEADER
+0x010 MutantListHead : _LIST_ENTRY [ 0x8999cdb0 - 0x8999cdb0 ]
+0x018 InitialStack : 0xf78f3000 Void
+0x01c StackLimit : 0xf78f0000 Void
+0x020 KernelStack : 0xf78f2c4c Void
+0x024 ThreadLock : 0
+0x028 ContextSwitches : 0x40
+0x02c State : 0x5 ''
+0x02d NpxState : 0xa ''
+0x02e WaitIrql : 0 ''
+0x02f WaitMode : 0 ''
+0x030 Teb : (null)
+0x034 ApcState : _KAPC_STATE
+0x04c ApcQueueLock : 0
+0x050 WaitStatus : 0n0
+0x054 WaitBlockList : 0x8999ce40 _KWAIT_BLOCK
+0x058 Alertable : 0 ''
+0x059 WaitNext : 0 ''
+0x05a WaitReason : 0 ''
+0x05b Priority : 12 ''
+0x05c EnableStackSwap : 0x1 ''
+0x05d SwapBusy : 0 ''
+0x05e Alerted : [2] ""
+0x060 WaitListEntry : _LIST_ENTRY [ 0x0 - 0x8999c080 ]
+0x060 SwapListEntry : _SINGLE_LIST_ENTRY
+0x068 Queue : 0x80bf5cbc _KQUEUE
+0x06c WaitTime : 0x105eca93
+0x070 KernelApcDisable : 0n0
+0x072 SpecialApcDisable : 0n0
+0x070 CombinedApcDisable : 0
+0x078 Timer : _KTIMER
+0x0a0 WaitBlock : [4] _KWAIT_BLOCK

1: kd> !thread 0x8999ce40-a0
THREAD 8999cda0 Cid 0004.0050 Teb: 00000000 Win32Thread: 00000000 WAIT: (Executive) KernelMode Non-Alertable
f78f2cf4 SynchronizationEvent
Not impersonating
DeviceMap e10003d8
Owning Process 899a2278 Image: System
Attached Process N/A Image: N/A
Wait Start TickCount 274647699 Ticks: 0
Context Switch Count 64 IdealProcessor: 1
UserTime 00:00:00.000
KernelTime 00:00:00.078
Stack Init f78f3000 Current f78f2c4c Base f78f3000 Limit f78f0000 Call 00000000
Priority 12 BasePriority 12 PriorityDecrement 0 IoPriority 0 PagePriority 0
ChildEBP RetAddr Args to Child
f78f2c64 80a440eb 8999ce40 8999cda0 f78f2cf4 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4]) [d:\srv03rtm\base\ntos\ke\i386\ctxswap.asm @ 139]
f78f2c9c 80a35ea9 00000000 804edc6c 00000000 nt!KiSwapThread+0x627 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\srv03rtm\base\ntos\ke\thredsup.c @ 2000]
f78f2cd0 f74486af f78f2cf4 00000000 00000000nt!KeWaitForSingleObject+0x2d7 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ke\wait.c @ 1161]
f78f2d0c f744882d 8996e010 02000000 89968ea0ACPI!IsNsobjPciBus+0x7f(FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1987]
f78f2d48 f74413bd 8996cd78 00000001 8999cda0 ACPI!EnableDisableRegions+0xbd (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 2227]
f78f2d80 80af2bb9 895d8900 00000000 8999cda0 ACPI!ACPIFilterIrpStartDeviceWorker+0x163 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\filter.c @ 1696]
f78f2dac 80d391f0 89968eb4 00000000 00000000 nt!ExpWorkerThread+0x10f (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ex\worker.c @ 1153]
f78f2ddc 80b00d52 80af2aaa 00000001 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]


1: kd> kv
# ChildEBP RetAddr Args to Child
00 f791ab54 f740dcce 8996dc38 00000000 00000000 ACPI!AmlisuppCompletePassive+0x32 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\amlisupp.c @ 210]
01 f791ab78 f740d903 8996dc38 00000000 00000000 ACPI!IsPciBusAsyncWorker+0x21c (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1815]
02 f791abe0 f740d0d2 899b00ac 00000000 00000000 ACPI!PciConfigSpaceHandlerWorker+0x2d7 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 873]
03 f791ac48 f740d0d2 899b00ac 00000000 00000000 ACPI!GetPciAddressWorker+0x1e8 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1207]
04 f791acb0 f7407433 899b00ac 00000000 00000000 ACPI!GetPciAddressWorker+0x1e8 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1207]
05 f791acd8 f741f89b 899b00ac 00000000 899ae324 ACPI!ACPIGetWorkerForInteger+0xcf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 4814]
06 f791ad10 f741d905 f7407364 00000000 f743a934 ACPI!AsyncCallBack+0xe7 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sync.c @ 81]
07 f791ad34 f742042d 00000000 f7433d3c f743a928 ACPI!RunContext+0x1f5 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\ctxt.c @ 649]
08 f791ad4c f74204ec f743a950 f743b318 f743a9b8 ACPI!DispatchCtxtQueue+0xaf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 150]
09 f791ad64 f74133c5 f743a928 00000000 89981ca0 ACPI!StartTimeSlicePassive+0x57 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 107]
0a f791adac 80d391f0 00000000 00000000 00000000 ACPI!ACPIWorker+0xbf (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\worker.c @ 302]
0b f791addc 80b00d52 f7413306 00000000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]
0c 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]
1: kd> bp f740dcce
1: kd> gu
Breakpoint 16 hit
eax=00000000 ebx=00000000 ecx=00000000 edx=80010031 esi=899c5e20 edi=00000103
eip=f740dcce esp=f791ab5c ebp=f791ab78 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!IsPciBusAsyncWorker+0x21c:
f740dcce 83c410 add esp,10h

第二部分:


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 = 0x8996e054
Status = 0n0
Result = 0x00000000
Context = 0x895901f8
buffer = unsigned char [64] "B"
1: kd> dt GET_ADDRESS_CONTEXT 0x895901f8
ACPI!GET_ADDRESS_CONTEXT
+0x000 PciObject : 0x8996e010 _NSObj
+0x004 Bus : 0x89986fc0 ""
+0x008 Slot : 0x89986fbc _PCI_SLOT_NUMBER
+0x00c ParentBus : 0 ''
+0x010 ParentSlot : _PCI_SLOT_NUMBER
+0x014 Flags : 8
+0x018 Address : 0x30000
+0x01c BaseBusNumber : 0
+0x020 RunCompletion : 0n1
+0x024 CompletionRoutine : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker+0
+0x028 CompletionContext :0x89986f88Void
1: kd> db 0x8996e010
8996e010 38 dc 96 89 e8 e3 96 89-78 cd 96 89 54 e0 96 89 8.......x...T...
8996e020 53 34 46 30 30 f3 9a 89-cc df 96 89 00 00 06 00 S4F00...........


0xf78f2cf4 AMLISUPP_CONTEXT_PASSIVE
0x899c5218 IS_PCI_BUS_STATE
0x89909b70 IS_PCI_DEVICE_STATE
89968240 ACPI_GET_REQUEST
0x895c6000 _ctxt
f743a928 _ctxtq

1: kd>dt PCI_CONFIG_STATE 0x89986f88
ACPI!PCI_CONFIG_STATE
+0x000 AccessType : 0
+0x004 OpRegion : 0x89986fc4 _NSObj
+0x008 Address : 0
+0x00c Size : 0x40
+0x010 Data : 0x899c5240 -> 0
+0x014 Context : 0
+0x018 CompletionHandler : 0xf740dab2 Void
+0x01cCompletionContext : 0x899c5218 Void
+0x020 PciObj : 0x8996e010 _NSObj
+0x024 ParentObj : (null)
+0x028 CompletionHandlerType : 1
+0x02c Flags : 0x100
+0x030 RunCompletion : 0n0
+0x034 Slot : _PCI_SLOT_NUMBER
+0x038 Bus : 0 ''
+0x039 IsPciDeviceResult : 0 ''

第三部分:

1: kd> gu
eax=00000103 ebx=00000000 ecx=e71d4552 edx=00002700 esi=89968240 edi=8996826c
eip=f7407433 esp=f791acb8 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+0xcf:
f7407433 83c410 add esp,10h
1: kd> dv
AcpiObject = 0x8996e054
Status = 0n0
Result = 0x8996826c
Context = 0x89968240
freeData = 0x01 ''
1: kd> dt ACPI_GET_REQUEST 0x89968240
+0x000 Flags : 0x48040402
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x5244415f
+0x008 ListEntry : _LIST_ENTRY [ 0x899ae300 - 0xf743b940 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x8996e010 _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x895901f8 Void
+0x020 Buffer : 0x89590210 -> 0x00030000 Void
+0x024 BufferSize : (null)
+0x028 Status : 0n0
+0x02c ResultData : _ObjData


0xf78f2cf4 AMLISUPP_CONTEXT_PASSIVE
0x899c5218 IS_PCI_BUS_STATE
0x89909b70 IS_PCI_DEVICE_STATE
89968240 ACPI_GET_REQUEST
0x895c6000 _ctxt
f743a928 _ctxtq


1: kd> gu
eax=89941640 ebx=8996e054 ecx=1bc90002 edx=1bc80001 esi=895c6000 edi=89968240
eip=f741f89b esp=f791ace0 ebp=f791ad10 iopl=0 nv up ei pl zr na pe cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000247
ACPI!AsyncCallBack+0xe7:
f741f89b 83c420 add esp,20h
1: kd> dv
pctxt = 0xf7407364 不对
rcCtxt = 0n0
pfnAsyncCallBack = 0xf7407364
pdataCallBack = 0x8996826c


1: kd> dt ACPI!_ctxt 0x895c6000
+0x000 dwSig : 0x54585443
+0x004 pbCtxtEnd : 0x895c8000 ""
+0x008 listCtxt : _List
+0x010 listQueue : _List
+0x018 pplistCtxtQueue : (null)
+0x01c plistResources : (null)
+0x020 dwfCtxt : 0x120
+0x024 pnsObj : 0x8996e054 _NSObj
+0x028 pnsScope : 0x8996e054 _NSObj
+0x02c powner : (null)
+0x030 pcall : (null)
+0x034 pnctxt : (null)
+0x038 dwSyncLevel : 0
+0x03c pbOp : (null)
+0x040 Result : _ObjData
+0x054 pfnAsyncCallBack : 0xf7407364 void ACPI!ACPIGetWorkerForInteger+0
+0x058 pdataCallBack : 0x8996826c _ObjData
+0x05c pvContext : 0x89968240 Void +0x05c pvContext : 0x89968240
+0x060 Timer : _KTIMER
+0x088 Dpc : _KDPC
+0x0a8 pheapCurrent : 0x895c60bc _heap
+0x0ac CtxtData : _ctxtdata
+0x0bc LocalHeap : _heap

if (pctxt->dwfCtxt & CTXTF_NEED_CALLBACK)
{
AsyncCallBack(pctxt, rc);

if(pctxt->dwfCtxt & CTXTF_ASYNC_EVAL) pctxt=esi=895c6000 正确的
1: kd> gu
eax=00000000 ebx=f743a948 ecx=1bc90002 edx=1bc80001 esi=895c6000 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:895c6021=01

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 15:52:11

通俗解释模拟电路工作原理:小白也能懂

模拟电路其实不难懂:从声音放大到心率检测,小白也能看明白你有没有想过,为什么手机能听清你说话?耳机里的音乐是怎么“活”起来的?或者,智能手环是如何精准测出你心跳的?这些看似神奇的功能&…

作者头像 李华
网站建设 2026/4/13 3:41:56

UWB技术在机器人领域的创新应用与前景

机器人作为智能化转型的核心载体,在工业自动化、物流配送、公共服务等领域的应用日益广泛。然而,传统机器人在实际部署与运行中仍面临诸多技术瓶颈。近年来,超宽带(UWB)技术凭借其高精度定位、低延迟通信与强抗干扰能力…

作者头像 李华
网站建设 2026/4/15 15:31:41

AI万能分类器优化指南:GPU算力需求与配置

AI万能分类器优化指南:GPU算力需求与配置 1. 背景与技术价值 在现代自然语言处理(NLP)应用中,文本分类是构建智能客服、舆情监控、工单系统和内容推荐的核心能力。传统分类模型依赖大量标注数据进行训练,开发周期长、…

作者头像 李华
网站建设 2026/4/16 11:11:02

FaceFusion人脸融合技术:从基础操作到专业创作的四级能力跃迁

FaceFusion人脸融合技术:从基础操作到专业创作的四级能力跃迁 【免费下载链接】facefusion Next generation face swapper and enhancer 项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion 还在寻找能够完美平衡效率与质量的人脸融合解决方案吗&…

作者头像 李华