亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rilsimtkit.cpp

?? ril source code for Windows CE
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
            }

            // Parse optional Icon Identifier
            if ((m_dwParseLen > 0) && ((*m_lpbParse & 0x7f) == (BYTE)ICONTAG))
            {
                m_lpbParse++;
                m_dwParseLen--;
                hr = ReadIconIdentifier();
                if (FAILED(hr))
                {
                    // Failure
                    DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: Function for TLV IconID failed while parsing Open Channel.\r\n")));
                    dwRetVal = SIM_RESPONSE_ERR_VALUESMISSING;
                    goto Exit;
                }
            }

            // The next TLV tag will determine how the rest of the Open Channel command is parsed.
            switch ((*(m_lpbParse) & 0x7f))
            {
                case SIMTK_OPENCHANNEL_CS:
                    hr = ByteParseOpenChannelCS(&dwRetVal);
                    break;
                case SIMTK_OPENCHANNEL_GPRS:
                    hr = ByteParseOpenChannelGPRS(&dwRetVal);
                    break;
                default:
                    // We don't know this Open Channel command, so we have to fail
                    DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: SimToolkit Open Channel parsing encountered unknown firs tag 0x%x\r\n"), *m_lpbParse));
                    dwRetVal = SIM_RESPONSE_ERR_COMMANDTYPE;
                    goto Exit;
            }

            if (FAILED(hr))
            {
                dwRetVal = SIM_RESPONSE_ERR_VALUESMISSING;
                goto Exit;
            }
        }
        else
        {
            // Now we're ready for some TLVs -- which TLVs we need depends on which code we have, so let's
            // go through our array to see which TLVs we are interested in
            pdwTLV = (DWORD *) g_rgdwTLV;

            while (*pdwTLV && (pdwTLV[1] != dwNotifyCode))
            {
                // Skip to the next command
                pdwTLV += (*pdwTLV);
            }

            if (!(*pdwTLV))
            {
                // We don't know this command, so we have to fail
                DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: SimToolkit encountered unknown command %x\r\n"), dwNotifyCode));
                dwRetVal = SIM_RESPONSE_ERR_COMMANDTYPE;
                goto Exit;
            }

            // OK, let's go through now and see if we have each of the needed TLVs
            numTLVs = ( (*pdwTLV > 1) ? (*pdwTLV - 2) : 0 );
            pdwTLV += 2;
            for (i = 0; i < numTLVs; i++)
            {
                dwTag = (pdwTLV[i] & ~OPTIONALTAG);

                // Only pay attention to the lower 7 bits...
                if ((m_dwParseLen == 0) || ((*m_lpbParse & 0x7f) != (BYTE) dwTag))
                {
                    // Nope, this isn't this tag -- this is OK, so long as this is optional,
                    // otherwise, we have a failure on our hands
                    if (!(pdwTLV[i] & OPTIONALTAG))
                    {
                        DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: Mandatory TLV %x not found\r\n"), dwTag));
                        dwRetVal = SIM_RESPONSE_ERR_COMMANDDATA;
                        goto Exit;
                    }
                }
                else if (m_dwParseLen > 0)
                {
                    // Great, let's process this one.  Good thing we have an array which tells us
                    // which function to call, that's very useful
                    DEBUGMSG(ZONE_INFO, (TEXT("RILDrv : SIMTKit: Processing tag %x\r\n"), dwTag));

                    m_lpbParse++;
                    m_dwParseLen--;
                    hr = (this->*rglpfnParse[dwTag])();
                    if (FAILED(hr))
                    {
                        // Failure
                        DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: Function for TLV %x failed\r\n"), (pdwTLV[i] & ~OPTIONALTAG)));
                        dwRetVal = SIM_RESPONSE_ERR_VALUESMISSING;
                        goto Exit;
                    }
                }
            }

            // Special handling for SETUP CALL's 2nd alpha ID and icon.
            if ((SIM_NOTIFY_SETUPCALL == dwNotifyCode) && (0 < m_dwParseLen))
            {
                if ((*m_lpbParse & 0x7f) == (BYTE)ALPHAIDTAG)
                {
                    m_lpbParse++;
                    m_dwParseLen--;
                    hr = ReadCommonEFADNText(&m_pwszAlphaId2, &m_dwAlphaId2Len);
                    if (FAILED(hr))
                    {
                        // Failure
                        DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: Parsing SETUP CALL 2nd Alpha ID failed.\r\n")));
                        dwRetVal = SIM_RESPONSE_ERR_VALUESMISSING;
                        goto Exit;
                    }
                }

                if ( (0 < m_dwParseLen) &&
                     ( (*m_lpbParse & 0x7f) == (BYTE)ICONTAG) )
                {
                    m_lpbParse++;
                    m_dwParseLen--;
                    hr = ReadCommonIconIdentifier(&m_dwIconIdentifier2, &m_dwIconQualifier2);
                    if (FAILED(hr))
                    {
                        // Failure
                        DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: Parsing SETUP CALL 2nd Icon failed.\r\n")));
                        dwRetVal = SIM_RESPONSE_ERR_VALUESMISSING;
                        goto Exit;
                    }
                }
            }
        }
    }

    // Finally, we can put everything back together into a structure
    switch (dwNotifyCode)
    {
        case SIM_NOTIFY_MORETIME:
        case SIM_NOTIFY_POLLINGOFF:
            // Command Qualifier is unused -- nothing really more to do, is there?
            dwResultSize = 0;
            break;

        // These all use the SIMTEXT structure
        case SIM_NOTIFY_DISPLAYTEXT:
        case SIM_NOTIFY_GETINKEY:
        case SIM_NOTIFY_GETINPUT:
        case SIM_NOTIFY_SETUPIDLEMODETEXT:
            hr = BuildSIMTEXT(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        // These both use the SIMMENU structure
        case SIM_NOTIFY_SETUPMENU:
        case SIM_NOTIFY_SELECTITEM:
            hr = BuildSIMMENU(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_POLLINTERVAL:
            hr = BuildSIMPOLLINGINTERVAL(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_SETUPCALL:
            hr = BuildSIMCALL(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_PLAYTONE:
            hr = BuildSIMTONE(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_LOCALINFO:
            hr = BuildSIMLOCALINFO(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_REFRESH:
            hr = BuildSIMREFRESH(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            if (E_FAIL == hr)
            {
                // A reserved refresh mode was sent, a "command type not understood" response
                // must be sent back.
                DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: Reserved REFRESH command mode. Sending command type not understood.\r\n")));
                DEBUGCHK(FALSE);
                dwRetVal = SIM_RESPONSE_ERR_COMMANDTYPE;
                goto Exit;
            }
            else if (E_INVALIDARG == hr)
            {
                // A refresh mode requiring a file list was sent but no file list was attached, a
                //"error, required values missing" response will be sent back.
                DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: REFRESH command mode requiring file list sent with a file list. Responding with error values missing.\r\n")));
                DEBUGCHK(FALSE);
                dwRetVal = SIM_RESPONSE_ERR_VALUESMISSING;
                goto Exit;
            }

            // SIM_RESPONSE_ERR_VALUESMISSING
            break;

        case SIM_NOTIFY_SENDSS:
        case SIM_NOTIFY_SENDUSSD:
            hr = BuildSIMUSSD(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_SENDSMS:
            hr = BuildSIMSMS(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_EVENTLIST:
            hr = BuildSIMEVENTLIST(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_LAUNCHBROWSER:
            hr = BuildSIMLAUNCHBROWSER(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_SENDDTMF:
            hr = BuildSIMSENDDTMF(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_OPENCHANNEL:
            hr = BuildSIMOPENCHANNEL(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_CLOSECHANNEL:
            hr = BuildSIMCLOSECHANNEL(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_SENDDATA:
            hr = BuildSIMSENDDATA(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_RECEIVEDATA:
            hr = BuildSIMRECEIVEDATA(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_LANGUAGENOTIFICATION:
            hr = BuildSIMLANGUAGE(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        case SIM_NOTIFY_RUNATCOMMAND:
            hr = BuildSIMRUNATCMD(dwNotifyCode, bCmdQualifier, &lpbResult, &dwResultSize);
            break;

        default:
            // We don't understand this command
            DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: Don't understand command %x\r\n"), dwNotifyCode));
            ASSERT(0);
            dwRetVal = SIM_RESPONSE_ERR_COMMANDTYPE;
            goto Exit;
    }

    if (FAILED(hr))
    {
        // Oh, we couldn't build the information -- since we were able to parse everything
        // out OK, we have to assume this is an internal error
        ASSERT(hr == E_OUTOFMEMORY);
        dwRetVal = SIM_RESPONSE_ERR_MOBILEINCAPABLE;
    }

    // Everything was parsed ok. Build up the final structure to be sent with the
    // SIM toolkit notification.
    if (SIM_RESPONSE_OK == dwRetVal)
    {
        // Build RIL SIMTKit command structure.
        // Total size will be the command size plus the details.
        *pdwCommandSize = ROUNDTODWORD(sizeof(RILSIMTOOLKITCMD) + dwResultSize);
        pCmd = (RILSIMTOOLKITCMD*)AllocBlob(*pdwCommandSize);

        if (NULL == pCmd)
        {
            ASSERT(FALSE);
            *pdwCommandSize = 0;
            dwRetVal = SIM_RESPONSE_ERR_MOBILEINCAPABLE;
            goto Exit;
        }

        memset(pCmd, 0, *pdwCommandSize);
        pCmd->cbSize = *pdwCommandSize;

        if (m_fTextNotifications)
        {
            pCmd->dwType = dwNotifyCode;
            pCmd->dwParams = RIL_PARAM_SIMTKIT_CMD_TYPE;
        }
        else
        {
            pCmd->dwId = dwCommandId;
            pCmd->dwTag = dwCommandTag;
            pCmd->dwType = dwNotifyCode;
            pCmd->dwQualifier = bCmdQualifier;
            pCmd->dwParams = RIL_PARAM_SIMTKIT_CMD_ID | RIL_PARAM_SIMTKIT_CMD_TAG | RIL_PARAM_SIMTKIT_CMD_TYPE | RIL_PARAM_SIMTKIT_CMD_QUALIFIER;
        }

        if (NULL != lpbResult)
        {
            pCmd->dwParams |= RIL_PARAM_SIMTKIT_CMD_DETAILS_SIZE | RIL_PARAM_SIMTKIT_CMD_DETAILS_OFFSET;
            pCmd->dwDetailsSize = dwResultSize;
            pCmd->dwDetailsOffset = ROUNDTODWORD(sizeof(RILSIMTOOLKITCMD));

            memcpy((LPBYTE*)((LPBYTE)pCmd + pCmd->dwDetailsOffset), lpbResult, dwResultSize);
            delete[] lpbResult;
            lpbResult = NULL;
        }
    }

Exit:
    // Error with parsing the SIM toolkit notification.
    if (dwRetVal != SIM_RESPONSE_OK)
    {
        // Free up any previously allocated memory
        delete[] lpbResult;
        lpbResult = NULL;
        if (NULL != pCmd)
        {
            FreeBlob(pCmd);
            pCmd = NULL;
        }

        // Now try creating an error notification, if possible, to inform the upper layers
        // of the SIM toolkit parsing failure.
        *pdwCommandSize = ROUNDTODWORD(sizeof(RILSIMTOOLKITCMD));
        pCmd = (RILSIMTOOLKITCMD*)AllocBlob(*pdwCommandSize);

        // Out of memory problem, just exit.
        if (NULL == pCmd)
        {
            ASSERT(FALSE);
            *pdwCommandSize = 0;
            dwRetVal = SIM_RESPONSE_ERR_MOBILEINCAPABLE;
        }
        else
        {
            memset(pCmd, 0, *pdwCommandSize);
            pCmd->cbSize = *pdwCommandSize;

            // Set the command ID, if available.
            if (0 != dwCommandId)
            {
                pCmd->dwId = dwCommandId;
                pCmd->dwParams |= RIL_PARAM_SIMTKIT_CMD_ID;
            }

            // Set the command ID, if available.
            if (0 != dwCommandTag)
            {
                pCmd->dwTag = dwCommandTag;
                pCmd->dwParams |= RIL_PARAM_SIMTKIT_CMD_TAG;
            }

            // Set the command type, if available.
            if (0 != dwNotifyCode)
            {
                pCmd->dwType = dwNotifyCode;
                pCmd->dwParams |= RIL_PARAM_SIMTKIT_CMD_TYPE;
            }

            // Set the command type, if available.
            if (0 != bCmdQualifier)
            {
                pCmd->dwQualifier = bCmdQualifier;
                pCmd->dwParams |= RIL_PARAM_SIMTKIT_CMD_QUALIFIER;
            }

            // Set the error value.
            pCmd->dwError = dwRetVal;
            pCmd->dwParams |= RIL_PARAM_SIMTKIT_CMD_ERROR;
        }
    } // dwRetVal != SIM_RESPONSE_OK

    *ppCommand = pCmd;

    // In any case, we definitely want to free m_rgpsmi if it was allocated
    if (NULL != m_rgpsmi)
    {
        for (i = 0; i < m_numpsmi; i++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本韩国一区二区三区视频 | 国产一区二区三区免费看 | 欧美综合一区二区| 麻豆成人免费电影| 亚洲婷婷在线视频| 亚洲精品在线观| 一本色道a无线码一区v| 国产一区二区免费视频| 日本欧美一区二区| 中文字幕日本不卡| 精品久久久久久久人人人人传媒 | 国产精品一二三区在线| 丝袜美腿亚洲一区| 亚洲激情图片小说视频| 国产精品无码永久免费888| 制服丝袜日韩国产| 欧美色视频在线| 北岛玲一区二区三区四区| 精品亚洲国内自在自线福利| 午夜精品福利一区二区三区蜜桃| √…a在线天堂一区| 国产日产欧产精品推荐色| 欧美一级精品在线| 欧美精品日韩精品| 在线免费观看日本欧美| 色综合久久精品| 91丨porny丨蝌蚪视频| 成人爽a毛片一区二区免费| 韩国中文字幕2020精品| 精品一区二区三区免费观看| 蜜臀av亚洲一区中文字幕| 日韩经典中文字幕一区| 亚洲chinese男男1069| 一区二区三区欧美在线观看| 亚洲精品菠萝久久久久久久| 亚洲天堂免费看| 亚洲丝袜美腿综合| 亚洲三级视频在线观看| 亚洲图片你懂的| 亚洲最新视频在线观看| 一区二区免费看| 18欧美亚洲精品| 洋洋av久久久久久久一区| 亚洲第一福利视频在线| 亚洲成人av电影在线| 日韩电影在线免费看| 日韩高清电影一区| 久久超级碰视频| 国产精品自拍在线| 成人综合日日夜夜| 91老师片黄在线观看| 日本精品视频一区二区三区| 欧美中文字幕不卡| 88在线观看91蜜桃国自产| 欧美精品一区二区三区很污很色的| 日韩欧美一级在线播放| 欧美va日韩va| 欧美激情一二三区| 亚洲三级小视频| 亚洲电影视频在线| 喷水一区二区三区| 国产美女精品人人做人人爽| 成人精品视频网站| 欧美在线免费观看亚洲| 欧美一区二区三区不卡| 欧美xxxxx牲另类人与| 国产精品美女久久久久久2018| 亚洲男人的天堂av| 日韩电影在线看| 国产成人夜色高潮福利影视| 一本久久a久久精品亚洲| 欧美日本乱大交xxxxx| 久久一区二区三区四区| 亚洲欧洲中文日韩久久av乱码| 亚洲图片欧美一区| 激情伊人五月天久久综合| av成人老司机| 这里只有精品视频在线观看| 久久这里都是精品| 亚洲综合在线五月| 蜜臀精品一区二区三区在线观看| 国产91精品一区二区麻豆网站| 色婷婷精品久久二区二区蜜臀av| 欧美老肥妇做.爰bbww| 久久精品免视看| 天天色综合成人网| va亚洲va日韩不卡在线观看| 这里只有精品视频在线观看| 中文字幕一区二区在线播放| 日本中文字幕一区| 99久久久精品| 久久久久久久久久看片| 一区二区三区四区在线| 狠狠色狠狠色综合日日91app| 一本大道久久a久久精品综合| 日韩亚洲欧美一区| 亚洲私人影院在线观看| 国内精品伊人久久久久av一坑| 色偷偷久久一区二区三区| 国产人成一区二区三区影院| 天堂成人免费av电影一区| 不卡av在线免费观看| 日韩女优制服丝袜电影| 亚洲综合区在线| 97精品电影院| 欧美激情在线观看视频免费| 美日韩一区二区| 欧美色网一区二区| **性色生活片久久毛片| 国产精品一线二线三线| 日韩欧美高清一区| 亚洲第一狼人社区| 色噜噜狠狠色综合中国| 欧美激情中文不卡| 国产精品一区二区在线看| 欧美一区二区大片| 午夜av区久久| 在线免费精品视频| 亚洲精品网站在线观看| voyeur盗摄精品| 国产精品拍天天在线| 国产精品资源网站| 26uuu亚洲综合色| 免费高清在线一区| 正在播放亚洲一区| 首页国产欧美日韩丝袜| 欧美色网一区二区| 亚洲aaa精品| 91精品国产乱码久久蜜臀| 午夜精品一区二区三区电影天堂 | 午夜精品影院在线观看| 欧美性生活影院| 亚洲综合久久久久| 欧美丝袜丝交足nylons| 中文字幕一区二区不卡| 欧美情侣在线播放| 一区二区在线观看不卡| 色就色 综合激情| 一二三区精品视频| 欧美亚洲禁片免费| 日韩经典中文字幕一区| 欧美一区二区三区爱爱| 久久99精品久久久| 国产午夜精品一区二区三区四区| 国产精品1区2区| 欧美激情在线一区二区| 97se狠狠狠综合亚洲狠狠| 亚洲欧美激情插| 色综合天天综合网国产成人综合天| 亚洲同性gay激情无套| 日本道免费精品一区二区三区| 亚洲在线观看免费| 91精品国产一区二区三区香蕉| 日韩 欧美一区二区三区| 日韩欧美一区二区三区在线| 国产一区二区免费在线| 综合久久国产九一剧情麻豆| 欧美视频一区在线| 久草精品在线观看| 国产精品久久久久精k8| 欧美亚洲高清一区二区三区不卡| 日韩专区欧美专区| 久久亚洲综合色| 91视频在线观看| 污片在线观看一区二区| 久久―日本道色综合久久| 99精品欧美一区| 日韩精品久久理论片| 久久久99免费| 欧洲一区二区三区免费视频| 欧美aaaaaa午夜精品| 中文一区在线播放| 欧美美女网站色| 懂色av中文一区二区三区| 亚洲永久精品国产| 精品久久久久一区| 91成人免费在线| 国产一区二区三区av电影| 亚洲综合色丁香婷婷六月图片| 亚洲精品一区二区在线观看| 91色.com| 激情小说欧美图片| 亚洲另类色综合网站| 精品处破学生在线二十三| 91久久人澡人人添人人爽欧美| 美女一区二区在线观看| 亚洲精品中文字幕乱码三区| 精品久久一二三区| 欧美日韩久久久久久| 成人美女在线观看| 日韩不卡一区二区| 亚洲卡通欧美制服中文| 欧美zozo另类异族| 欧美日韩激情一区二区| 成人免费的视频| 精品一二线国产| 日韩精彩视频在线观看| 中文字幕字幕中文在线中不卡视频| 日韩一区二区三| 欧美日韩亚洲另类|