ACPI!ACPIWorker函数中的acpi!AmlisuppCompletePassive函数主要作用就是设置事件,让主线程知道结果--非常重要acpi异步调用机制
1: kd> g
Breakpoint 6 hit
eax=00000000 ebx=899ae2f8 ecx=00000100 edx=8996d118 esi=00000000 edi=00000000
eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
hal!HalGetBusDataByOffset:
804f25ee 55 push ebp
1: kd> dv
BusDataType = PCIConfiguration (0n4)
BusNumber = 0
SlotNumber = 0x11
Buffer = 0x895c7e44
Offset = 0
Length = 4
bus = struct _BUS_HANDLER
1: kd> kc
#
00 hal!HalGetBusDataByOffset
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> gu
eax=00000004 ebx=899ae2f8 ecx=00000000 edx=00000000 esi=00000000 edi=00000000
eip=f740d8c7 esp=f791abf8 ebp=f791ac48 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!PciConfigSpaceHandlerWorker+0x29b:
f740d8c7 8bf0 mov esi,eax
1: kd> db 0x895c7e44
895c7e44 ad 15 90 07 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...
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 274647641 Ticks: 3 (0:00:00:00.046)
Context Switch Count 62 IdealProcessor: 1
UserTime 00:00:00.000
KernelTime 00:00:00.062
Stack Init f78f3000 Current f78f2c4c Base f78f3000 Limit f78f0000 Call 00000000
Priority 12 BasePriority 12 PriorityDecrement 0 IoPriority 0 PagePriority 0
ChildEBP RetAddr