news 2026/4/24 0:39:21

CTXT8997c000阻塞了需要先运行CTXT0x89901000如何回到CTXT8997c000继续运行--非常重要

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CTXT8997c000阻塞了需要先运行CTXT0x89901000如何回到CTXT8997c000继续运行--非常重要

CTXT8997c000阻塞了需要先运行CTXT0x89901000如何回到CTXT8997c000继续运行--非常重要

第一部分:两个关键的函数:
NTSTATUS LOCAL WriteCookAccess(PCTXT pctxt, PWRCOOKACC pwca, NTSTATUS rc)
{

                pwca->FrameHdr.dwfFrame++;
                ASSERT(!(pctxt->dwfCtxt & CTXTF_READY));
                rc = pwca->prsa->pfnCookAccess(RSACCESS_READ, pwca->pnsBase,
                                               (ULONG_PTR)pwca->dwAddr,
                                               pwca->dwSize,
                                               &pwca->dwDataTmp,
                                               pwca->prsa->uipCookParam,
                                               RestartCtxtCallback,            //关键
                                               &pctxt->CtxtData);            //关键,阻塞了可以找到原来的_CTXT


VOID EXPORT RestartCtxtCallback(PCTXTDATA pctxtdata)
{
    TRACENAME("RESTARTCTXTCALLBACK")
    PCTXT pctxt = CONTAINING_RECORD(pctxtdata, CTXT, CtxtData);

    ENTER(2, ("RestartCtxtCallback(pctxt=%x)\n", pctxt));

    ASSERT(pctxt->dwSig == SIG_CTXT);
    LOGSCHEDEVENT('RSCB', (ULONG_PTR)pctxt, 0, 0);
    RestartContext(pctxt,
                   (BOOLEAN)((pctxt->dwfCtxt & CTXTF_ASYNC_EVAL) == 0));

    EXIT(2, ("RestartCtxtCallback!\n"));
}       //RestartCtxtCallback

第二部分:

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

        status = STATUS_OBJECT_NAME_NOT_FOUND;
        goto ACPIGetExit;

    }

1: kd> p
Breakpoint 29 hit
eax=00000000 ebx=f743b938 ecx=00000000 edx=00000000 esi=899050a0 edi=899050a8
eip=f74078d8 esp=f791ab24 ebp=f791ab68 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> t
eax=00000000 ebx=f743b938 ecx=00000000 edx=00000000 esi=899050a0 edi=899050a8
eip=f73fa418 esp=f791ab20 ebp=f791ab68 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!ACPIAmliGetNamedChild:
f73fa418 55              push    ebp
1: kd> dv
     AcpiObject = 0x899affac
       ObjectId = 0x5244415f
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  ................
899affdc  58 0d 9c 89 00 00 00 00-48 4f 52 47 34 00 00 00  X.......HORG4...
899affec  00 f0 9a 89 50 00 00 00-30 00 00 00 02 00 00 00  ....P...0.......
899afffc  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
899b000c  00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f  ............HNSO
899b001c  44 00 00 00 00 f0 9a 89-64 a0 91 89 68 00 9b 89  D.......d...h...
1: kd> db f791ab20
f791ab20  dd 78 40 f7 ac ff 9a 89-5f 41 44 52 03 01 00 00  .x@....._ADR....
f791ab30  08 f4 9b 89 00 00 00 00-00 00 00 00 ff ff ff ff  ................
f791ab40  9c ad 91 f7 30 00 00 00-03 01 00 00 00 00 00 00  ....0...........
f791ab50  00 00 00 00 68 ab 91 f7-00 00 00 00 00 00 00 08  ....h...........
f791ab60  64 73 40 f7 46 03 00 01-e4 ab 91 f7 5e cf 40 f7  ds@.F.......^.@.
f791ab70  ac ff 9a 89 5f 41 44 52-02 04 04 48 00 00 00 00  ...._ADR...H....
f791ab80  00 00 00 00 ea ce 40 f7-08 f4 9b 89 20 f4 9b 89  ......@..... ...
f791ab90  00 00 00 00 34 f4 9b 89-2c d6 40 f7 78 73 98 89  ....4...,.@.xs..

