ACPI!ACPIGet函数中的全局变量acpi!AcpiGetListEntry对于分析有用可以知道当前正在处理几个acpi!AcpiGet

ACPI!ACPIGet函数中的全局变量acpi!AcpiGetListEntry对于分析有用可以知道当前正在处理几个acpi!AcpiGet

1: kd> t

eax=899affac ebx=89987378 ecx=899873ac edx=899bf408 esi=f740d62c edi=899bf434

eip=f740ceea esp=f791abe8 ebp=f791ac04 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!GetPciAddressWorker:

f740ceea 55 push ebp

1: kd> kc

00 ACPI!GetPciAddressWorker

01 ACPI!GetPciAddress

02 ACPI!PciConfigSpaceHandlerWorker

03 ACPI!PciConfigSpaceHandler

04 ACPI!InternalOpRegionHandler

05 ACPI!WriteCookAccess

06 ACPI!RunContext

07 ACPI!InsertReadyQueue

08 ACPI!RestartCtxtPassive

09 ACPI!ACPIWorker

0a nt!PspSystemThreadStartup

0b nt!KiThreadStartup

1: kd> dv

AcpiObject = 0x899affac

Status = 0n0

Result = 0x00000000

Context = 0x899bf408

buffer = unsigned char [64] ""

1: kd> dt GET_ADDRESS_CONTEXT 0x899bf408

ACPI!GET_ADDRESS_CONTEXT

+0x000 PciObject : 0x899affac _NSObj

+0x004 Bus : 0x899873b0 ""

+0x008 Slot : 0x899873ac _PCI_SLOT_NUMBER

+0x00c ParentBus : 0 ''

+0x010 ParentSlot : _PCI_SLOT_NUMBER

+0x014 Flags : 0

+0x018 Address : 0

+0x01c BaseBusNumber : 0

+0x020 RunCompletion : 0n-1

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

+0x028 CompletionContext : 0x89987378 Void

1: kd> u f740d62c

ACPI!PciConfigSpaceHandlerWorker [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 544]:

f740d62c 55 push ebp

f740d62d 8bec mov ebp,esp

f740d62f 83ec44 sub esp,44h

f740d632 a1a88c43f7 mov eax,dword ptr [ACPI!__security_cookie (f7438ca8)]

f740d637 53 push ebx

f740d638 8b5d14 mov ebx,dword ptr [ebp+14h]

f740d63b 56 push esi

f740d63c 57 push edi

windbg> .open -a fffffffff740d62c

1: kd> dt PCI_CONFIG_STATE 0x89987378

ACPI!PCI_CONFIG_STATE

+0x000 AccessType : 1

+0x004 OpRegion : 0x899b0b50 _NSObj

+0x008 Address : 0xd8

+0x00c Size : 4

+0x010 Data : 0x8997dc28 -> 0x40e98102

+0x014 Context : 0

+0x018 CompletionHandler : 0xf7420914 Void

+0x01c CompletionContext : 0x8997c0ac Void

+0x020 PciObj : 0x899affac _NSObj

+0x024 ParentObj : (null)

+0x028 CompletionHandlerType : 0

+0x02c Flags : 0x100

+0x030 RunCompletion : 0n0

+0x034 Slot : _PCI_SLOT_NUMBER

+0x038 Bus : 0 ''

+0x039 IsPciDeviceResult : 0 ''

//

// First, determine the slot number.

//

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

//

// Get the _ADR.

//

state->Flags |= PCISUPP_CHECKED_ADR;
status = ACPIGetNSAddressAsync(

state->PciObject,

GetPciAddressWorker,

(PVOID)state,

&(state->Address),

NULL

);

if (status == STATUS_PENDING) {

return status;

}

Device (PCI0)

