VirtualBox

忽略:
時間撮記:
2010-4-6 下午02:54:26 (15 年 以前)
作者:
vboxsync
訊息:

Guest Control: Update (protocol hacking bugfixes).

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/HostServices/GuestControl/service.cpp

    r28008 r28013  
    340340int Service::execBufferAssign(PVBOXGUESTCTRPARAMBUFFER pBuf, uint32_t cParms, VBOXHGCMSVCPARM paParms[])
    341341{
    342     execBufferFree(pBuf);
    343 
    344342    RTCritSectEnter(&critsect);
    345343
     
    476474                        rc = VINF_HGCM_ASYNC_EXECUTE;
    477475   
    478                     if (RT_SUCCESS(rc))
     476                    if (   RT_SUCCESS(rc)
     477                        && rc != VINF_HGCM_ASYNC_EXECUTE)
    479478                    {
    480479                        /*
     
    487486                        {
    488487                            if (it->uAssignedToClientID == 0)
     488                            {
    489489                                bFound = true;
     490                                break;
     491                            }
    490492                        }
    491493                        if (!bFound) /* No new command found, defer ... */
     
    495497                         * Okay we got a host command which is unassigned at the moment.                   
    496498                         */
    497                         if (RT_SUCCESS(rc))
     499                        if (   RT_SUCCESS(rc)
     500                            && rc != VINF_HGCM_ASYNC_EXECUTE)
    498501                        {
    499502                            /*
     
    502505                             * below. Then we just could repeat this one here.
    503506                             */
    504                             uint32_t uCmd = 0;
    505                             if (it->parmBuf.uParmCount)
     507                            uint32_t uCmd = 1; /** @todo HARDCODED FOR EXEC! */
     508                            uint32_t uParmCount = it->parmBuf.uParmCount;
     509                            if (uParmCount)
    506510                                it->parmBuf.pParms[0].getUInt32(&uCmd);
    507511                            paParms[0].setUInt32(uCmd); /* msg id */
    508                             paParms[1].setUInt32(it->parmBuf.uParmCount); /* parms count */
     512                            paParms[1].setUInt32(uParmCount); /* parms count */
    509513   
    510514                            /* Assign this command to the specific client ID. */
     
    529533                         !bFound && it != mHostCmds.end(); ++it)
    530534                    {
    531                         if (it->uAssignedToClientID == u32ClientID)                     
     535                        if (it->uAssignedToClientID == u32ClientID)   
     536                        {
    532537                            bFound = true;
     538                            break;
     539                        }
    533540                    }
    534541                    Assert(bFound);
     
    542549                     * Finally remove the command from the list.
    543550                     */
     551                    execBufferFree(&it->parmBuf);
    544552                    mHostCmds.erase(it);
    545553                }
     
    584592{
    585593    int rc = VINF_SUCCESS;
     594
     595    ASMBreakpoint();
    586596
    587597    LogFlowFunc(("fn = %d, cParms = %d, pparms = %d\n",
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette