news 2026/4/23 9:57:10

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

作者头像

张小明

前端开发工程师

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

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


Method (IVOC, 2, NotSerialized)
{
Store (Or (Or (ShiftLeft (0x40E9, 0x10), ShiftLeft (Arg0, 0x08
)), Arg1), \_SB.PCI0.OEMR)
}


Method (VMPS, 1, NotSerialized)
{
Acquire (OEML, 0xFFFF)
IVOC (0x81, Arg0)
Store (\_SB.PCI0.OEMR, Local0)
Release (OEML)
Return (Local0)
}


Device (BAT1)
{
Name (_HID, EisaId ("PNP0C0A")) // _HID: Hardware ID
Name (_UID, 0x01) // _UID: Unique ID
Name (_PCL, Package (0x01) // _PCL: Power Consumer List
{
\_SB
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (VMPS (0x01))
}

0: kd> kc
#
00 ACPI!ACPIDetectPdoDevices
01 ACPI!ACPIRootIrpQueryBusRelations
02 ACPI!ACPIRootIrpQueryDeviceRelations
03 ACPI!ACPIDispatchIrp
04 nt!IofCallDriver
05 nt!IopSynchronousCall
06 nt!IopQueryDeviceRelations
07 nt!PipEnumerateDevice
08 nt!PipProcessDevNodeTree
09 nt!PipDeviceActionWorker
0a nt!PipRequestDeviceAction
0b nt!IopInitializeBootDrivers
0c nt!IoInitSystem
0d nt!Phase1Initialization
0e nt!PspSystemThreadStartup
0f nt!KiThreadStartup


NTSTATUS
ACPIDetectPdoDevices(
IN PDEVICE_OBJECT DeviceObject,
IN PDEVICE_RELATIONS *DeviceRelations
)
{
//
// Update the current device status
//
status = ACPIGetDevicePresenceSync(
deviceExtension,
(PVOID *) &deviceStatus,
NULL
);

//
// This macro is used to get the device status synchronously
//
#define ACPIGetDevicePresenceSync( \
DeviceExtension, \
Buffer, \
BufferSize \
) \
ACPIGetDevicePresence( \
DeviceExtension, \
GET_PROP_SKIP_CALLBACK, \
NULL, \
NULL, \
Buffer, \
BufferSize \
)

//
// This macro is used to get the device presence
//
#define ACPIGetDevicePresence( \
DeviceExtension, \
Flags, \
CallBack, \
Context, \
Buffer, \
BufferSize \
) \
ACPIGet( \
DeviceExtension, \
PACKED_STA, \
(GET_REQUEST_INTEGER | \
GET_TYPE_INTEGER | \
GET_CONVERT_TO_DEVICE_PRESENCE | \
Flags ), \
NULL, \
0, \
CallBack, \
Context, \
(PVOID *) Buffer, \
(PULONG) BufferSize \
)

0: kd> kc
#
00 ACPI!ACPIGet
01 ACPI!ACPIDetectPdoDevices
02 ACPI!ACPIRootIrpQueryBusRelations
03 ACPI!ACPIRootIrpQueryDeviceRelations
04 ACPI!ACPIDispatchIrp
05 nt!IofCallDriver
06 nt!IopSynchronousCall
07 nt!IopQueryDeviceRelations
08 nt!PipEnumerateDevice
09 nt!PipProcessDevNodeTree
0a nt!PipDeviceActionWorker
0b nt!PipRequestDeviceAction
0c nt!IopInitializeBootDrivers
0d nt!IoInitSystem
0e nt!Phase1Initialization
0f nt!PspSystemThreadStartup
10 nt!KiThreadStartup
0: kd> dv
Target = 0x899ae008
ObjectID = 0x4154535f
Flags = 0x2004 0802
SimpleArgument = 0x00000000
SimpleArgumentSize = 0


#define GET_PROP_ASYNCHRONOUS 0x4000 0000
#define GET_PROP_SKIP_CALLBACK 0x20000000
Flags = 0x2004 0802

} else {

deviceExtension = (PDEVICE_EXTENSION) Target;
acpiObject = deviceExtension->AcpiObject;

}

