news 2026/4/3 2:47:23

ACPIDetectPdoDevices函数中ACPIGetDevicePresenceSync对节点BAT1的_STA方法的处理到SyncEvalObject中的RestartContext

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ACPIDetectPdoDevices函数中ACPIGetDevicePresenceSync对节点BAT1的_STA方法的处理到SyncEvalObject中的RestartContext

ACPI!ACPIDetectPdoDevices函数中ACPIGetDevicePresenceSync对节点BAT1的_STA方法的处理到ACPI!SyncEvalObject中的ACPI!RestartContext

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 = 0x89564000
pctxtSave = 0xf741d711
pkthSave = 0x00000008
rc = 0n-1990836224
1: kd> dx -r1 ((ACPI!_ctxt *)0x89564000)
((ACPI!_ctxt *)0x89564000) : 0x89564000 [Type: _ctxt *]
[+0x000] dwSig : 0x54585443 [Type: unsigned long]
[+0x004] pbCtxtEnd : 0x89566000 : 0x0 [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 : 0x899b00f0 [Type: _NSObj *]
[+0x028] pnsScope : 0x899b00f0 [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 : 0x899681d4 [Type: _ObjData *]
[+0x05c] pvContext : 0x899681a8 [Type: void *]
[+0x060] Timer [Type: _KTIMER]
[+0x088] Dpc [Type: _KDPC]
[+0x0a8] pheapCurrent : 0x895640bc [Type: _heap *]
[+0x0ac] CtxtData [Type: _ctxtdata]
[+0x0bc] LocalHeap [Type: _heap]
1: kd> dx -r1 (*((ACPI!_heap *)0x895640bc))
(*((ACPI!_heap *)0x895640bc)) [Type: _heap]
[+0x000] dwSig : 0x50414548 [Type: unsigned long]
[+0x004] pbHeapEnd : 0x89565fe4 : 0x50 [Type: unsigned char *]
[+0x008] pheapHead : 0x895640bc [Type: _heap *]
[+0x00c] pheapNext : 0x0 [Type: _heap *]
[+0x010] pbHeapTop : 0x895640d4 : 0x0 [Type: unsigned char *]
[+0x014] plistFreeHeap : 0x0 [Type: _List *]
[+0x018] Heap [Type: _heapobjhdr]
1: kd> dt framehdr 0x89565fe4
ACPI!FRAMEHDR
+0x000 dwSig : 0x54534f50
+0x004 dwLen : 0x1c
+0x008 dwfFrame : 0
+0x00c pfnParse : 0xf741ef2b long ACPI!ProcessEvalObj+0

1: kd> kc
#
00 ACPI!AsyncCallBack
01 ACPI!RunContext
02 ACPI!DispatchCtxtQueue
03 ACPI!StartTimeSlicePassive
04 ACPI!ACPIWorker
05 nt!PspSystemThreadStartup
06 nt!KiThreadStartup
1: kd> dv
pctxt = 0x89564000
rcCtxt = 0n0
pfnAsyncCallBack = 0x89564000
pdataCallBack = 0x00000008

1: kd> dt ACPI!_ctxt 0x89564000
+0x000 dwSig : 0x54585443
+0x004 pbCtxtEnd : 0x89566000 ""
+0x008 listCtxt : _List
+0x010 listQueue : _List
+0x018 pplistCtxtQueue : (null)
+0x01c plistResources : (null)
+0x020 dwfCtxt : 0x120
+0x024 pnsObj : 0x899b00f0 _NSObj
+0x028 pnsScope : 0x899b00f0 _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 : 0x899681d4 _ObjData
+0x05c pvContext : 0x899681a8 Void
+0x060 Timer : _KTIMER
+0x088 Dpc : _KDPC
+0x0a8 pheapCurrent : 0x895640bc _heap
+0x0ac CtxtData : _ctxtdata
+0x0bc LocalHeap : _heap

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 = 0x899b00f0
Status = 0n0
Result = 0x899681d4
Context = 0x899681a8
freeData = 0x00 ''

1: kd> db 0x899b00f0
899b00f0 ac 00 9b 89 90 01 9b 89-ac ff 9a 89 00 00 00 00 ................
899b0100 5f 41 44 52 30 f3 9a 89-ac 00 9b 89 00 00 01 00 _ADR0...........

1: kd> dx -r1 ((ACPI!_NSObj *)0x899b00f0)
((ACPI!_NSObj *)0x899b00f0) : 0x899b00f0 [Type: _NSObj *]
[+0x000] list [Type: _List]
[+0x008] pnsParent : 0x899affac [Type: _NSObj *]
[+0x00c] pnsFirstChild : 0x0 [Type: _NSObj *]
[+0x010] dwNameSeg : 0x5244415f [Type: unsigned long]
[+0x014] hOwner : 0x899af330 [Type: void *]
[+0x018] pnsOwnedNext : 0x899b00ac [Type: _NSObj *]
[+0x01c] ObjData [Type: _ObjData]
[+0x030] Context : 0x0 [Type: void *]
[+0x034] dwRefCount : 0x0 [Type: unsigned long]
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.......
1: kd> dx -r1 (*((ACPI!_ObjData *)0x899b010c))
(*((ACPI!_ObjData *)0x899b010c)) [Type: _ObjData]
[+0x000] dwfData : 0x0 [Type: unsigned short]
[+0x002] dwDataType : 0x1 [Type: unsigned short]
[+0x004] dwRefCount : 0x0 [Type: unsigned long]
[+0x004] pdataBase : 0x0 [Type: _ObjData *]
[+0x008] dwDataValue : 0x0 [Type: unsigned long]
[+0x008] uipDataValue : 0x0 [Type: unsigned long]
[+0x008] pnsAlias : 0x0 [Type: _NSObj *]
[+0x008] pdataAlias : 0x0 [Type: _ObjData *]
[+0x008] powner : 0x0 [Type: void *]
[+0x00c] dwDataLen : 0x0 [Type: unsigned long]
[+0x010] pbDataBuff : 0x0 [Type: unsigned char *]

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> dt ACPI_GET_REQUEST 0x899681a8
+0x000 Flags : 0x48040402
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x5244415f
+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x89968648 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x899affac _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x89639b78 Void
+0x020 Buffer : 0x89639b90 -> (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 = 0x899b00f0
Status = 0n0
Result = 0x00000000
Context = 0x89639b78
buffer = unsigned char [64] ""

1: kd> dt GET_ADDRESS_CONTEXT 0x89639b78
ACPI!GET_ADDRESS_CONTEXT
+0x000 PciObject : 0x899affac _NSObj
+0x004 Bus : 0x899a9640 ""
+0x008 Slot : 0x899a963c _PCI_SLOT_NUMBER
+0x00c ParentBus : 0 ''
+0x010 ParentSlot : _PCI_SLOT_NUMBER
+0x014 Flags : 8 #define PCISUPP_CHECKED_ADR 8
+0x018 Address : 0
+0x01c BaseBusNumber : 0
+0x020 RunCompletion : 0n0
+0x024 CompletionRoutine : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker+0
+0x028 CompletionContext : 0x899a9608 Void

#define PCISUPP_GOT_SLOT_INFO 0x100

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

//
// Build a PCI_SLOT_NUMBER out of the integer returned
// from the interpretter.
//
state->Slot->u.bits.FunctionNumber = (state->Address) & 0x7;
state->Slot->u.bits.DeviceNumber = ( (state->Address) >> 16) & 0x1f;
state->Flags |= PCISUPP_GOT_SLOT_INFO;

}


//
// Is there a _BBN to run?
//
tempObj = ACPIAmliGetNamedChild(bus, PACKED_BBN);
if (tempObj) {

//
// This device must be the child of a root PCI bus.
//
if (!(state->Flags & PCISUPP_CHECKED_BBN)) {

state->Flags |= PCISUPP_CHECKED_BBN;
status = ACPIGetNSIntegerAsync(

#define PCISUPP_CHECKED_BBN 0x2000


1: kd> kc
#
00 ACPI!ACPIGet
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> r
eax=00000000 ebx=f743b938 ecx=00000000 edx=00000000 esi=89922590 edi=89922598
eip=f74078d8 esp=f791abf0 ebp=f791ac34 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!ACPIGet+0x220:
f74078d8 e83b2bffff call ACPI!ACPIAmliGetNamedChild (f73fa418)
1: kd> db f791abf0
f791abf0 ac ff 9a 89 5f 42 42 4e-03 01 00 00 78 9b 63 89 ...._BBN....x.c.


1: kd> gu
eax=899b00ac ebx=f743b938 ecx=4e42425f edx=00000000 esi=89922590 edi=89922598
eip=f74078dd esp=f791abf8 ebp=f791ac34 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+0x225:
f74078dd 85c0 test eax,eax

1: kd> kc
#
00 ACPI!AMLIAsyncEvalObject
01 ACPI!ACPIGet
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> dv
pns = 0x899b00ac
pdataResult = 0x899225bc
icArgs = 0n0
pdataArgs = 0x00000000
pfnAsyncCallBack = 0xf7407364
pvContext = 0x89922590
pHData = 0x00000008
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.......

1: kd> kc
#
00 ACPI!AsyncEvalObject
01 ACPI!AMLIAsyncEvalObject
02 ACPI!ACPIGet
03 ACPI!GetPciAddressWorker
04 ACPI!ACPIGetWorkerForInteger
05 ACPI!AsyncCallBack
06 ACPI!RunContext
07 ACPI!DispatchCtxtQueue
08 ACPI!StartTimeSlicePassive
09 ACPI!ACPIWorker
0a nt!PspSystemThreadStartup
0b nt!KiThreadStartup
1: kd> dv
pns = 0x899b00ac
pdataResult = 0x899225bc
icArgs = 0n0
pdataArgs = 0x00000000
pfnAsyncCallBack = 0xf7407364
pvContext = 0x89922590


1: kd> kc
#
00 ACPI!RestartContext
01 ACPI!AsyncEvalObject
02 ACPI!AMLIAsyncEvalObject
03 ACPI!ACPIGet
04 ACPI!GetPciAddressWorker
05 ACPI!ACPIGetWorkerForInteger
06 ACPI!AsyncCallBack
07 ACPI!RunContext
08 ACPI!DispatchCtxtQueue
09 ACPI!StartTimeSlicePassive
0a ACPI!ACPIWorker
0b nt!PspSystemThreadStartup
0c nt!KiThreadStartup
1: kd> dv
pctxt = 0x89560000
fDelayExecute = 0x00 ''


1: kd> kc
#
00 ACPI!InsertReadyQueue
01 ACPI!RestartContext
02 ACPI!AsyncEvalObject
03 ACPI!AMLIAsyncEvalObject
04 ACPI!ACPIGet
05 ACPI!GetPciAddressWorker
06 ACPI!ACPIGetWorkerForInteger
07 ACPI!AsyncCallBack
08 ACPI!RunContext
09 ACPI!DispatchCtxtQueue
0a ACPI!StartTimeSlicePassive
0b ACPI!ACPIWorker
0c nt!PspSystemThreadStartup
0d nt!KiThreadStartup
1: kd> dv
pctxt = 0x89560000
fDelayExecute = 0x00 ''

1: kd> x acpi!greadyqueue
f743a928 ACPI!gReadyQueue = struct _ctxtq
1: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))
(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]
[+0x000] dwfCtxtQ : 0x0 [Type: unsigned long]
[+0x004] pkthCurrent : 0x89981ca0 [Type: _KTHREAD *]
[+0x008] pctxtCurrent : 0x89564000 [Type: _ctxt *]
[+0x00c] plistCtxtQ : 0x0 [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]


else
{
//
// Insert the context in the ready queue.
//
ASSERT(!(pctxt->dwfCtxt & (CTXTF_IN_READYQ | CTXTF_RUNNING)));
LOGSCHEDEVENT('QCTX', (ULONG_PTR)pctxt, (ULONG_PTR)
(pctxt->pnctxt? pctxt->pnctxt->pnsObj: pctxt->pnsObj),
(ULONG_PTR)pctxt->pbOp);
if (!(pctxt->dwfCtxt & CTXTF_IN_READYQ))
{
pctxt->dwfCtxt |= CTXTF_IN_READYQ;
ListInsertTail(&pctxt->listQueue, &gReadyQueue.plistCtxtQ);
pctxt->pplistCtxtQueue = &gReadyQueue.plistCtxtQ;
}

pctxt->dwfCtxt |= CTXTF_NEED_CALLBACK;
rc = AMLISTA_PENDING;
}


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 = 0x89560000
pctxtSave = 0xf741d711
pkthSave = 0x00000008
rc = 0n-1990852608


1: kd> kc
#
00 ACPI!AsyncCallBack
01 ACPI!RunContext
02 ACPI!DispatchCtxtQueue
03 ACPI!StartTimeSlicePassive
04 ACPI!ACPIWorker
05 nt!PspSystemThreadStartup
06 nt!KiThreadStartup
1: kd> dv
pctxt = 0x89560000
rcCtxt = 0n0
pfnAsyncCallBack = 0x89560000
pdataCallBack = 0x00000008

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 = 0x899225bc
Context = 0x89922590

1: kd> dt ACPI_GET_REQUEST 0x89922590
+0x000 Flags : 0x48040002
+0x000 UFlags : __unnamed
+0x004 ObjectID : 0x4e42425f
+0x008 ListEntry : _LIST_ENTRY [ 0xf743b940 - 0x89968648 ]
+0x010 DeviceExtension : (null)
+0x014 AcpiObject : 0x899affac _NSObj
+0x018 CallBackRoutine : 0xf740ceea void ACPI!GetPciAddressWorker+0
+0x01c CallBackContext : 0x89639b78 Void
+0x020 Buffer : 0x89639b94 -> (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 = 0x89639b78
buffer = unsigned char [64] ""
1: kd> dt GET_ADDRESS_CONTEXT 0x89639b78
ACPI!GET_ADDRESS_CONTEXT
+0x000 PciObject : 0x899affac _NSObj
+0x004 Bus : 0x899a9640 ""
+0x008 Slot : 0x899a963c _PCI_SLOT_NUMBER
+0x00c ParentBus : 0 ''
+0x010 ParentSlot : _PCI_SLOT_NUMBER
+0x014 Flags : 0x2108
+0x018 Address : 0
+0x01c BaseBusNumber : 0
+0x020 RunCompletion : 0n1
+0x024 CompletionRoutine : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker+0
+0x028 CompletionContext : 0x899a9608 Void

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 = 0x899a9608
1: kd> dt PCI_CONFIG_STATE 0x899a9608
ACPI!PCI_CONFIG_STATE
+0x000 AccessType : 1 写PCI配置空间
+0x004 OpRegion : 0x899b0b50 _NSObj
+0x008 Address : 0xd8
+0x00c Size : 4
+0x010 Data : 0x89569c28 -> 0x40e98101
+0x014 Context : 0
+0x018 CompletionHandler : 0xf7420914 Void
+0x01c CompletionContext : 0x895680ac 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 ''


#define PCISUPP_GOT_SCOPE 0x1000

#define PCISUPP_GOT_SLOT_INFO 0x100


1: kd> g
Breakpoint 47 hit
eax=00000000 ebx=899a9608 ecx=00000004 edx=00000028 esi=00000000 edi=00000000
eip=804f2676 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!HalSetBusDataByOffset:
804f2676 55 push ebp
1: kd> dv
BusDataType = PCIConfiguration (0n4)
BusNumber = 0
SlotNumber = 0
Buffer = 0x89569c28
Offset = 0xd8
Length = 4
bus = struct _BUS_HANDLER
1: kd> dd 0x89569c28
89569c28 40e98101 ffffffff 00000000 00000000


0: kd> p
Breakpoint 42 hit
eax=00000001 ebx=899a9608 ecx=8997e000 edx=00002707 esi=89568000 edi=f7433f60
eip=f74207d4 esp=f791abc8 ebp=f791abec 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!RestartContext:
f74207d4 55 push ebp
1: kd> kc
#
00 ACPI!RestartContext
01 ACPI!RestartCtxtCallback
02 ACPI!PciConfigSpaceHandlerWorker
03 ACPI!GetPciAddressWorker
04 ACPI!ACPIGetWorkerForInteger
05 ACPI!AsyncCallBack
06 ACPI!RunContext
07 ACPI!DispatchCtxtQueue
08 ACPI!StartTimeSlicePassive
09 ACPI!ACPIWorker
0a nt!PspSystemThreadStartup
0b nt!KiThreadStartup
1: kd> dv
pctxt = 0x89568000
fDelayExecute = 0x01 ''

1: kd> dx -r1 ((ACPI!_ctxt *)0x89568000)
((ACPI!_ctxt *)0x89568000) : 0x89568000 [Type: _ctxt *]
[+0x000] dwSig : 0x54585443 [Type: unsigned long]
[+0x004] pbCtxtEnd : 0x8956a000 : 0x0 [Type: unsigned char *]
[+0x008] listCtxt [Type: _List]
[+0x010] listQueue [Type: _List]
[+0x018] pplistCtxtQueue : 0x0 [Type: _List * *]
[+0x01c] plistResources : 0x89568198 [Type: _List *]
[+0x020] dwfCtxt : 0x20 [Type: unsigned long]
[+0x024] pnsObj : 0x899b464c [Type: _NSObj *]
[+0x028] pnsScope : 0x899b40ac [Type: _NSObj *]
[+0x02c] powner : 0x895681ac [Type: _objowner *]
[+0x030] pcall : 0x89569d18 [Type: _call *]
[+0x034] pnctxt : 0x0 [Type: _nestedctxt *]
[+0x038] dwSyncLevel : 0xf [Type: unsigned long]
[+0x03c] pbOp : 0x899b4122 : 0x0 [Type: unsigned char *]
[+0x040] Result [Type: _ObjData]
[+0x054] pfnAsyncCallBack : 0xf741eeb5 [Type: void (__cdecl*)(_NSObj *,long,_ObjData *,void *)]
[+0x058] pdataCallBack : 0x8996866c [Type: _ObjData *]
[+0x05c] pvContext : 0xf789a160 [Type: void *]
[+0x060] Timer [Type: _KTIMER]
[+0x088] Dpc [Type: _KDPC]
[+0x0a8] pheapCurrent : 0x895680bc [Type: _heap *]
[+0x0ac] CtxtData [Type: _ctxtdata]
[+0x0bc] LocalHeap [Type: _heap]
1: kd> dx -r1 (*((ACPI!_heap *)0x895680bc))
(*((ACPI!_heap *)0x895680bc)) [Type: _heap]
[+0x000] dwSig : 0x50414548 [Type: unsigned long]
[+0x004] pbHeapEnd : 0x89569c08 : 0x57 [Type: unsigned char *]
[+0x008] pheapHead : 0x895680bc [Type: _heap *]
[+0x00c] pheapNext : 0x0 [Type: _heap *]
[+0x010] pbHeapTop : 0x895681f0 : 0x0 [Type: unsigned char *]
[+0x014] plistFreeHeap : 0x0 [Type: _List *]
[+0x018] Heap [Type: _heapobjhdr]
1: kd> dt framehdr 0x89569c08
ACPI!FRAMEHDR
+0x000 dwSig : 0x41435257
+0x004 dwLen : 0x30
+0x008 dwfFrame : 3
+0x00c pfnParse : 0xf7417c1d long ACPI!WriteCookAccess+0


0: kd> kc
#
00 ACPI!RunContext
01 ACPI!InsertReadyQueue
02 ACPI!RestartContext
03 ACPI!SyncEvalObject

04 ACPI!AMLIEvalNameSpaceObject
05 ACPI!ACPIGet
06 ACPI!ACPIDetectPdoDevices
07 ACPI!ACPIRootIrpQueryBusRelations
08 ACPI!ACPIRootIrpQueryDeviceRelations
09 ACPI!ACPIDispatchIrp
0a nt!IofCallDriver
0b nt!IopSynchronousCall
0c nt!IopQueryDeviceRelations
0d nt!PipEnumerateDevice
0e nt!PipProcessDevNodeTree
0f nt!PipDeviceActionWorker
10 nt!PipRequestDeviceAction
11 nt!IopInitializeBootDrivers
12 nt!IoInitSystem
13 nt!Phase1Initialization
14 nt!PspSystemThreadStartup
15 nt!KiThreadStartup
0: kd> dv
pctxt = 0x89568000
pctxtSave = 0xf741d711
pkthSave = 0x00000008
rc = 0n-1990819840


0: kd> x acpi!greadyqueue
f743a928 ACPI!gReadyQueue = struct _ctxtq
0: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))
(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]
[+0x000] dwfCtxtQ : 0x0 [Type: unsigned long]
[+0x004] pkthCurrent : 0x899a1020 [Type: _KTHREAD *]
[+0x008] pctxtCurrent : 0x89568000 [Type: _ctxt *]

[+0x00c] plistCtxtQ : 0x0 [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] mutCtxt

NTSTATUS LOCAL SyncEvalObject(PNSOBJ pns, POBJDATA pdataResult, int icArgs,
POBJDATA pdataArgs)
{

while (rc == AMLISTA_PENDING)
{
if ((rc = KeWaitForSingleObject(&seEvalObj.Event, Executive,
KernelMode, FALSE,
(PLARGE_INTEGER)NULL)) ==
STATUS_SUCCESS)
{
if (seEvalObj.rcCompleted == AMLISTA_CONTINUE)
{
rc = RestartContext(seEvalObj.pctxt, FALSE);
}
else
{
rc = AMLIERR(seEvalObj.rcCompleted);
}
}
else
{
rc = AMLI_LOGERR(AMLIERR_FATAL,
("SyncEvalObject: object synchronization failed (rc=%x)",
rc));
}
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/29 7:56:08

长尾关键词策略与SEO配合,提升网站曝光的高效方案

长尾关键词策略与SEO的结合为网站提升曝光率提供了有效的解决方案。长尾关键词通常由多个词组成,虽然搜索量较低,但能够精准满足用户的特定需求。在竞爭激烈的在线环境中,合理选择和布局这些关键词,有助于提高搜索引擎排名。用户在…

作者头像 李华
网站建设 2026/3/22 9:09:43

徒步 VS 索道?衡山出行方式全解析,轻松玩转千年古岳

南岳衡山位于湖南省中部偏东南,其自然景观与人文积淀共同构成了这片山岳的核心风貌。作为中国重要的山岳景观之一,衡山以其四季分明的景致、保存完好的古建筑群和源远流长的文化传统而闻名。衡山的自然景观具有鲜明的季节特征。春季,山间云雾…

作者头像 李华
网站建设 2026/3/23 23:24:10

导师推荐9个降AI率网站,破解论文AI检测难题,千笔·降AIGC助手高效降AIGC

AI降重工具:破解论文查重难题的高效方案 随着人工智能技术在学术领域的广泛应用,越来越多的本科生开始面临“论文AI痕迹过重”、“AIGC率过高”的问题。尤其是在使用AI写作工具辅助撰写论文后,如何有效降低AI检测指标、避免重复率超标&#x…

作者头像 李华
网站建设 2026/3/27 16:53:34

Thinkphp和Laravel框架的高校学生宿舍管理系统的设计与实现 功能多

目录系统概述核心功能模块技术实现特点扩展功能开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于ThinkPHP和Laravel框架的高校学生宿舍管理系统旨在实现宿舍资源的数字化管理,涵盖学生信息管理、宿舍分…

作者头像 李华
网站建设 2026/3/29 3:34:29

别再只怪手机!孩子近视,这些被忽略的因素才是关键

‍  很多家长发现孩子近视后,第一反应就是“是不是玩手机太多了”,立刻严格管控电子产品使用时间,可有些孩子即便很少碰手机,视力还是悄悄下降。儿童近视的形成从来不是单一因素导致的,电子产品只是其中一个诱因&…

作者头像 李华
网站建设 2026/3/20 14:58:56

一个Java项目从0到1实现的全过程是怎样的?

01 整体介绍 背景 这个项目诞生的背景和企业内生的需求不太一样,主要是某一天二哥说,“我们一起搞事吧”, 楼仔问,“搞什么”,然后这个项目的需求就来了 言归正传,我们主要的目的是希望打造一个切实可用的…

作者头像 李华