{

Name (_HID, EisaId ("PNP0A03")) // _HID: Hardware ID

Name (_CID, EisaId ("PNP0A08")) // _CID: Compatible ID

Name (_BBN, 0x00) // _BBN: BIOS Bus Number

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

1: kd> t

eax=00000000 ebx=00000000 ecx=899bf420 edx=899bf408 esi=899bf408 edi=00000103

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

f74076b8 55 push ebp

1: kd> kc

00 ACPI!ACPIGet

01 ACPI!GetPciAddressWorker

02 ACPI!GetPciAddress

03 ACPI!PciConfigSpaceHandlerWorker

04 ACPI!PciConfigSpaceHandler

05 ACPI!InternalOpRegionHandler

06 ACPI!WriteCookAccess

07 ACPI!RunContext

08 ACPI!InsertReadyQueue

09 ACPI!RestartCtxtPassive

0a ACPI!ACPIWorker

0b nt!PspSystemThreadStartup

0c nt!KiThreadStartup

1: kd> dv

Target = 0x899affac

ObjectID = 0x5244415f

Flags = 0x48040402

SimpleArgument = 0x00000000

SimpleArgumentSize = 0

CallBackRoutine = 0xf740ceea

CallBackContext = 0x899bf408

Buffer = 0x899bf420

BufferSize = 0x00000000++++

观察:

CallBackRoutine = 0xf740ceea

CallBackContext = 0x899bf408

1: kd> u f740ceea

ACPI!GetPciAddressWorker [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 986]:

f740ceea 55 push ebp

f740ceeb 8bec mov ebp,esp

f740ceed 83ec44 sub esp,44h

f740cef0 a1a88c43f7 mov eax,dword ptr [ACPI!__security_cookie (f7438ca8)]

f740cef5 53 push ebx

f740cef6 56 push esi

f740cef7 8b7514 mov esi,dword ptr [ebp+14h]

f740cefa 85f6 test esi,esi

1: kd> dt GET_ADDRESS_CONTEXT 0x899bf408

ACPI!GET_ADDRESS_CONTEXT

+0x000 PciObject : 0x899affac _NSObj

+0x004 Bus : 0x899873b0 ""

+0x008 Slot : 0x899873ac _PCI_SLOT_NUMBER

+0x00c ParentBus : 0 ''

+0x010 ParentSlot : _PCI_SLOT_NUMBER

+0x014 Flags : 8

+0x018 Address : 0

+0x01c BaseBusNumber : 0

+0x020 RunCompletion : 0n0

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

+0x028 CompletionContext : 0x89987378 Void

1: kd> dx -id 0,0,899a2278 -r1 ((ACPI!unsigned char *)0x899873b0)

((ACPI!unsigned char *)0x899873b0) : 0x899873b0 : 0x0 [Type: unsigned char *]

0x0 [Type: unsigned char]

1: kd> dt _PCI_SLOT_NUMBER 0x899873ac -r

hal!_PCI_SLOT_NUMBER

+0x000 u : __unnamed

+0x000 bits : __unnamed

+0x000 DeviceNumber : 0y00000 (0)

+0x000 FunctionNumber : 0y000

+0x000 Reserved : 0y000000000000000000000000 (0)

+0x000 AsULONG : 0

观察:

Flags = 0x48040402

#define GET_REQUEST_INTEGER 0x00040000

//

// This is the mask for the requests

//

#define GET_REQUEST_MASK (GET_REQUEST_BUFFER | \

GET_REQUEST_DATA | \

GET_REQUEST_INTEGER | \

GET_REQUEST_STRING | \

GET_REQUEST_NOTHING)

#define GET_REQUEST_BUFFER 0x00010000

#define GET_REQUEST_DATA 0x00020000

#define GET_REQUEST_INTEGER 0x00040000

#define GET_REQUEST_STRING 0x00080000

#define GET_REQUEST_NOTHING 0x00100000

#define GET_PROP_ASYNCHRONOUS 0x40000000

if ( (Flags & GET_PROP_ASYNCHRONOUS) ) {

async = TRUE;

}

#define GET_PROP_NSOBJ_INTERFACE 0x08000000

