昌吉回族自治州网站建设_网站建设公司_JavaScript_seo优化
2026/1/20 10:37:30 网站建设 项目流程

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询