hal!HalGetBusDataByOffset函数分析得到Device (PE40)PCI设备空间前4个字节不是0xFFFF说明PCI设备存在--非常重要

hal!HalGetBusDataByOffset函数分析得到Device (PE40)PCI设备空间前4个字节不是0xFFFF说明PCI设备存在--非常重要

第一部分:参考:

PCI0设备扩展下的实际建立的子设备扩展共9+4*8=41个--重要中间结果--说明这41个设备存在

dsdt.dsl:1767: Device (AGP) 0x10000 "PCI\VEN_8086&DEV_7191&SUBSYS_00000000&REV_01\3&61aaa01&0&08" 1

dsdt.dsl:1772: Device (ISA) 0x70000 "PCI\VEN_8086&DEV_7110&SUBSYS_00000000&REV_08\3&61aaa01&0&38"

dsdt.dsl:2272: Device (PWR) 0x00070003

dsdt.dsl:2284: Device (USB) 0x00070002

dsdt.dsl:2294: Device (IDE) 0x00070001 "PCI\VEN_8086&DEV_7111&SUBSYS_197615AD&REV_01\3&61aaa01&0&39"

dsdt.dsl:5026: Device (EXPL) "ACPI\PNP0C02\4"

dsdt.dsl:5099: Device (DMAR) "ACPI\PNP0C02"

dsdt.dsl:5134: Device (VMGC) "ACPI\VMW0001"

p2p0 110000 "PCI\VEN_15AD&DEV_0790&SUBSYS_00000000&REV_02\3&61aaa01&0&88" 2

p2p1 120000

p2p2 130000

p2p3 140000

Device (PE40) 150000 "PCI\VEN_15AD&DEV_07A0&SUBSYS_00000000&REV_01\3&61aaa01&0&A8" 3

Device (PE50) 160000 "PCI\VEN_15AD&DEV_07A0&SUBSYS_00000000&REV_01\3&61aaa01&0&B0" b

Device (PE60) 170000 "PCI\VEN_15AD&DEV_07A0&SUBSYS_00000000&REV_01\3&61aaa01&0&B8" 13

Device (PE70) 180000 "PCI\VEN_15AD&DEV_07A0&SUBSYS_00000000&REV_01\3&61aaa01&0&C0" 1b

第二部分:

第5个:PE40是PCI设备

Device (PE40)