if ( (Flags & GET_PROP_NSOBJ_INTERFACE) ) {

acpiObject = (PNSOBJ) Target;

}

1: kd> dv Target

Target = 0x899affac

1: kd> db 0x899affac

899affac 4c ff 9a 89 ac 40 9b 89-f0 f0 9a 89 24 00 9b 89 L....@......$...

899affbc 50 43 49 30 30 f3 9a 89-4c ff 9a 89 00 00 06 00 PCI00...L.......

899affcc 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

#define GET_CONVERT_TO_DEVICE_PRESENCE 0x00000800

1: kd> dv flags

Flags = 0x48040402

request = ExAllocatePoolWithTag(

NonPagedPool,

sizeof(ACPI_GET_REQUEST),

ACPI_MISC_POOLTAG

);

1: kd> p

eax=899050a0 ebx=00000000 ecx=00000005 edx=00000009 esi=899050a0 edi=00000000

eip=f7407833 esp=f791ab2c ebp=f791ab68 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!ACPIGet+0x17b:

f7407833 3bf7 cmp esi,edi

1: kd> dt ACPI_GET_REQUEST 899050a0

+0x000 Flags : 0x48040402

+0x000 UFlags : __unnamed

+0x004 ObjectID : 0x5244415f

+0x008 ListEntry : _LIST_ENTRY [ 0x0 - 0x0 ]

+0x010 DeviceExtension : (null)

+0x014 AcpiObject : 0x899affac _NSObj

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

+0x01c CallBackContext : 0x899bf408 Void

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

+0x024 BufferSize : (null)

+0x028 Status : 0n0

+0x02c ResultData : _ObjData

1: kd> db 899050a0

899050a0 02 04 04 48 5f 41 44 52-00 00 00 00 00 00 00 00 ...H_ADR........

899050b0 00 00 00 00 ac ff 9a 89-ea ce 40 f7 08 f4 9b 89 ..........@.....

899050c0 20 f4 9b 89 00 00 00 00-00 00 00 00 00 00 00 00 ...............

899050d0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

899050e0 09 00 04 0a 41 6d 6c 54-00 c0 97 89 18 b3 43 f7 ....AmlT......C.

899050f0 18 b3 43 f7 46 07 42 f7-e8 50 90 89 00 00 00 00 ..C.F.B..P......

89905100 04 00 0a 0a 41 63 70 44-90 b8 43 f7 58 51 90 89 ....AcpD..C.XQ..

89905110 50 47 53 5f 0c 10 00 00-03 00 00 00 00 00 00 00 PGS_............

Device (PCI0)

{

Name (_HID, EisaId ("PNP0A03")) // _HID: Hardware ID

Name (_CID, EisaId ("PNP0A08")) // _CID: Compatible ID

Name (_BBN, 0x00) // _BBN: BIOS Bus Number

Name (_ADR, 0x00) // _ADR: Address 有_ADR

//

// Make sure that we queue the request onto the list that we use to

// keep track of the requests

1: kd> x acpi!AcpiGetListEntry

f743b940 ACPI!AcpiGetListEntry = struct _LIST_ENTRY [ 0x899c6328 - 0x899c6328 ]

1: kd> dx -r1 (*((ACPI!_LIST_ENTRY *)0xf743b940))

(*((ACPI!_LIST_ENTRY *)0xf743b940)) [Type: _LIST_ENTRY]

+0x000\] Flink : 0x899c6328 \[Type: _LIST_ENTRY \*

+0x004\] Blink : 0x899c6328 \[Type: _LIST_ENTRY \*

1: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x899c6328)

((ACPI!_LIST_ENTRY *)0x899c6328) : 0x899c6328 [Type: _LIST_ENTRY *]

