Device (P2P0)下的子节点Device (S7F0)不存在

Device (P2P0)下的子节点Device (S7F0)不存在

第0部分:

dsdt.dsl:6096: Device (P2P0)

dsdt.dsl:6306: Device (S1F0)

dsdt.dsl:6338: Device (S2F0)

dsdt.dsl:6370: Device (S3F0)

dsdt.dsl:6402: Device (S4F0)

dsdt.dsl:6434: Device (S5F0)

dsdt.dsl:6466: Device (S6F0)

dsdt.dsl:6498: Device (S7F0)

第0部分A:

Scope (PCI0)

{

Method (PSTA, 2, NotSerialized)

{

Return (And (Arg0, Not (LEqual (Arg1, 0xFFFFFFFF))))

}

第0部分B:

Device (P2P0)

{

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

Name (_HPP, Package (0x04) // _HPP: Hot Plug Parameters

{

0x08,

0x40,

0x01,

0x00

})

Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake

{

0x03,

0x03

})

Method (BSTA, 1, NotSerialized)

{

Return (PSTA (_STA (), Arg0))

}

OperationRegion (REGS, PCI_Config, 0x00, 0x04)

Field (REGS, DWordAcc, NoLock, Preserve)

{

ID, 32

}

Method (_STA, 0, NotSerialized) // _STA: Status

{

Return (And (LEqual (ID, 0x079015AD), 0x0F))

}

第0部分C:

Device (S7F0)

{

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

Name (_SUN, 0x26) // _SUN: Slot User Number

OperationRegion (REGS, PCI_Config, 0x00, 0x04)

Field (REGS, DWordAcc, NoLock, Preserve)

{

ID, 32

}

Method (_STA, 0, NotSerialized) // _STA: Status

{

Return (BSTA (ID))

}

第一部分:

1: kd> be 48

1: kd> g

Breakpoint 48 hit

eax=8996eb98 ebx=89996d68 ecx=897f00ac edx=898a8ef0 esi=8996eb98 edi=898a8f2c

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

f740d62c 55 push ebp

1: kd> dv

AcpiObject = 0x8996eb98

CompletionStatus = 0n0

Result = 0x00000000

Context = 0x898a8ef0

bytesWritten = 0

status = 0n0

interface = 0xf740d62d

oldIrql = 0x89 ''

Complain = 0x00 ''

length = 0

ErrorLogged = 0x00 ''

ACPIName = unsigned short [5]

IllegalPCIOpRegionAddress = unsigned short *[2]

addressBuffer = unsigned short [13]

parent = unsigned char [5] ""

opRegion = unsigned char [5] "hm???"

1: kd> dt PCI_CONFIG_STATE 0x898a8ef0

ACPI!PCI_CONFIG_STATE

+0x000 AccessType : 0

+0x004 OpRegion : 0x8996ecc0 _NSObj

+0x008 Address : 0

+0x00c Size : 4

+0x010 Data : 0x897f1de0 -> 0

+0x014 Context : 0

+0x018 CompletionHandler : 0xf7420914 Void

+0x01c CompletionContext : 0x897f00ac Void

+0x020 PciObj : 0x8996eb98 _NSObj

+0x024 ParentObj : (null)

+0x028 CompletionHandlerType : 0

+0x02c Flags : 0

+0x030 RunCompletion : 0n-1

+0x034 Slot : _PCI_SLOT_NUMBER

+0x038 Bus : 0 ''

+0x039 IsPciDeviceResult : 0 ''

1: kd> dx -id 0,0,899a2278 -r1 ((ACPI!_NSObj *)0x8996ecc0)

((ACPI!_NSObj *)0x8996ecc0) : 0x8996ecc0 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x8996eb98 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x53474552 \[Type: unsigned long

+0x014\] hOwner : 0x899af330 \[Type: void \*

+0x018\] pnsOwnedNext : 0x8996ec20 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dt PCI_CONFIG_STATE 0x898a8ef0

ACPI!PCI_CONFIG_STATE

+0x000 AccessType : 0

+0x004 OpRegion : 0x8996ecc0 _NSObj

+0x008 Address : 0

+0x00c Size : 4

+0x010 Data : 0x897f1de0 -> 0

+0x014 Context : 0

+0x018 CompletionHandler : 0xf7420914 Void

+0x01c CompletionContext : 0x897f00ac Void

+0x020 PciObj : 0x8996eb98 _NSObj

+0x024 ParentObj : (null)

+0x028 CompletionHandlerType : 0

+0x02c Flags : 0

+0x030 RunCompletion : 0n-1

+0x034 Slot : _PCI_SLOT_NUMBER

+0x038 Bus : 0 ''

+0x039 IsPciDeviceResult : 0 ''

1: kd> dx -id 0,0,899a2278 -r1 ((ACPI!_NSObj *)0x8996ecc0)

((ACPI!_NSObj *)0x8996ecc0) : 0x8996ecc0 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x8996eb98 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x53474552 \[Type: unsigned long

+0x014\] hOwner : 0x899af330 \[Type: void \*

+0x018\] pnsOwnedNext : 0x8996ec20 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,899a2278 -r1 ((ACPI!_NSObj *)0x8996eb98)

((ACPI!_NSObj *)0x8996eb98) : 0x8996eb98 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x8996cd78 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x8996ebdc \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x30463753 \[Type: unsigned long

+0x014\] hOwner : 0x899af330 \[Type: void \*

+0x018\] pnsOwnedNext : 0x8996eb54 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x899aa008 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> db 0x8996eb98

8996eb98 c0 e7 96 89 70 ef 96 89-78 cd 96 89 dc eb 96 89 ....p...x.......

8996eba8 53 37 46 30 30 f3 9a 89-54 eb 96 89 00 00 06 00 S7F00...T.......

8996ebb8 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

8996ebc8 08 a0 9a 89 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...

8996ebd8 00 90 96 89 2c ef 96 89-20 ec 96 89 98 eb 96 89 ....,... .......

8996ebe8 00 00 00 00 5f 41 44 52-30 f3 9a 89 98 eb 96 89 ...._ADR0.......

8996ebf8 00 00 01 00 00 00 00 00-00 00 06 00 00 00 00 00 ................

8996ec08 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO

1: kd> db 0x8996cd78

8996cd78 38 cc 96 89 88 4f 97 89-ac ff 9a 89 f0 cd 96 89 8....O..........

8996cd88 50 32 50 30 30 f3 9a 89-38 cc 96 89 00 00 06 00 P2P00...8.......

8996cd98 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

8996cda8 a0 8e 96 89 00 00 00 00-48 4f 52 47 34 00 00 00 ........HORG4...

8996cdb8 00 90 96 89 00 00 00 00-04 00 00 00 02 00 00 00 ................

8996cdc8 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

8996cdd8 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO

8996cde8 44 00 00 00 00 90 96 89-b0 4b 97 89 b4 ce 96 89 D........K......

1: kd> g

Breakpoint 69 hit

eax=00001000 ebx=898a8ef0 ecx=00001000 edx=8996ecc0 esi=00000103 edi=8996ecf0

eip=f740d506 esp=f791abac ebp=f791ac10 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!GetOpRegionScope:

f740d506 55 push ebp

1: kd> kc

00 ACPI!GetOpRegionScope

01 ACPI!PciConfigSpaceHandlerWorker

02 ACPI!PciConfigSpaceHandler

03 ACPI!InternalOpRegionHandler

04 ACPI!AccessBaseField

05 ACPI!AccessFieldData

06 ACPI!ReadFieldObj

07 ACPI!RunContext

08 ACPI!InsertReadyQueue

09 ACPI!RestartCtxtPassive

0a ACPI!ACPIWorker

0b nt!PspSystemThreadStartup

0c nt!KiThreadStartup

1: kd> dv

OpRegion = 0x8996ecc0

CompletionHandler = 0xf740d62c

CompletionContext = 0x898a8ef0

PciObj = 0x8996ecf0

1: kd> g

Breakpoint 70 hit

eax=8996ecc0 ebx=898a8ef0 ecx=8996ecf0 edx=898590d0 esi=00000103 edi=898590f0

eip=f740d44a esp=f791ab90 ebp=f791aba8 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!GetOpRegionScopeWorker:

f740d44a 55 push ebp

1: kd> kc

00 ACPI!GetOpRegionScopeWorker

01 ACPI!GetOpRegionScope

02 ACPI!PciConfigSpaceHandlerWorker

03 ACPI!PciConfigSpaceHandler

04 ACPI!InternalOpRegionHandler

05 ACPI!AccessBaseField

06 ACPI!AccessFieldData

07 ACPI!ReadFieldObj

08 ACPI!RunContext

09 ACPI!InsertReadyQueue

0a ACPI!RestartCtxtPassive

0b ACPI!ACPIWorker

0c nt!PspSystemThreadStartup

0d nt!KiThreadStartup

1: kd> dv

AcpiObject = 0x8996ecc0

Status = 0n0

Result = 0x00000000

Context = 0x898590d0

1: kd> g

Breakpoint 59 hit

eax=898590dc ebx=00000000 ecx=8996eb98 edx=898590d0 esi=898590d0 edi=00000800

eip=f740d3b2 esp=f791ab6c ebp=f791ab8c 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!IsPciDevice:

f740d3b2 55 push ebp

1: kd> kc

00 ACPI!IsPciDevice

01 ACPI!GetOpRegionScopeWorker

02 ACPI!GetOpRegionScope

03 ACPI!PciConfigSpaceHandlerWorker

04 ACPI!PciConfigSpaceHandler

05 ACPI!InternalOpRegionHandler

06 ACPI!AccessBaseField

07 ACPI!AccessFieldData

08 ACPI!ReadFieldObj

09 ACPI!RunContext

0a ACPI!InsertReadyQueue

0b ACPI!RestartCtxtPassive

0c ACPI!ACPIWorker

0d nt!PspSystemThreadStartup

0e nt!KiThreadStartup

1: kd> dv

AcpiObject = 0x8996eb98

CompletionHandler = 0xf740d44a

CompletionContext = 0x898590d0

Result = 0x898590dc ""

1: kd> g

Breakpoint 60 hit

eax=8996eb98 ebx=00000000 ecx=898590dc edx=898590a0 esi=898590d0 edi=898590c8

eip=f740d146 esp=f791ab50 ebp=f791ab68 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!IsPciDeviceWorker:

f740d146 55 push ebp

1: kd> kc

00 ACPI!IsPciDeviceWorker

01 ACPI!IsPciDevice

02 ACPI!GetOpRegionScopeWorker

03 ACPI!GetOpRegionScope

04 ACPI!PciConfigSpaceHandlerWorker

05 ACPI!PciConfigSpaceHandler

06 ACPI!InternalOpRegionHandler

07 ACPI!AccessBaseField

08 ACPI!AccessFieldData

09 ACPI!ReadFieldObj

0a ACPI!RunContext

0b ACPI!InsertReadyQueue

0c ACPI!RestartCtxtPassive

0d ACPI!ACPIWorker

0e nt!PspSystemThreadStartup

0f nt!KiThreadStartup

1: kd> dv

AcpiObject = 0x8996eb98

Status = 0n0

Result = 0x00000000

Context = 0x898590a0

Device (S7F0)

{

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

Name (_SUN, 0x26) // _SUN: Slot User Number

OperationRegion (REGS, PCI_Config, 0x00, 0x04)

Field (REGS, DWordAcc, NoLock, Preserve)

{

ID, 32

}

Method (_STA, 0, NotSerialized) // _STA: Status

{

Return (BSTA (ID))

}

//

// Step 3), check the _ADR.

//

if (!(state->Flags & PCISUPP_CHECKED_ADR)) {

state->Flags |= PCISUPP_CHECKED_ADR;

status = ACPIGetNSAddressAsync(

state->AcpiObject,

IsPciDeviceWorker,

(PVOID)state,

&(state->Adr),

NULL);

if (status == STATUS_PENDING) {

return status;

}

1: kd> g

Breakpoint 71 hit

eax=898590a8 ebx=00000000 ecx=8996eb98 edx=898590a0 esi=898590a0 edi=00000103

eip=f74076b8 esp=f791ab18 ebp=f791ab4c 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!ACPIGet:

f74076b8 55 push ebp

1: kd> kc

00 ACPI!ACPIGet

01 ACPI!IsPciDeviceWorker

02 ACPI!IsPciDevice

03 ACPI!GetOpRegionScopeWorker

04 ACPI!GetOpRegionScope

05 ACPI!PciConfigSpaceHandlerWorker

06 ACPI!PciConfigSpaceHandler

07 ACPI!InternalOpRegionHandler

08 ACPI!AccessBaseField

09 ACPI!AccessFieldData

0a ACPI!ReadFieldObj

0b ACPI!RunContext

0c ACPI!InsertReadyQueue

0d ACPI!RestartCtxtPassive

0e ACPI!ACPIWorker

0f nt!PspSystemThreadStartup

10 nt!KiThreadStartup

1: kd> dv

Target = 0x8996eb98

ObjectID = 0x5244415f

Flags = 0x48040402

SimpleArgument = 0x00000000

SimpleArgumentSize = 0

CallBackRoutine = 0xf740d146

CallBackContext = 0x898590a0

Buffer = 0x898590a8

BufferSize = 0x00000000

completionRoutine = 0xf74076b9

status = 0n1208222722

argument = struct _ObjData

argumentPtr = 0x898590a0

acpiObject = 0x8996eb98

deviceExtension = 0xf791ab4c

async = 0x00 ''

argumentCount = 0x103

1: kd> db f791ab18

f791ab18 9c d2 40 f7 98 eb 96 89-5f 41 44 52 02 04 04 48 ..@....._ADR...H

NTSTATUS

ACPIGet(

IN PVOID Target,

IN ULONG ObjectID,

IN ULONG Flags,

IN PVOID SimpleArgument,

IN ULONG SimpleArgumentSize,

IN PFNACB CallBackRoutine OPTIONAL,

IN PVOID CallBackContext OPTIONAL,

OUT PVOID *Buffer,

OUT ULONG *BufferSize OPTIONAL

)

{

if (async) {

//
// Evaluate the request
//
status = AMLIAsyncEvalObject(

acpiObject,

&(request->ResultData),

argumentCount,

argumentPtr,

completionRoutine,

request

);

1: kd> g

Breakpoint 33 hit

eax=8996ebdc ebx=f743b938 ecx=898f7aec edx=00000000 esi=898f7ac0 edi=898f7ac8

eip=f7415242 esp=f791aabc ebp=f791ab14 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!AMLIAsyncEvalObject:

f7415242 55 push ebp

1: kd> kc

00 ACPI!AMLIAsyncEvalObject

01 ACPI!ACPIGet

02 ACPI!IsPciDeviceWorker

03 ACPI!IsPciDevice

04 ACPI!GetOpRegionScopeWorker

05 ACPI!GetOpRegionScope

06 ACPI!PciConfigSpaceHandlerWorker

07 ACPI!PciConfigSpaceHandler

08 ACPI!InternalOpRegionHandler

09 ACPI!AccessBaseField

0a ACPI!AccessFieldData

0b ACPI!ReadFieldObj

0c ACPI!RunContext

0d ACPI!InsertReadyQueue

0e ACPI!RestartCtxtPassive

0f ACPI!ACPIWorker

10 nt!PspSystemThreadStartup

11 nt!KiThreadStartup

1: kd> dv

pns = 0x8996ebdc

pdataResult = 0x898f7aec

icArgs = 0n0

pdataArgs = 0x00000000

pfnAsyncCallBack = 0xf7407364

pvContext = 0x898f7ac0

pHData = 0x00000008

1: kd> bp acpi!AsyncEvalObject

breakpoint 37 redefined

1: kd> g

Breakpoint 37 hit

eax=8996ebdc ebx=00000000 ecx=8996ebdc edx=00000000 esi=8996ebdc edi=898f7b00

eip=f741f8c9 esp=f791aa88 ebp=f791aab8 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!AsyncEvalObject:

f741f8c9 55 push ebp

1: kd> kc

00 ACPI!AsyncEvalObject

01 ACPI!AMLIAsyncEvalObject

02 ACPI!ACPIGet

03 ACPI!IsPciDeviceWorker

04 ACPI!IsPciDevice

05 ACPI!GetOpRegionScopeWorker

06 ACPI!GetOpRegionScope

07 ACPI!PciConfigSpaceHandlerWorker

08 ACPI!PciConfigSpaceHandler

09 ACPI!InternalOpRegionHandler

0a ACPI!AccessBaseField

0b ACPI!AccessFieldData

0c ACPI!ReadFieldObj

0d ACPI!RunContext

0e ACPI!InsertReadyQueue

0f ACPI!RestartCtxtPassive

10 ACPI!ACPIWorker

11 nt!PspSystemThreadStartup

12 nt!KiThreadStartup

1: kd> dv

pns = 0x8996ebdc

pdataResult = 0x898f7aec

icArgs = 0n0

pdataArgs = 0x00000000

pfnAsyncCallBack = 0xf7407364

pvContext = 0x898f7ac0

fAsync = 0x01 ''

pctxt = 0x00000008

1: kd> kc

00 ACPI!RestartContext

01 ACPI!AsyncEvalObject

02 ACPI!AMLIAsyncEvalObject

03 ACPI!ACPIGet

04 ACPI!IsPciDeviceWorker

05 ACPI!IsPciDevice

06 ACPI!GetOpRegionScopeWorker

07 ACPI!GetOpRegionScope

08 ACPI!PciConfigSpaceHandlerWorker

09 ACPI!PciConfigSpaceHandler

0a ACPI!InternalOpRegionHandler

0b ACPI!AccessBaseField

0c ACPI!AccessFieldData

0d ACPI!ReadFieldObj

0e ACPI!RunContext

0f ACPI!InsertReadyQueue

10 ACPI!RestartCtxtPassive

11 ACPI!ACPIWorker

12 nt!PspSystemThreadStartup

13 nt!KiThreadStartup

1: kd> dv
pctxt = 0x89882000

fDelayExecute = 0x00 ''

1: kd> dx -r1 ((ACPI!_ctxt *)0x89882000)

((ACPI!_ctxt *)0x89882000) : 0x89882000 [Type: _ctxt *]

+0x000\] dwSig : 0x54585443 \[Type: unsigned long

+0x004\] pbCtxtEnd : 0x89884000 : 0x0 \[Type: unsigned char \*

+0x008\] listCtxt \[Type: _List

+0x010\] listQueue \[Type: _List

+0x018\] pplistCtxtQueue : 0x0 \[Type: _List \* \*

+0x01c\] plistResources : 0x0 \[Type: _List \*

+0x020\] dwfCtxt : 0x100 \[Type: unsigned long

+0x024\] pnsObj : 0x8996ebdc \[Type: _NSObj \*

+0x028\] pnsScope : 0x8996ebdc \[Type: _NSObj \*

+0x02c\] powner : 0x0 \[Type: _objowner \*

+0x030\] pcall : 0x0 \[Type: _call \*

+0x034\] pnctxt : 0x0 \[Type: _nestedctxt \*

+0x038\] dwSyncLevel : 0x0 \[Type: unsigned long

+0x03c\] pbOp : 0x0 \[Type: unsigned char \*

+0x040\] Result \[Type: _ObjData

+0x054\] pfnAsyncCallBack : 0xf7407364 \[Type: void (__cdecl\*)(_NSObj \*,long,_ObjData \*,void \*)

+0x058\] pdataCallBack : 0x898f7aec \[Type: _ObjData \*

+0x05c\] pvContext : 0x898f7ac0 \[Type: void \*

+0x060\] Timer \[Type: _KTIMER

+0x088\] Dpc \[Type: _KDPC

+0x0a8\] pheapCurrent : 0x898820bc \[Type: _heap \*

+0x0ac\] CtxtData \[Type: _ctxtdata

+0x0bc\] LocalHeap \[Type: _heap

1: kd> u f7407364
ACPI!ACPIGetWorkerForInteger [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 4707]:

f7407364 55 push ebp

f7407365 8bec mov ebp,esp

f7407367 51 push ecx

f7407368 53 push ebx

f7407369 8b5d0c mov ebx,dword ptr [ebp+0Ch]

f740736c 85db test ebx,ebx

f740736e 56 push esi

f740736f 57 push edi

windbg> .open -a fffffffff7407364

1: kd> dt ACPI_GET_REQUEST 0x898f7ac0

+0x000 Flags : 0x48040402

+0x000 UFlags : __unnamed

+0x004 ObjectID : 0x5244415f

+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x898a8e90 ]

+0x010 DeviceExtension : (null)

+0x014 AcpiObject : 0x8996eb98 _NSObj

+0x018 CallBackRoutine : 0xf740d146 void ACPI!IsPciDeviceWorker+0

+0x01c CallBackContext : 0x898590a0 Void

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

+0x024 BufferSize : (null)

+0x028 Status : 0n0

+0x02c ResultData : _ObjData

第二部分:S7F0对应的_CTXT放入ACPI!gReadyQueue

1: kd> x acpi!greadyqueue

f743a928 ACPI!gReadyQueue = struct _ctxtq

1: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))

(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]

+0x000\] dwfCtxtQ : 0x2 \[Type: unsigned long

+0x004\] pkthCurrent : 0x0 \[Type: _KTHREAD \*

+0x008\] pctxtCurrent : 0x0 \[Type: _ctxt \*

+0x00c\] plistCtxtQ : 0x89876010 \[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> dx -r1 ((ACPI!_List *)0x89876010)

((ACPI!_List *)0x89876010) : 0x89876010 [Type: _List *]

+0x000\] **plistPrev : 0x89882010** \[Type: _List \*

+0x004\] plistNext : 0x89878010 \[Type: _List \*

1: kd> dt _CTXT 0x89882010-10

ACPI!_ctxt

+0x000 dwSig : 0x54585443

+0x004 pbCtxtEnd : 0x89884000 ""

+0x008 listCtxt : _List

+0x010 listQueue : _List

+0x018 pplistCtxtQueue : 0xf743a934 -> 0x89876010 _List

+0x01c plistResources : (null)

+0x020 dwfCtxt : 0x168

+0x024 pnsObj : 0x8996ebdc _NSObj

+0x028 pnsScope : 0x8996ebdc _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 : 0x898f7aec _ObjData

+0x05c pvContext : 0x898f7ac0 Void

+0x060 Timer : _KTIMER

+0x088 Dpc : _KDPC

+0x0a8 pheapCurrent : 0x898820bc _heap

+0x0ac CtxtData : _ctxtdata

+0x0bc LocalHeap : _heap

第三部分:阻塞后继续处理S8F0,也会阻塞,产生新的_CTXT放入ACPI!gReadyQueue

1: kd> g

Breakpoint 11 hit

eax=00008004 ebx=f743a948 ecx=00008000 edx=80b18958 esi=897f0000 edi=897f1dac

eip=f741d852 esp=f791ad04 ebp=f791ad1c 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+0x142:

f741d852 e83bceffff call ACPI!AcquireMutex (f741a692)

1: kd> dv rc

rc = 0n32772

1: kd> ?0n32772

Evaluate expression: 32772 = 00008004

1: kd> g

Breakpoint 17 hit

eax=f7420746 ebx=00000000 ecx=89900f78 edx=00000000 esi=89900f7c edi=f743b318

eip=f74133c3 esp=f791ad6c ebp=f791adac 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!ACPIWorker+0xbd:

f74133c3 ffd0 call eax {ACPI!RestartCtxtPassive (f7420746)}

1: kd> g

Breakpoint 39 hit

eax=0000008f ebx=00000000 ecx=8997e000 edx=00002707 esi=897f2000 edi=00000000

eip=f741d710 esp=f791ad20 ebp=f791ad44 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!RunContext:

f741d710 55 push ebp

1: kd> kc

00 ACPI!RunContext

01 ACPI!InsertReadyQueue

02 ACPI!RestartCtxtPassive

03 ACPI!ACPIWorker

04 nt!PspSystemThreadStartup

05 nt!KiThreadStartup

1: kd> dv

pctxt = 0x897f2000

pctxtSave = 0xf741d711

pkthSave = 0x00000008

rc = 0n-1988157440

1: kd> dx -r1 ((ACPI!_ctxt *)0x897f2000)

((ACPI!_ctxt *)0x897f2000) : 0x897f2000 [Type: _ctxt *]

+0x000\] dwSig : 0x54585443 \[Type: unsigned long

+0x004\] pbCtxtEnd : 0x897f4000 : 0x43 \[Type: unsigned char \*

+0x008\] listCtxt \[Type: _List

+0x010\] listQueue \[Type: _List

+0x018\] pplistCtxtQueue : 0x0 \[Type: _List \* \*

+0x01c\] plistResources : 0x0 \[Type: _List \*

+0x020\] dwfCtxt : 0x128 \[Type: unsigned long

+0x024\] pnsObj : 0x8996f164 \[Type: _NSObj \*

+0x028\] pnsScope : 0x8996f164 \[Type: _NSObj \*

+0x02c\] powner : 0x0 \[Type: _objowner \*

+0x030\] pcall : 0x0 \[Type: _call \*

+0x034\] pnctxt : 0x0 \[Type: _nestedctxt \*

+0x038\] dwSyncLevel : 0x0 \[Type: unsigned long

+0x03c\] pbOp : 0x0 \[Type: unsigned char \*

+0x040\] Result \[Type: _ObjData

+0x054\] pfnAsyncCallBack : 0xf7407364 \[Type: void (__cdecl\*)(_NSObj \*,long,_ObjData \*,void \*)

+0x058\] pdataCallBack : 0x899c5394 \[Type: _ObjData \*

+0x05c\] pvContext : 0x899c5368 \[Type: void \*

+0x060\] Timer \[Type: _KTIMER

+0x088\] Dpc \[Type: _KDPC

+0x0a8\] pheapCurrent : 0x897f20bc \[Type: _heap \*

+0x0ac\] CtxtData \[Type: _ctxtdata

+0x0bc\] LocalHeap \[Type: _heap

1: kd> dx -r1 ((ACPI!_NSObj *)0x8996f164)

((ACPI!_NSObj *)0x8996f164) : 0x8996f164 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x8996ef70 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x4154535f \[Type: unsigned long

+0x014\] hOwner : 0x899af330 \[Type: void \*

+0x018\] pnsOwnedNext : 0x8996f120 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> db 0x8996f164

8996f164 20 f1 96 89 d0 f1 96 89-70 ef 96 89 00 00 00 00 .......p.......

8996f174 5f 53 54 41 30 f3 9a 89-20 f1 96 89 00 00 08 00 _STA0... .......

8996f184 00 00 00 00 00 00 00 00-1a 00 00 00 a8 f1 96 89 ................

8996f194 00 00 00 00 00 00 00 00-48 4d 45 54 28 00 00 00 ........HMET(...

8996f1a4 00 90 96 89 00 00 00 00-00 00 00 00 00 00 00 00 ................

8996f1b4 00 00 00 00 00 a4 42 53-54 41 49 44 5f 5f 00 00 ......BSTAID__..

8996f1c4 48 4e 53 4f 44 00 00 00-00 90 96 89 64 f1 96 89 HNSOD.......d...

8996f1d4 3c f2 96 89 70 ef 96 89-00 00 00 00 5f 45 4a 30 <...p......._EJ0

1: kd> db 0x8996ef70

8996ef70 98 eb 96 89 48 f3 96 89-78 cd 96 89 b4 ef 96 89 ....H...x.......

8996ef80 53 38 46 30 30 f3 9a 89-2c ef 96 89 00 00 06 00 S8F00...,.......

8996ef90 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

8996efa0 70 ae 9a 89 00 00 00 00-48 4e 53 4f 44 00 00 00 p.......HNSOD...

8996efb0 00 90 96 89 04 f3 96 89-f8 ef 96 89 70 ef 96 89 ............p...

8996efc0 00 00 00 00 5f 41 44 52-30 f3 9a 89 70 ef 96 89 ...._ADR0...p...

8996efd0 00 00 01 00 00 00 00 00-00 00 07 00 00 00 00 00 ................

8996efe0 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO

相关推荐
sitelist5 小时前
ACPI!StartTimeSlicePassive函数里面处理节点Device (P2P0)的子节点Device (S1F0)的_ADR
device-p2p0·子节点device-s1f0·_adr
sitelist3 天前
hal!HalGetBusDataByOffset函数分析得到Device (P2P0)PCI设备空间前4个字节不是0xFFFF说明PCI设备存在--非常重要
halgetbusdata·busdatabyoffset·device-p2p0·0xffff