{

Name (_ADR, 0x00150000) // _ADR: Address

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=899bf520 ecx=00000100 edx=89946068 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 = 0x15

Buffer = 0x898eee44

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

Breakpoint 53 hit

eax=00000004 ebx=899bf520 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 0x898eee44

898eee44 ad 15 a0 07 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

898eee54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

第6个:PE50是PCI设备

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=89900e88 ecx=00000100 edx=89946910 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 = 0x16

Buffer = 0x898ece44

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

Breakpoint 53 hit

eax=00000004 ebx=89900e88 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 0x898ece44

898ece44 ad 15 a0 07 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

898ece54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

898ece64 71 9b 41 f7 b4 69 94 89-64 b1 8e 89 54 45 52 4d q.A..i..d...TERM

898ece74 34 00 00 00 01 00 00 00-34 7a 42 f7 33 6a 94 89 4.......4zB.3j..

898ece84 00 00 00 00 00 00 00 00-10 93 43 f7 00 00 00 00 ..........C.....

898ece94 01 00 00 00 02 00 00 00-64 b1 8e 89 1c b1 8e 89 ........d.......

898ecea4 54 45 52 4d 34 00 00 00-01 00 00 00 34 7a 42 f7 TERM4.......4zB.

898eceb4 32 6a 94 89 00 00 00 00-00 00 00 00 70 91 43 f7 2j..........p.C.

第7个:PE60是PCI设备

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=89900dc8 ecx=00000100 edx=899471d8 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 = 0x17

Buffer = 0x898eae44

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

windbg> .open -a fffffffff7407433

1: kd> gu

Breakpoint 53 hit

eax=00000004 ebx=89900dc8 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 0x898eae44

898eae44 ad 15 a0 07 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

898eae54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

898eae64 71 9b 41 f7 7c 72 94 89-64 91 8e 89 54 45 52 4d q.A.|r..d...TERM

898eae74 34 00 00 00 01 00 00 00-34 7a 42 f7 fb 72 94 89 4.......4zB..r..

898eae84 00 00 00 00 00 00 00 00-10 93 43 f7 00 00 00 00 ..........C.....

898eae94 01 00 00 00 02 00 00 00-64 91 8e 89 1c 91 8e 89 ........d.......

898eaea4 54 45 52 4d 34 00 00 00-01 00 00 00 34 7a 42 f7 TERM4.......4zB.

898eaeb4 fa 72 94 89 00 00 00 00-00 00 00 00 70 91 43 f7 .r..........p.C.

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> bp acpi!runcontext

breakpoint 39 redefined

1: kd> g

Breakpoint 45 hit

eax=00000000 ebx=f743a948 ecx=f743a948 edx=00002700 esi=89901000 edi=89902fe4

eip=f741d82f esp=f791ad14 ebp=f791ad34 iopl=0 nv up ei ng nz na pe nc

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

ACPI!RunContext+0x11f:

f741d82f ff570c call dword ptr [edi+0Ch] ds:0023:89902ff0={ACPI!ProcessEvalObj (f741ef2b)}

1: kd> bp ACPI!ACPIGetWorkerForInteger

1: kd> g

Breakpoint 62 hit

eax=00000049 ebx=899b00ac ecx=8997e000 edx=00002707 esi=89901000 edi=899bf4a8

eip=f7407364 esp=f791acdc ebp=f791ad10 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:

f7407364 55 push ebp

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 = 0x899b00ac

Status = 0n0

Result = 0x899bf4d4

Context = 0x899bf4a8

freeData = 0x00 ''

1: kd> db 0x899b00ac

899b00ac 68 00 9b 89 f0 00 9b 89-ac ff 9a 89 00 00 00 00 h...............

899b00bc 5f 42 42 4e 30 f3 9a 89-68 00 9b 89 00 00 01 00 _BBN0...h.......

899b00cc 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

899b00dc 00 00 00 00 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...

899b00ec 00 f0 9a 89 ac 00 9b 89-90 01 9b 89 ac ff 9a 89 ................

899b00fc 00 00 00 00 5f 41 44 52-30 f3 9a 89 ac 00 9b 89 ...._ADR0.......

899b010c 00 00 01 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

899b011c 00 00 00 00 00 00 00 00-00 00 00 00 48 4f 52 47 ............HORG

1: kd> dt ACPI_GET_REQUEST 0x899bf4a8

+0x000 Flags : 0x48040002

+0x000 UFlags : __unnamed

+0x004 ObjectID : 0x4e42425f

+0x008 ListEntry : _LIST_ENTRY [ 0x89900e18 - 0x898a81f8 ]

+0x010 DeviceExtension : (null)

+0x014 AcpiObject : 0x899affac _NSObj

+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0

+0x01c CallBackContext : 0x89859528 Void

+0x020 Buffer : 0x89859544 -> (null)

+0x024 BufferSize : (null)

+0x028 Status : 0n0

+0x02c ResultData : _ObjData

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 = 0x899b00ac

Status = 0n0

Result = 0x00000000

Context = 0x89859528

buffer = unsigned char [64] ""

1: kd> dt GET_ADDRESS_CONTEXT 0x89859528

ACPI!GET_ADDRESS_CONTEXT

+0x000 PciObject : 0x8994777c _NSObj

+0x004 Bus : 0x899c0f80 ""

+0x008 Slot : 0x899c0f7c _PCI_SLOT_NUMBER

+0x00c ParentBus : 0 ''

+0x010 ParentSlot : _PCI_SLOT_NUMBER

+0x014 Flags : 0x2108

+0x018 Address : 0x180000

+0x01c BaseBusNumber : 0

+0x020 RunCompletion : 0n1

+0x024 CompletionRoutine : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker+0

+0x028 CompletionContext : 0x899c0f48 Void

#define PCISUPP_CHECKED_BBN 0x2000

#define PCISUPP_GOT_SLOT_INFO 0x100

#define PCISUPP_CHECKED_ADR 8

1: kd> kc

00 ACPI!PciConfigSpaceHandlerWorker

01 ACPI!GetPciAddressWorker

02 ACPI!ACPIGetWorkerForInteger

03 ACPI!AsyncCallBack

04 ACPI!RunContext

05 ACPI!DispatchCtxtQueue

06 ACPI!StartTimeSlicePassive

07 ACPI!ACPIWorker

08 nt!PspSystemThreadStartup

09 nt!KiThreadStartup

1: kd> dv

AcpiObject = 0x899b00ac

CompletionStatus = 0n0

Result = 0x00000000

Context = 0x899c0f48

1: kd> dt PCI_CONFIG_STATE 0x899c0f48

ACPI!PCI_CONFIG_STATE

+0x000 AccessType : 0

+0x004 OpRegion : 0x89947aa0 _NSObj

+0x008 Address : 0

+0x00c Size : 4

+0x010 Data : 0x898e8e44 -> 0

+0x014 Context : 0

+0x018 CompletionHandler : 0xf7420914 Void

+0x01c CompletionContext : 0x898e70ac Void

+0x020 PciObj : 0x8994777c _NSObj

+0x024 ParentObj : (null)

+0x028 CompletionHandlerType : 0

+0x02c Flags : 0x1100

+0x030 RunCompletion : 0n1

+0x034 Slot : _PCI_SLOT_NUMBER

+0x038 Bus : 0 ''

+0x039 IsPciDeviceResult : 0 ''

1: kd> u 0xf7420914

ACPI!RestartCtxtCallback [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 401]:

f7420914 55 push ebp

f7420915 8bec mov ebp,esp

f7420917 56 push esi

f7420918 8b7508 mov esi,dword ptr [ebp+8]

f742091b 57 push edi

f742091c 6a01 push 1

f742091e bf603f43f7 mov edi,offset ACPI!`string' (f7433f60)

f7420923 57 push edi

1: kd> db 0x8994777c

8994777c b4 6e 94 89 44 80 94 89-ac ff 9a 89 c0 77 94 89 .n..D........w..

8994778c 50 45 37 30 30 f3 9a 89-38 77 94 89 00 00 06 00 PE700...8w......

8994779c 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

899477ac d8 f7 93 89 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...

899477bc 00 20 94 89 20 7c 94 89-64 78 94 89 7c 77 94 89 . .. |..dx..|w..

899477cc 00 00 00 00 5f 41 44 52-30 f3 9a 89 7c 77 94 89 ...._ADR0...|w..

899477dc 00 00 01 00 00 00 00 00-00 00 18 00 00 00 00 00 ................

899477ec 00 00 00 00 00 00 00 00-00 00 00 00 48 50 4b 47 ............HPKG

1: kd> dt _PCI_SLOT_NUMBER 0x899c0f7c -r

hal!_PCI_SLOT_NUMBER

+0x000 u : __unnamed

+0x000 bits : __unnamed

+0x000 DeviceNumber : 0y11000 (0x18)

+0x000 FunctionNumber : 0y000

+0x000 Reserved : 0y000000000000000000000000 (0)

+0x000 AsULONG : 0x18

Device (PE70)

{

Name (_ADR, 0x00180000) // _ADR: Address

第8个:PE70是PCI设备

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=899c0f48 ecx=00000100 edx=89947aa0 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 = 0x18

Buffer = 0x898e8e44

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

Breakpoint 53 hit

eax=00000004 ebx=899c0f48 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 0x898e8e44

898e8e44 ad 15 a0 07 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

898e8e54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

898e8e64 71 9b 41 f7 44 7b 94 89-64 71 8e 89 54 45 52 4d q.A.D{..dq..TERM

898e8e74 34 00 00 00 01 00 00 00-34 7a 42 f7 c3 7b 94 89 4.......4zB..{..

898e8e84 00 00 00 00 00 00 00 00-10 93 43 f7 00 00 00 00 ..........C.....

898e8e94 01 00 00 00 02 00 00 00-64 71 8e 89 1c 71 8e 89 ........dq...q..

898e8ea4 54 45 52 4d 34 00 00 00-01 00 00 00 34 7a 42 f7 TERM4.......4zB.

898e8eb4 c2 7b 94 89 00 00 00 00-00 00 00 00 70 91 43 f7 .{..........p.C.

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=899ae8e8 ecx=00000100 edx=89948368 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 = 0x19

Buffer = 0x898e6e44

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> kv

ChildEBP RetAddr Args to Child

00 f791abd8 f740d8c7 00000004 00000000 00000019 hal!HalGetBusDataByOffset (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halacpi\pmbus.c @ 165]

01 f791ac48 f740d0d2 899b00ac 00000000 00000000 ACPI!PciConfigSpaceHandlerWorker+0x29b (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 708]

02 f791acb0 f7407433 899b00ac 00000000 00000000 ACPI!GetPciAddressWorker+0x1e8 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1207]

03 f791acd8 f741f89b 899b00ac 00000000 89900e3c ACPI!ACPIGetWorkerForInteger+0xcf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 4814]

04 f791ad10 f741d905 f7407364 00000000 f743a934 ACPI!AsyncCallBack+0xe7 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sync.c @ 81]

05 f791ad34 f742042d 00000000 f7433d3c f743a928 ACPI!RunContext+0x1f5 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\ctxt.c @ 649]

06 f791ad4c f74204ec f743a950 f743b318 f743a9b8 ACPI!DispatchCtxtQueue+0xaf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 150]

07 f791ad64 f74133c5 f743a928 00000000 89981ca0 ACPI!StartTimeSlicePassive+0x57 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 107]

08 f791adac 80d391f0 00000000 00000000 00000000 ACPI!ACPIWorker+0xbf (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\worker.c @ 302]

09 f791addc 80b00d52 f7413306 00000000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]

0a 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]

1: kd> bp f742042d

1: kd> gu

Breakpoint 53 hit

eax=00000002 ebx=899ae8e8 ecx=00000000 edx=00000002 esi=00000000 edi=00000000

eip=f740d8c7 esp=f791abf8 ebp=f791ac48 iopl=0 nv up ei ng nz na po cy

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

ACPI!PciConfigSpaceHandlerWorker+0x29b:

f740d8c7 8bf0 mov esi,eax

1: kd> db 0x898e6e44

898e6e44 ff ff 00 00 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

898e6e54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

898e6e64 71 9b 41 f7 0c 84 94 89-64 51 8e 89 54 45 52 4d q.A.....dQ..TERM

898e6e74 34 00 00 00 01 00 00 00-34 7a 42 f7 8b 84 94 89 4.......4zB.....

898e6e84 00 00 00 00 00 00 00 00-10 93 43 f7 00 00 00 00 ..........C.....

898e6e94 01 00 00 00 02 00 00 00-64 51 8e 89 1c 51 8e 89 ........dQ...Q..

898e6ea4 54 45 52 4d 34 00 00 00-01 00 00 00 34 7a 42 f7 TERM4.......4zB.

898e6eb4 8a 84 94 89 00 00 00 00-00 00 00 00 70 91 43 f7 ............p.C.

1: kd> g

Breakpoint 65 hit

eax=00008004 ebx=8997c000 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

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

}

第三部分:

下面是完整的对设备Device (PE90)的处理

Device (PE90)

{

Name (_ADR, 0x001A0000) // _ADR: Address

1: kd> g

Breakpoint 39 hit

eax=898fa010 ebx=898fa000 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 = 0x898fa000

pctxtSave = 0xf741d711

pkthSave = 0x00000008

rc = 0n-1987076096

1: kd> g

Breakpoint 45 hit

eax=00000000 ebx=f743a948 ecx=f743a948 edx=00002700 esi=898fa000 edi=898fbfe4

eip=f741d82f esp=f791ad14 ebp=f791ad34 iopl=0 nv up ei ng nz na pe nc

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

ACPI!RunContext+0x11f:

f741d82f ff570c call dword ptr [edi+0Ch] ds:0023:898fbff0={ACPI!ProcessEvalObj (f741ef2b)}

1: kd> g

Breakpoint 54 hit

eax=00000000 ebx=f743a948 ecx=00000000 edx=00000000 esi=898fa000 edi=00008004

eip=f741d900 esp=f791ad18 ebp=f791ad34 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!RunContext+0x1f0:

f741d900 e8af1e0000 call ACPI!AsyncCallBack (f741f7b4)

1: kd> g

Breakpoint 40 hit

eax=00000000 ebx=f743a948 ecx=00000000 edx=00000000 esi=898fa000 edi=00008004

eip=f741f7b4 esp=f791ad14 ebp=f791ad34 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!AsyncCallBack:

f741f7b4 55 push ebp

1: kd> g

Breakpoint 62 hit

eax=00000057 ebx=899b00ac ecx=8997e000 edx=00002707 esi=898fa000 edi=899c0f90

eip=f7407364 esp=f791acdc ebp=f791ad10 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:

f7407364 55 push ebp

1: kd> g

Breakpoint 63 hit

eax=f740ceea ebx=00000000 ecx=00000001 edx=00002707 esi=899c0f90 edi=899c0fbc

eip=f740ceea esp=f791acb4 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!GetPciAddressWorker:

f740ceea 55 push ebp

1: kd> g

Breakpoint 48 hit

eax=00000000 ebx=00000000 ecx=00002000 edx=00002707 esi=898594b8 edi=00000000

eip=f740d62c esp=f791ac4c ebp=f791acb0 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!PciConfigSpaceHandlerWorker:

f740d62c 55 push ebp

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=899ae5f8 ecx=00000100 edx=89948c30 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 = 0x1a

Buffer = 0x898e4e44

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

Breakpoint 53 hit

eax=00000002 ebx=899ae5f8 ecx=00000000 edx=00000002 esi=00000000 edi=00000000

eip=f740d8c7 esp=f791abf8 ebp=f791ac48 iopl=0 nv up ei ng nz na po cy

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

ACPI!PciConfigSpaceHandlerWorker+0x29b:

f740d8c7 8bf0 mov esi,eax

1: kd> db 0x898e4e44

898e4e44 ff ff 00 00 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

898e4e54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

898e4e64 71 9b 41 f7 d4 8c 94 89-64 31 8e 89 54 45 52 4d q.A.....d1..TERM

898e4e74 34 00 00 00 01 00 00 00-34 7a 42 f7 53 8d 94 89 4.......4zB.S...

898e4e84 00 00 00 00 00 00 00 00-10 93 43 f7 00 00 00 00 ..........C.....

898e4e94 01 00 00 00 02 00 00 00-64 31 8e 89 1c 31 8e 89 ........d1...1..

898e4ea4 54 45 52 4d 34 00 00 00-01 00 00 00 34 7a 42 f7 TERM4.......4zB.

898e4eb4 52 8d 94 89 00 00 00 00-00 00 00 00 70 91 43 f7 R...........p.C.

1: kd> g

Breakpoint 58 hit

eax=00000002 ebx=899ae5f8 ecx=00000000 edx=00000002 esi=00000002 edi=00000000

eip=f740d8e4 esp=f791abf8 ebp=f791ac48 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!PciConfigSpaceHandlerWorker+0x2b8:

f740d8e4 33f6 xor esi,esi

1: kd> g

Breakpoint 64 hit

eax=00000002 ebx=899ae5f8 ecx=00000000 edx=00000002 esi=00000000 edi=00000000

eip=f7420914 esp=f791abf0 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!RestartCtxtCallback:

f7420914 55 push ebp

1: kd> g

Breakpoint 65 hit

eax=00008004 ebx=898fa000 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

1: kd> kc

00 ACPI!DispatchCtxtQueue

01 ACPI!StartTimeSlicePassive

02 ACPI!ACPIWorker

03 nt!PspSystemThreadStartup

04 nt!KiThreadStartup