+0x000\] Flink : 0xf743b940 \[Type: _LIST_ENTRY \*

+0x004\] Blink : 0xf743b940 \[Type: _LIST_ENTRY \*

//

KeAcquireSpinLock( &AcpiGetLock, &oldIrql );
InsertTailList(
&(AcpiGetListEntry),
&(request->ListEntry)
);

KeReleaseSpinLock( &AcpiGetLock, oldIrql );

D:\>grep "AcpiGetListEntry" -nr D:\srv03rtm\base\busdrv\acpi|grep -v "inary"

D:\srv03rtm\base\busdrv\acpi/driver/nt/acpiosnt.c:187: InitializeListHead( &AcpiGetListEntry );

D:\srv03rtm\base\busdrv\acpi/driver/nt/get.c:226: &(AcpiGetListEntry),

D:\srv03rtm\base\busdrv\acpi/driver/nt/get.h:133: LIST_ENTRY AcpiGetListEntry;

1: kd> x acpi!AcpiGetListEntry

f743b940 ACPI!AcpiGetListEntry = struct _LIST_ENTRY [ 0x899c6328 - 0x899050a8 ]

1: kd> dx -r1 (*((ACPI!_LIST_ENTRY *)0xf743b940))

(*((ACPI!_LIST_ENTRY *)0xf743b940)) [Type: _LIST_ENTRY]

+0x000\] Flink : 0x899c6328 \[Type: _LIST_ENTRY \*

+0x004\] Blink : 0x899050a8 \[Type: _LIST_ENTRY \*

1: kd> dx -r1 ((ACPI!_LIST_ENTRY *)0x899c6328)

((ACPI!_LIST_ENTRY *)0x899c6328) : 0x899c6328 [Type: _LIST_ENTRY *]

+0x000\] Flink : 0x899050a8 \[Type: _LIST_ENTRY \*

+0x004\] Blink : 0xf743b940 \[Type: _LIST_ENTRY \*

1: kd> dt ACPI_GET_REQUEST 0x899050a8-8

+0x000 Flags : 0x48040402

+0x000 UFlags : __unnamed

+0x004 ObjectID : 0x5244415f

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

+0x010 DeviceExtension : (null)

+0x014 AcpiObject : 0x899affac _NSObj

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

+0x01c CallBackContext : 0x899bf408 Void

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

+0x024 BufferSize : (null)

+0x028 Status : 0n0

+0x02c ResultData : _ObjData

1: kd> dt ACPI_GET_REQUEST 0x899c6328-8

+0x000 Flags : 0x40040802

+0x000 UFlags : __unnamed

+0x004 ObjectID : 0x4154535f

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

+0x010 DeviceExtension : 0x899aee58 _DEVICE_EXTENSION

+0x014 AcpiObject : 0x899b4804 _NSObj

+0x018 CallBackRoutine : 0xf73fa5bc void ACPI!ACPIBuildCompleteMustSucceed+0

+0x01c CallBackContext : 0x89906cd0 Void

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

+0x024 BufferSize : (null)

+0x028 Status : 0n0

+0x02c ResultData : _ObjData

1: kd> db 0x899c6328-8

899c6320 02 08 04 40 5f 53 54 41-a8 50 90 89 40 b9 43 f7 ...@_STA.P..@.C.

899c6330 58 ee 9a 89 04 48 9b 89-bc a5 3f f7 d0 6c 90 89 X....H....?..l..

899c6340 14 6d 90 89 00 00 00 00-00 00 00 00 00 00 00 00 .m..............

899c6350 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

899c6360 09 00 3b 0a 4f 62 6a d4-e0 1a 00 e1 0e 00 10 00 ..;.Obj.........

899c6370 30 88 00 e1 01 00 00 00-da 00 00 00 00 00 01 00 0...............

899c6380 48 7e 98 89 c0 69 9c 89-04 00 00 00 00 00 00 00 H~...i..........

899c6390 01 00 00 00 00 00 00 00-48 20 9a 89 28 00 00 17 ........H ..(...

1: kd> u f73fa5bc

ACPI!ACPIBuildCompleteMustSucceed [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 399]:

f73fa5bc 55 push ebp

f73fa5bd 8bec mov ebp,esp

f73fa5bf 8b4d0c mov ecx,dword ptr [ebp+0Ch]

f73fa5c2 85c9 test ecx,ecx

f73fa5c4 8b4514 mov eax,dword ptr [ebp+14h]

f73fa5c7 8b5018 mov edx,dword ptr [eax+18h]

f73fa5ca 7d21 jge ACPI!ACPIBuildCompleteMustSucceed+0x31 (f73fa5ed)

f73fa5cc 8b5508 mov edx,dword ptr [ebp+8]

1: kd> dt ACPI_BUILD_REQUEST 0x89906cd0

+0x000 ListEntry : _LIST_ENTRY [ 0x89906c80 - 0xf743b870 ]

+0x008 Signature : 0x5f534750

+0x00c Flags : 0xc

+0x00c UFlags : __unnamed

+0x010 WorkDone : 1

+0x014 CurrentWorkDone : 3

+0x018 NextWorkDone : 4
+0x01c BuildContext : 0x899aee58 Void

+0x020 Status : 0n0

+0x024 CurrentObject : (null)

+0x028 CallBack : (null)

+0x02c CallBackContext : (null)

+0x030 DeviceRequest : __unnamed

+0x030 RunRequest : __unnamed

+0x030 SynchronizeRequest : __unnamed

+0x044 Integer : 0

+0x044 String : (null)

+0x044 TargetListEntry : (null)

1: kd> dt ACPI!_device_extension 0x899aee58

+0x000 Flags : 0xa

+0x12c AcpiObject : 0x899b4804 _NSObj

+0x130 DeviceObject : (null)

+0x134 TargetDeviceObject : (null)

+0x138 PhysicalDeviceObject : (null)

+0x13c ParentExtension : 0x89981a18 _DEVICE_EXTENSION

+0x140 ChildDeviceList : _LIST_ENTRY [ 0x899aef98 - 0x899aef98 ]

+0x148 SiblingDeviceList : _LIST_ENTRY [ 0x899aeda0 - 0x899ae150 ]

+0x150 EjectDeviceHead : _LIST_ENTRY [ 0x899aefa8 - 0x899aefa8 ]

+0x158 EjectDeviceList : _LIST_ENTRY [ 0x899aefb0 - 0x899aefb0 ]

1: kd> db 0x899b4804

899b4804 18 45 9b 89 70 4a 9b 89-f0 f0 9a 89 48 48 9b 89 .E..pJ......HH..

899b4814 42 41 54 32 30 f3 9a 89-84 47 9b 89 00 00 06 00 BAT20....G......

899b4824 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

899b4834 58 ee 9a 89 00 00 00 00-48 4e 53 4f 44 00 00 00 X.......HNSOD...

899b4844 00 f0 9a 89 08 4a 9b 89-8c 48 9b 89 04 48 9b 89 .....J...H...H..

899b4854 00 00 00 00 5f 48 49 44-30 f3 9a 89 04 48 9b 89 ...._HID0....H..

899b4864 00 00 01 00 00 00 00 00-41 d0 0c 0a 00 00 00 00 ........A.......

899b4874 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO

THREAD 899a1020 Cid 0004.0008 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0

IRP List:

899bf5b0: (0006,0190) Flags: 00000000 Mdl: 00000000

Not impersonating

DeviceMap e10003d8

Owning Process 899a2278 Image: System

Attached Process N/A Image: N/A

Wait Start TickCount 274647546 Ticks: 138 (0:00:00:02.156)

Context Switch Count 9 IdealProcessor: 0

UserTime 00:00:00.000

KernelTime 00:00:00.828

Stack Init f789b000 Current f789a1b8 Base f789b000 Limit f7898000 Call 00000000

Priority 31 BasePriority 8 PriorityDecrement 0 IoPriority 0 PagePriority 0

ChildEBP RetAddr

f789edd8 804ee179 hal!HalpClockInterrupt+0x15a (FPO: [0,2] TrapFrame @ f789edd8) [d:\srv03rtm\base\hals\halmps\i386\mpclock.asm @ 554]

f789ee48 f74134e1 hal!KfReleaseSpinLock+0x29 (FPO: [0,0,0]) [d:\srv03rtm\base\hals\halmps\i386\mpspin.asm @ 273]

f789ee5c f74208c7 ACPI!OSQueueWorkItem+0x71 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\worker.c @ 377]

f789ee74 f741fb55 ACPI!RestartContext+0xf3 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 354]