0: kd> dt acpi!_DEVICE_EXTENSION 0x899ae008
+0x000 Flags : 0x00806000`2000010a
+0x000 UFlags : __unnamed
+0x008 Signature : 0x5f534750
+0x00c DebugFlags : 0
+0x010 DispatchTable : (null)
+0x014 WorkContext : WORK_QUEUE_CONTEXT
+0x014 Fdo : _FDO_DEVICE_EXTENSION
+0x014 Filter : _FILTER_DEVICE_EXTENSION
+0x014 Pdo : _PDO_DEVICE_EXTENSION
+0x058 WorkQueue : EXTENSION_WORKER
+0x058 Button : BUTTON_EXTENSION
+0x058 Thermal : THERMAL_EXTENSION
+0x058 LinkNode : LINK_NODE_EXTENSION
+0x058 Dock : DOCK_EXTENSION
+0x058 Processor : _PROCESSOR_DEVICE_EXTENSION
+0x088 DeviceState : 0 ( Stopped )
+0x08c PreviousState : 0 ( Stopped )
+0x090 PowerInfo : _ACPI_POWER_INFO
+0x10c DeviceID : 0x899841a0 "ACPI\PNP0C0A"
+0x10c Address : 0x899841a0
+0x110 InstanceID : 0x898a8ed8 "1"
+0x114 ResourceList : (null)
+0x118 PnpResourceList : (null)
+0x11c OutstandingIrpCount : 0n1
+0x120 ReferenceCount : 0n4
+0x124 HibernatePathCount : 0n0
+0x128 RemoveEvent : (null)
+0x12c AcpiObject : 0x899b4518 _NSObj
+0x130 DeviceObject : (null)
+0x134 TargetDeviceObject : (null)
+0x138 PhysicalDeviceObject : (null)
+0x13c ParentExtension : 0x89981a18 _DEVICE_EXTENSION
+0x140 ChildDeviceList : _LIST_ENTRY [ 0x899ae148 - 0x899ae148 ]
+0x148 SiblingDeviceList : _LIST_ENTRY [ 0x899aefa0 - 0x899c0ea0 ]
+0x150 EjectDeviceHead : _LIST_ENTRY [ 0x899ae158 - 0x899ae158 ]
+0x158 EjectDeviceList : _LIST_ENTRY [ 0x899ae160 - 0x899ae160 ]
0: kd> dv acpiObject
acpiObject = 0x899b4518
0: kd> db 0x899b4518
899b4518 70 44 9b 89 04 48 9b 89-f0 f0 9a 89 5c 45 9b 89 pD...H......\E..
899b4528 42 41 54 31 30 f3 9a 89-70 44 9b 89 00 00 06 00 BAT10...pD......


//
// Go out and see if the requested object is present
//
acpiObject = ACPIAmliGetNamedChild(
acpiObject,
ObjectID
);
if (!acpiObject) {


0: kd> t
eax=00000000 ebx=f743b938 ecx=00806000 edx=00000000 esi=89968640 edi=89968648
eip=f73fa418 esp=f789a1ac ebp=f789a1f4 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!ACPIAmliGetNamedChild:
f73fa418 55 push ebp
0: kd> db f789a1ac
f789a1ac dd 78 40 f7 18 45 9b 89-5f 53 54 41 28 e1 9a 89 .x@..E.._STA(...
f789a1bc 08 e0 9a 89 20 b6 43 f7-00 00 00 00 ff ff ff ff .... .C.........
f789a1cc cc ad 89 f7 30 00 00 00-28 e1 9a 89 00 00 00 00 ....0...(.......
f789a1dc 00 00 00 00 0a 01 00 20-08 e0 9a 89 00 00 00 00 ....... ........
f789a1ec 64 73 40 f7 46 03 00 00-50 a2 89 f7 00 03 40 f7 ds@.F...P.....@.
f789a1fc 18 45 9b 89 5f 53 54 41-02 08 04 20 00 00 00 00 .E.._STA... ....
f789a20c 00 00 00 00 00 00 00 00-00 00 00 00 2c a2 89 f7 ............,...
f789a21c 00 00 00 00 ca 2b ae 80-00 00 00 00 18 1a 98 89 .....+..........
0: kd> gu
eax=899b464c ebx=f743b938 ecx=4154535f edx=00000000 esi=89968640 edi=89968648
eip=f74078dd esp=f789a1b8 ebp=f789a1f4 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

0: kd> db 899b464c
899b464c 08 46 9b 89 b4 46 9b 89-18 45 9b 89 00 00 00 00 .F...F...E......
899b465c 5f 53 54 41 30 f3 9a 89-08 46 9b 89 00 00 08 00 _STA0....F......
899b466c 00 00 00 00 00 00 00 00-18 00 00 00 90 46 9b 89 .............F..
899b467c 00 00 00 00 00 00 00 00-48 4d 45 54 24 00 00 00 ........HMET$...
899b468c 00 f0 9a 89 00 00 00 00-00 00 00 00 00 00 00 00 ................
899b469c 00 00 00 00 00 a4 56 4d-50 53 0a 01 48 4e 53 4f ......VMPS..HNSO
899b46ac 44 00 00 00 00 f0 9a 89-4c 46 9b 89 1c 47 9b 89 D.......LF...G..
899b46bc 18 45 9b 89 00 00 00 00-5f 42 49 46 30 f3 9a 89 .E......_BIF0...

0: kd> dt nsobj 899b464c
ACPI!NSOBJ
+0x000 list : _List
+0x008 pnsParent : 0x899b4518 _NSObj
+0x00c pnsFirstChild : (null)
+0x010 dwNameSeg : 0x4154535f
+0x014 hOwner : 0x899af330 Void
+0x018 pnsOwnedNext : 0x899b4608 _NSObj
+0x01c ObjData : _ObjData
+0x030 Context : (null)
+0x034 dwRefCount : 0
0: kd> db 0x899b4518
899b4518 70 44 9b 89 04 48 9b 89-f0 f0 9a 89 5c 45 9b 89 pD...H......\E..
899b4528 42 41 54 31 30 f3 9a 89-70 44 9b 89 00 00 06 00 BAT10...pD......


0: kd> dv async
async = 0x00 ''

if (async) {
。。。
} else {

//
// Evaluate the request
//
status = AMLIEvalNameSpaceObject(
acpiObject,
&(request->ResultData),
argumentCount,
argumentPtr
);

}

0: kd> kc
#
00 ACPI!AMLIEvalNameSpaceObject
01 ACPI!ACPIGet
02 ACPI!ACPIDetectPdoDevices
03 ACPI!ACPIRootIrpQueryBusRelations
04 ACPI!ACPIRootIrpQueryDeviceRelations
05 ACPI!ACPIDispatchIrp
06 nt!IofCallDriver
07 nt!IopSynchronousCall
08 nt!IopQueryDeviceRelations
09 nt!PipEnumerateDevice
0a nt!PipProcessDevNodeTree
0b nt!PipDeviceActionWorker
0c nt!PipRequestDeviceAction
0d nt!IopInitializeBootDrivers
0e nt!IoInitSystem
0f nt!Phase1Initialization
10 nt!PspSystemThreadStartup
11 nt!KiThreadStartup
0: kd> dv
pns = 0x899b464c
pdataResult = 0x8996866c
icArgs = 0n0
pdataArgs = 0x00000000
pHData = 0x00000008
0: kd> db 0x899b464c
899b464c 08 46 9b 89 b4 46 9b 89-18 45 9b 89 00 00 00 00 .F...F...E......
899b465c 5f 53 54 41 30 f3 9a 89-08 46 9b 89 00 00 08 00 _STA0....F......


rc = SyncEvalObject(pns, pdataResult, icArgs, pdataArgs);

0: kd> kc
#
00 ACPI!SyncEvalObject
01 ACPI!AMLIEvalNameSpaceObject
02 ACPI!ACPIGet

03 ACPI!ACPIDetectPdoDevices
04 ACPI!ACPIRootIrpQueryBusRelations
05 ACPI!ACPIRootIrpQueryDeviceRelations
06 ACPI!ACPIDispatchIrp
07 nt!IofCallDriver
08 nt!IopSynchronousCall
09 nt!IopQueryDeviceRelations
0a nt!PipEnumerateDevice
0b nt!PipProcessDevNodeTree
0c nt!PipDeviceActionWorker
0d nt!PipRequestDeviceAction
0e nt!IopInitializeBootDrivers
0f nt!IoInitSystem
10 nt!Phase1Initialization
11 nt!PspSystemThreadStartup
12 nt!KiThreadStartup
0: kd> dv
pns = 0x899b464c
pdataResult = 0x8996866c
icArgs = 0n0
pdataArgs = 0x00000000
seEvalObj = struct _syncevent


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 : 0x0 [Type: _KTHREAD *]
[+0x008] pctxtCurrent : 0x0 [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]

if (KeGetCurrentThread() == gReadyQueue.pkthCurrent)
{

else
{
LOGSCHEDEVENT('SYNC', (ULONG_PTR)KeGetCurrentIrql(), (ULONG_PTR)pns, 0);
rc = AsyncEvalObject(pns, pdataResult, icArgs, pdataArgs,
(PFNACB)EvalMethodComplete, &seEvalObj, FALSE);
}

if (KeGetCurrentIrql() < DISPATCH_LEVEL)
{
while (rc == AMLISTA_PENDING)
{
if ((rc = KeWaitForSingleObject(&seEvalObj.Event, Executive,
KernelMode, FALSE,
(PLARGE_INTEGER)NULL)) ==
STATUS_SUCCESS)

KeWaitForSingleObject表示需要等待任务完成!!!

0: kd> kc
#
00 ACPI!AsyncEvalObject
01 ACPI!SyncEvalObject
02 ACPI!AMLIEvalNameSpaceObject
03 ACPI!ACPIGet

04 ACPI!ACPIDetectPdoDevices
05 ACPI!ACPIRootIrpQueryBusRelations
06 ACPI!ACPIRootIrpQueryDeviceRelations
07 ACPI!ACPIDispatchIrp
08 nt!IofCallDriver
09 nt!IopSynchronousCall
0a nt!IopQueryDeviceRelations
0b nt!PipEnumerateDevice
0c nt!PipProcessDevNodeTree
0d nt!PipDeviceActionWorker
0e nt!PipRequestDeviceAction
0f nt!IopInitializeBootDrivers
10 nt!IoInitSystem
11 nt!Phase1Initialization
12 nt!PspSystemThreadStartup
13 nt!KiThreadStartup
0: kd> dv
pns = 0x899b464c
pdataResult = 0x8996866c
icArgs = 0n0


0: kd> bp acpi!RestartContext
breakpoint 42 redefined

else if (((rc = PushPost(pctxt, ProcessEvalObj, (ULONG_PTR)pns, 0,
&pctxt->Result)) == STATUS_SUCCESS) &&
((rc = ReadObject(pctxt, &pns->ObjData, &pctxt->Result)) !=
AMLISTA_PENDING))
{
fQueueContext = TRUE;
}

if (fQueueContext)
{

if ((rc = NewContext(&pctxt)) == STATUS_SUCCESS)
{
BOOLEAN fQueueContext = FALSE;

pctxt->pnsObj = pns;
pctxt->pnsScope = pns;
pctxt->pfnAsyncCallBack = pfnAsyncCallBack;
pctxt->pdataCallBack = pdataResult;
pctxt->pvContext = pvContext;

if (pns->ObjData.dwDataType == OBJTYPE_METHOD)
{
if ((rc = PushCall(pctxt, pns, &pctxt->Result)) == STATUS_SUCCESS)
{
PCALL pcall;

ASSERT(((PFRAMEHDR)pctxt->LocalHeap.pbHeapEnd)->dwSig ==
SIG_CALL);

pcall = (PCALL)pctxt->LocalHeap.pbHeapEnd;


0: kd> dt _CTXT 89568000
ACPI!_ctxt
+0x000 dwSig : 0x54585443
+0x004 pbCtxtEnd : 0x8956a000 ""
+0x008 listCtxt : _List
+0x010 listQueue : _List
+0x018 pplistCtxtQueue : (null)
+0x01c plistResources : (null)
+0x020 dwfCtxt : 0
+0x024 pnsObj : 0x899b464c _NSObj
+0x028 pnsScope : 0x899b464c _NSObj
+0x02c powner : (null)
+0x030 pcall : (null)
+0x034 pnctxt : (null)
+0x038 dwSyncLevel : 0
+0x03c pbOp : (null)
+0x040 Result : _ObjData
+0x054 pfnAsyncCallBack : 0xf741eeb5 void ACPI!EvalMethodComplete+0
+0x058 pdataCallBack : 0x8996866c _ObjData
+0x05c pvContext : 0xf789a160 Void
+0x060 Timer : _KTIMER
+0x088 Dpc : _KDPC
+0x0a8 pheapCurrent : 0x895680bc _heap
+0x0ac CtxtData : _ctxtdata
+0x0bc LocalHeap : _heap
0: kd> dx -id 0,0,899a2278 -r1 (*((ACPI!_heap *)0x895680bc))
(*((ACPI!_heap *)0x895680bc)) [Type: _heap]
[+0x000] dwSig : 0x50414548 [Type: unsigned long]
[+0x004] pbHeapEnd : 0x89569f34 : 0x43 [Type: unsigned char *]
[+0x008] pheapHead : 0x895680bc [Type: _heap *]
[+0x00c] pheapNext : 0x0 [Type: _heap *]
[+0x010] pbHeapTop : 0x895680d4 : 0x0 [Type: unsigned char *]
[+0x014] plistFreeHeap : 0x0 [Type: _List *]
[+0x018] Heap [Type: _heapobjhdr]
0: kd> dt framehdr 0x89569f34
ACPI!FRAMEHDR
+0x000 dwSig : 0x4c4c4143
+0x004 dwLen : 0xcc
+0x008 dwfFrame : 2
+0x00c pfnParse : 0xf7427709 long ACPI!ParseCall+0
0: kd> dt _call 0x89569f34
ACPI!_call
+0x000 FrameHdr : _framehdr
+0x010 pcallPrev : (null)
+0x014 pownerPrev : (null)
+0x018 pnsMethod : 0x899b464c _NSObj
+0x01c iArg : 0n0
+0x020 icArgs : 0n0
+0x024 pdataArgs : (null)
+0x028 Locals : [8] _ObjData
+0x0c8 pdataResult : 0x89568040 _ObjData
0: kd> dx -id 0,0,899a2278 -r1 ((ACPI!_NSObj *)0x899b464c)
((ACPI!_NSObj *)0x899b464c) : 0x899b464c [Type: _NSObj *]
[+0x000] list [Type: _List]
[+0x008] pnsParent : 0x899b4518 [Type: _NSObj *]
[+0x00c] pnsFirstChild : 0x0 [Type: _NSObj *]
[+0x010] dwNameSeg : 0x4154535f [Type: unsigned long]
[+0x014] hOwner : 0x899af330 [Type: void *]
[+0x018] pnsOwnedNext : 0x899b4608 [Type: _NSObj *]
[+0x01c] ObjData [Type: _ObjData]
[+0x030] Context : 0x0 [Type: void *]
[+0x034] dwRefCount : 0x0 [Type: unsigned long]
0: kd> db 0x899b464c
899b464c 08 46 9b 89 b4 46 9b 89-18 45 9b 89 00 00 00 00 .F...F...E......
899b465c 5f 53 54 41 30 f3 9a 89-08 46 9b 89 00 00 08 00 _STA0....F......
899b466c 00 00 00 00 00 00 00 00-18 00 00 00 90 46 9b 89 .............F..
899b467c 00 00 00 00 00 00 00 00-48 4d 45 54 24 00 00 00 ........HMET$...
899b468c 00 f0 9a 89 00 00 00 00-00 00 00 00 00 00 00 00 ................
899b469c 00 00 00 00 00 a4 56 4d-50 53 0a 01 48 4e 53 4f ......VMPS..HNSO
899b46ac 44 00 00 00 00 f0 9a 89-4c 46 9b 89 1c 47 9b 89 D.......LF...G..
899b46bc 18 45 9b 89 00 00 00 00-5f 42 49 46 30 f3 9a 89 .E......_BIF0...
0: kd> db 0x899b4518
899b4518 70 44 9b 89 04 48 9b 89-f0 f0 9a 89 5c 45 9b 89 pD...H......\E..
899b4528 42 41 54 31 30 f3 9a 89-70 44 9b 89 00 00 06 00 BAT10...pD......


if (fQueueContext)
{
rc = RestartContext(pctxt, FALSE);
}

0: kd> kc
#
00 ACPI!RestartContext
01 ACPI!AsyncEvalObject
02 ACPI!SyncEvalObject
03 ACPI!AMLIEvalNameSpaceObject
04 ACPI!ACPIGet
05 ACPI!ACPIDetectPdoDevices
06 ACPI!ACPIRootIrpQueryBusRelations
07 ACPI!ACPIRootIrpQueryDeviceRelations
08 ACPI!ACPIDispatchIrp
09 nt!IofCallDriver
0a nt!IopSynchronousCall
0b nt!IopQueryDeviceRelations
0c nt!PipEnumerateDevice
0d nt!PipProcessDevNodeTree
0e nt!PipDeviceActionWorker
0f nt!PipRequestDeviceAction
10 nt!IopInitializeBootDrivers
11 nt!IoInitSystem
12 nt!Phase1Initialization
13 nt!PspSystemThreadStartup
14 nt!KiThreadStartup
0: kd> dv
pctxt = 0x89568000
fDelayExecute = 0x00 ''


if (KeGetCurrentIrql() < DISPATCH_LEVEL)
{
AcquireMutex(&gReadyQueue.mutCtxtQ);
rc = InsertReadyQueue(pctxt, fDelayExecute);
ReleaseMutex(&gReadyQueue.mutCtxtQ);
}

0: kd> kc
#
00 ACPI!InsertReadyQueue
01 ACPI!RestartContext
02 ACPI!AsyncEvalObject
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
fDelayExecute = 0x00 ''

else if ((gReadyQueue.pkthCurrent == NULL) &&
!(gReadyQueue.dwfCtxtQ & CQF_PAUSED))
//
// We only execute the method if we are not in paused state.
//
{
LOGSCHEDEVENT('EVAL', (ULONG_PTR)pctxt, (ULONG_PTR)
(pctxt->pnctxt? pctxt->pnctxt->pnsObj: pctxt->pnsObj),
(ULONG_PTR)pctxt->pbOp);
//
// There is no active context and we can execute it immediately.
//
rc = RunContext(pctxt);


0: kd> kc
#
00 ACPI!RunContext
01 ACPI!InsertReadyQueue
02 ACPI!RestartContext
03 ACPI!AsyncEvalObject
04 ACPI!SyncEvalObject
05 ACPI!AMLIEvalNameSpaceObject
06 ACPI!ACPIGet
07 ACPI!ACPIDetectPdoDevices
08 ACPI!ACPIRootIrpQueryBusRelations
09 ACPI!ACPIRootIrpQueryDeviceRelations
0a ACPI!ACPIDispatchIrp
0b nt!IofCallDriver
0c nt!IopSynchronousCall
0d nt!IopQueryDeviceRelations
0e nt!PipEnumerateDevice
0f nt!PipProcessDevNodeTree
10 nt!PipDeviceActionWorker
11 nt!PipRequestDeviceAction
12 nt!IopInitializeBootDrivers
13 nt!IoInitSystem
14 nt!Phase1Initialization
15 nt!PspSystemThreadStartup
16 nt!KiThreadStartup
0: kd> dv
pctxt = 0x89568000
pctxtSave = 0xf741d710
pkthSave = 0x00000008
rc = 0n-1990819840

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

软件测试从业者公众号内容热度解析与优化策略

在微信公众号生态中&#xff0c;内容热度直接决定技术传播效果。对于软件测试从业者&#xff0c;精准识别高热度主题&#xff08;如自动化测试框架或AI应用&#xff09;能显著提升用户粘性和行业影响力。本报告结合数据分析指标、工具应用和行业案例&#xff0c;提供可落地的优…

作者头像 李华
网站建设 2026/4/18 2:55:14

计算机毕业设计之基于Spring boot食品安全信息管理系统

食品安全信息管理系统设计的目的是为用户提供食品信息、科普专栏、食品检测、检测结果、交流论坛等方面的平台。 与PC端应用程序相比&#xff0c;食品安全信息管理系统的设计主要面向于用户&#xff0c;旨在为管理员和用户提供一个食品安全信息管理系统。用户可以通过APP及时查…

作者头像 李华
网站建设 2026/4/22 18:49:33

计算机毕业设计之基于SSM的社区疫情管理系统的设计与实现

社区疫情管理系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的java进行编写&#xff0c;JSP技术&#xff0c;使用了SSM框架。该系统从两个对象&#xff1a;由管理员和居民来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对居…

作者头像 李华
网站建设 2026/4/18 9:35:43

金属基板常见失效模式分析与可靠性设计改进

在金属基板量产售后与失效分析案例中&#xff0c;高频失效类型&#xff1a;绝缘层击穿、铜箔剥离、基板翘曲变形、热疲劳开裂、焊接不良。这些问题 80% 源于设计阶段参数不合理、材料选型错误、工艺适配缺失&#xff0c;而非生产加工瑕疵。本文系统解析主流失效模式、成因&…

作者头像 李华
网站建设 2026/4/18 3:39:44

云服务器ECS-高性能弹性计算服务-99.995%可用性保障

云服务器ECS概述云服务器ECS&#xff08;Elastic Compute Service&#xff09;是一种高性能、可弹性伸缩的云计算服务&#xff0c;提供安全可靠的计算能力。用户可根据需求灵活选择CPU、内存、带宽等配置&#xff0c;支持多种操作系统和应用场景。ECS具备99.995%的高可用性保障…

作者头像 李华