第二次运行ACPI!ACPIBuildProcessGenericList函数ACPI!AcpiBuildRunMethodList链表内有10个节点

第二次运行ACPI!ACPIBuildProcessGenericList函数ACPI!AcpiBuildRunMethodList链表内有10个节点

acpi!AcpiBuildQueueList链表没有节点。

所以要运行ACPI!ACPIBuildProcessRunMethodPhaseRecurse函数10次,

不一定每次都调用ACPI!ACPIBuildRunMethodRequest,

有子节点的就调用ACPI!ACPIBuildRunMethodRequest函数。

acpi!AcpiBuildQueueList链表第一个节点是PCI0,有79个子节点。会向acpi!AcpiBuildQueueList链表添加79个二级节点。

第二个节点是BAT1 ,没有子节点。

第3个节点是BAT2 ,没有子节点。

第4个节点是ACAD ,没有子节点。

第5个节点是SLPB ,没有子节点。

第6个节点是CP00 ,没有子节点。

第7个节点是LID ,没有子节点。

第8个节点是NVD 有64个子节点,会向acpi!AcpiBuildQueueList链表添加64个二级节点。

第9个节点是CP01 ,没有子节点。

第10个节点是ACPI\FixedButton,没有子节点。

总结,所有二级节点都会被添加到acpi!AcpiBuildQueueList链表。没有处理三级节点。

Scope (_SB)

{

dsdt.dsl:206: Device (PCI0)

dsdt.dsl:1767: Device (AGP)

dsdt.dsl:1772: Device (ISA)

dsdt.dsl:1775: Device (MBRD)

dsdt.dsl:1928: Device (DMAC)

dsdt.dsl:1956: Device (PIC)

0: kd> t

Breakpoint 2 hit

eax=f743b870 ebx=80afae90 ecx=f743b898 edx=89906af0 esi=f743b898 edi=00000000

eip=f73fb8c4 esp=f789ef88 ebp=f789eff4 iopl=0 nv up ei ng nz na pe cy

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000287

ACPI!ACPIBuildProcessGenericList:

f73fb8c4 55 push ebp

0: kd> kc

00 ACPI!ACPIBuildProcessGenericList

01 ACPI!ACPIBuildDeviceDpc

02 nt!KiRetireDpcList

03 nt!KiDispatchInterrupt

WARNING: Frame IP not in any known module. Following frames may be wrong.

04 0x0

0: kd> dv

ListEntry = 0xf743b870 [ 0x89906d70 - 0x89906aa0 ]

DispatchTable = 0xf74380e8

tempEntry = 0xf73fb8c4 [ 0x83ec8b55 - 0x4d8b0cec ]

allWorkComplete = 0x00 ''

buildFunction = 0x00000000

相关推荐
sitelist3 小时前
处理完ACPI!AcpiBuildRunMethodList链表后返回要检查acpi!AcpiBuildQueueList链表不空运行continue继续循环
runmethodlist·buildqueuelist