f789ee98 f74153a2 ACPI!AsyncEvalObject+0x28c (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sync.c @ 343]

f789eecc f7407905 ACPI!AMLIAsyncEvalObject+0x160 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\amliapi.c @ 871]

f789ef28 f73fbc48 ACPI!ACPIGet+0x24d (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 275]

f789ef60 f73fb914 ACPI!ACPIBuildProcessRunMethodPhaseCheckSta+0x4e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 5716]

f789ef84 f73fc619 ACPI!ACPIBuildProcessGenericList+0x50 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 4847]

f789ef9c 80a41432 ACPI!ACPIBuildDeviceDpc+0x67 (FPO: [4,0,0]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\buildsrc.c @ 553]

f789eff4 80b00756 nt!KiRetireDpcList+0xd6 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\srv03rtm\base\ntos\ke\dpcsup.c @ 1076]

f789eff8 f789a124 nt!KiDispatchInterrupt+0x36 (FPO: [Uses EBP] [0,0,1]) [d:\srv03rtm\base\ntos\ke\i386\ctxswap.asm @ 226]

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

80b00756 00000000 0xf789a124

THREAD 89981ca0 Cid 0004.0078 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 1

Not impersonating

DeviceMap e10003d8

Owning Process 899a2278 Image: System

Attached Process N/A Image: N/A