1: kd> gu
eax=899b00f0 ebx=f743b938 ecx=5244415f edx=00000000 esi=899050a0 edi=899050a8
eip=f74078dd 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+0x225:
f74078dd 85c0            test    eax,eax

    if (!acpiObject) {        不符合条件


1: kd> dt nsobj 899b00f0
ACPI!NSOBJ
   +0x000 list             : _List
   +0x008 pnsParent        : 0x899affac _NSObj
   +0x00c pnsFirstChild    : (null)
   +0x010 dwNameSeg        : 0x5244415f
   +0x014 hOwner           : 0x899af330 Void
   +0x018 pnsOwnedNext     : 0x899b00ac _NSObj
   +0x01c ObjData          : _ObjData
   +0x030 Context          : (null)
   +0x034 dwRefCount       : 0
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  ................
899affdc  58 0d 9c 89 00 00 00 00-48 4f 52 47 34 00 00 00  X.......HORG4...
899affec  00 f0 9a 89 50 00 00 00-30 00 00 00 02 00 00 00  ....P...0.......
899afffc  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
899b000c  00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f  ............HNSO
899b001c  44 00 00 00 00 f0 9a 89-64 a0 91 89 68 00 9b 89  D.......d...h...
1: kd> dx -id 0,0,899a2278 -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 *]

    //
    // What we do now depends on wether or not the user wants us to
    // behave async or sync
    //
    if (async) {

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


1: kd> kc
 #
00 ACPI!AMLIAsyncEvalObject
01 ACPI!ACPIGet
02 ACPI!GetPciAddressWorker
03 ACPI!GetPciAddress
04 ACPI!PciConfigSpaceHandlerWorker
05 ACPI!PciConfigSpaceHandler
06 ACPI!InternalOpRegionHandler
07 ACPI!WriteCookAccess
08 ACPI!RunContext
09 ACPI!InsertReadyQueue
0a ACPI!RestartCtxtPassive
0b ACPI!ACPIWorker
0c nt!PspSystemThreadStartup
0d nt!KiThreadStartup
1: kd> dv
             pns = 0x899b00f0
     pdataResult = 0x899050cc
          icArgs = 0n0
       pdataArgs = 0x00000000
pfnAsyncCallBack = 0xf7407364
       pvContext = 0x899050a0
          pHData = 0x00000008
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 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...........
899b0110  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
899b0120  00 00 00 00 00 00 00 00-48 4f 52 47 34 00 00 00  ........HORG4...
899b0130  00 f0 9a 89 d8 00 00 00-04 00 00 00 02 00 00 00  ................
899b0140  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
899b0150  00 00 00 00 00 00 00 00-00 00 00 00 48 46 44 55  ............HFDU
899b0160  28 00 00 00 00 f0 9a 89-00 00 00 00 00 00 00 00  (...............
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

1: kd> kc
 #
00 ACPI!AsyncEvalObject
01 ACPI!AMLIAsyncEvalObject
02 ACPI!ACPIGet
03 ACPI!GetPciAddressWorker
04 ACPI!GetPciAddress
05 ACPI!PciConfigSpaceHandlerWorker
06 ACPI!PciConfigSpaceHandler
07 ACPI!InternalOpRegionHandler
08 ACPI!WriteCookAccess
09 ACPI!RunContext
0a ACPI!InsertReadyQueue
0b ACPI!RestartCtxtPassive
0c ACPI!ACPIWorker
0d nt!PspSystemThreadStartup
0e nt!KiThreadStartup
1: kd> dv
             pns = 0x899b00f0
     pdataResult = 0x899050cc
          icArgs = 0n0
       pdataArgs = 0x00000000
pfnAsyncCallBack = 0xf7407364
       pvContext = 0x899050a0
          fAsync = 0x01 ''
           pctxt = 0x00000008


        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)
        {
            rc = RestartContext(pctxt, FALSE);
        }

1: kd> g
Breakpoint 42 hit
eax=00000000 ebx=899b010c ecx=899b010c edx=89902fe4 esi=f7438ca8 edi=00000000
eip=f74207d4 esp=f791aab8 ebp=f791aad8 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!RestartContext:
f74207d4 55              push    ebp
1: kd> kc
 #
00 ACPI!RestartContext
01 ACPI!AsyncEvalObject
02 ACPI!AMLIAsyncEvalObject
03 ACPI!ACPIGet
04 ACPI!GetPciAddressWorker
05 ACPI!GetPciAddress
06 ACPI!PciConfigSpaceHandlerWorker
07 ACPI!PciConfigSpaceHandler
08 ACPI!InternalOpRegionHandler
09 ACPI!WriteCookAccess
0a ACPI!RunContext
0b ACPI!InsertReadyQueue
0c ACPI!RestartCtxtPassive
0d ACPI!ACPIWorker
0e nt!PspSystemThreadStartup
0f nt!KiThreadStartup
1: kd> dv
          pctxt = 0x89901000
  fDelayExecute = 0x00 ''


NTSTATUS LOCAL InsertReadyQueue(PCTXT pctxt, BOOLEAN fDelayExecute)
{

        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

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

ue 使用MQTT

插件中选择:MQTTpython pip install hbmqttpip install hbmqttimport asyncio from hbmqtt.broker import Brokerconfig {listeners: {default: {type: tcp,bind: 0.0.0.0:1883}},sys_interval: 10,topic-check: {enabled: False} }broker Broker(config)async de…

作者头像 李华
网站建设 2026/4/23 10:48:59

华为开源自研AI框架昇思MindSpore应用案例:Pix2Pix实现图像转换

在实际应用场景中,由于训练数据集不足,所以很少有人会从头开始训练整个网络。普遍的做法是,在一个非常大的基础数据集上训练得到一个预训练模型,然后使用该模型来初始化网络的权重参数或作为固定特征提取器应用于特定的任务中。本…

作者头像 李华
网站建设 2026/4/23 10:47:02

SGMICRO圣邦微 SGM8931AYN5G/TR SOT-23-5 运算放大器

特性低失调电压:0.9mV(最大值)低输入电压噪声:30nV/√Hz低失真增益带宽积:1.5MHz 压摆率:0.8/μs轨到轨输出电源电压范围:1.8V 至 5.5V低电源电流:80μA/放大器(典型值&a…

作者头像 李华
网站建设 2026/4/23 10:49:56

学术图表进化论:书匠策AI如何用“视觉语法”重构科研叙事

——当数据可视化成为学术话语的“第二语言” 在学术圈,一张优秀的图表往往比千言万语更具说服力。然而,传统科研绘图工具的局限性正让研究者陷入“数据富矿、表达贫瘠”的困境:手动调整格式耗时耗力、跨学科图表规范难以兼顾、静态图表难以…

作者头像 李华
网站建设 2026/4/23 12:20:46

打破传统屏障:交互式芯片3D动画让半导体设备的复杂性触手可及

半导体行业是现代科技的核心,从智能手机到先进的计算机芯片,几乎所有现代电子设备都离不开半导体技术的支持。然而,半导体设备的复杂性往往让非业内人士难以理解,这不仅阻碍了潜在客户的购买决策,也使得技术交流变得困…

作者头像 李华
网站建设 2026/4/23 13:37:18

分布式事务Seata性能调优实战指南

性能调优的必要性与挑战 在微服务架构中,分布式事务管理是确保数据一致性的核心,而Seata作为主流解决方案,其性能直接影响系统吞吐量和响应时间。测试从业者常面临高并发下事务延迟、资源竞争等问题,例如在电商订单-库存场景中&a…

作者头像 李华