news 2026/3/30 21:22:06

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/3/28 4:55:15

【大数据毕设源码分享】基于springboot+数据可视化用户信用评估系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/24 12:56:34

YOLOv11 知识蒸馏完整实战:Teacher–Student 训练策略与性能飞跃

文章目录 YOLOv11知识蒸馏实战:让小模型拥有大模型90%精度,速度提升3倍的终极教程 一、知识蒸馏:让小模型“模仿”大模型的底层逻辑 二、原理拆解:双阶段蒸馏的“精准投喂” 三、核心代码实现:手把手改造YOLOv11 步骤1:定义蒸馏损失函数 步骤2:构建教师-学生模型架构 步…

作者头像 李华
网站建设 2026/3/26 23:37:48

SGMICRO圣邦微 SGM8933YN6G/TR SOT23-6 运算放大器

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

作者头像 李华
网站建设 2026/3/30 4:56:01

积木报表:一键导出 Word,让报表办公更高效

引言 在日常办公中,报表导出是数据分析工作的重要环节。传统的报表导出方式往往需要复杂的操作步骤,或者导出格式不够美观,影响工作效率。现在,积木报表(JimuReport) 推出了全新的 Word 导出功能&#xff…

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

当科研绘图遇上“魔法画笔”:书匠策AI如何让数据“开口说话”

在学术江湖里,论文插图常被戏称为“科研门面”——一张精准又吸睛的图表,能让复杂的研究结论瞬间“破圈”。但传统绘图工具的“三大酷刑”却让无数研究者抓狂:Excel柱状图千篇一律、Python代码调试到凌晨、期刊格式要求堪比“密室逃脱”……直…

作者头像 李华