Wait Start TickCount 274647653 Ticks: 31 (0:00:00:00.484)

Context Switch Count 4 IdealProcessor: 1

UserTime 00:00:00.000

KernelTime 00:00:00.578

Stack Init f791b000 Current f791acc0 Base f791b000 Limit f7918000 Call 00000000

Priority 8 BasePriority 8 PriorityDecrement 0 IoPriority 0 PagePriority 0

ChildEBP RetAddr

f791ab68 f740cf5e ACPI!ACPIGet+0x1ef (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 237]

f791abe4 f740d3a8 ACPI!GetPciAddressWorker+0x74 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1030]

f791ac04 f740d700 ACPI!GetPciAddress+0x70 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 974]

f791ac70 f740d9dd ACPI!PciConfigSpaceHandlerWorker+0xd4 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 654]

f791ac8c f742813d ACPI!PciConfigSpaceHandler+0x6d (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 424]

f791acbc f7417e5f ACPI!InternalOpRegionHandler+0x67 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\shared\acpioprg.c @ 160]

f791acf4 f741d832 ACPI!WriteCookAccess+0x242 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\object.c @ 1437]

f791ad1c f7420671 ACPI!RunContext+0x122 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\ctxt.c @ 588]

f791ad44 f742079a ACPI!InsertReadyQueue+0x155 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 275]

f791ad64 f74133c5 ACPI!RestartCtxtPassive+0x54 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 384]

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

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

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

第二部分:什么时候移出节点。

//

// Done with the request

//

if (request != NULL) {

//

// Remove the request from the queue

//

KeAcquireSpinLock( &AcpiGetLock, &oldIrql );

RemoveEntryList( &(request->ListEntry) );

KeReleaseSpinLock( &AcpiGetLock, oldIrql );

//

// Free the storage

//

ExFreePool( request );

}

//

// Done

//

return status;

}

相关推荐
sitelist17 天前
ACPI!ACPIDispatchAddDevice函数中的ACPI!ACPIDetectPdoDevices函数分析和ACPI!ACPIGet的作用
acpiget·acpidetectpdo·detectpdodev·acpidispatchadd