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

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

?? reboot.cpp

?? ril source code for Windows CE
?? CPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include <precomp.h>

#ifdef SIMULATE_HUNG_RADIO
BOOL g_fSimulateHungRadio = FALSE;
#endif


#ifdef RIL_RADIO_RESILIENCE

char g_szOpSelCmd[NETWK_CMDBUF_LENGTH];
BOOL g_fOperatorSelected = FALSE;
char g_szPBLocCmd[MISC_CMDBUF_LENGTH_PBLOC];
BOOL g_fPBLocationSet = FALSE;
extern DWORD   g_dwCacheDownlinkVolume;
CRITICAL_SECTION g_csReboot;
BOOL g_fInitedFirstTime = FALSE;

extern BOOL g_bRadioOff;

SYSTEMTIME g_LastResetTime;
BOOL g_fRadioResetRecently =FALSE;
UINT g_cbLastLockCapsSize = 0;
void *g_pLastLockCaps = NULL;

#define SECONDS_TO_100NS(SEC) (((UINT64)(SEC)) * 10000000ui64)
#define RESET_SPOOF_DURATION SECONDS_TO_100NS(10)

extern void FillEquipmentStateStruct(RILEQUIPMENTSTATE * pres, DWORD dwEqState);

BOOL ShouldSpoofCommand()
{

    BOOL fReturn = FALSE;
    if (g_fRadioResetRecently)
    {
        SYSTEMTIME CurrentSystemTime;
        GetSystemTime(&CurrentSystemTime);
        UINT64 CurrentFileTime;
        UINT64 LastResetFileTime;
        if ((SystemTimeToFileTime(&CurrentSystemTime, (LPFILETIME)&CurrentFileTime)) &&
            (SystemTimeToFileTime(&g_LastResetTime, (LPFILETIME)&LastResetFileTime)))
        {
            if ((CurrentFileTime - LastResetFileTime) < RESET_SPOOF_DURATION)
            {
                fReturn = TRUE;  
            }
            else
            {
                // We've passed the time where we are comfortable spoofing this response.
                // set the flag so that we won't check next time
                g_fRadioResetRecently = FALSE;
            }
        }
    }
    return fReturn;
}

BOOL RebootRadio()
{
    FUNCTION_TRACE(RebootRadio);
    DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : CRilHandle::RebootRadio\r\n")));

#ifdef SIMULATE_HUNG_RADIO
    g_fSimulateHungRadio = FALSE;
#endif

    HRESULT hr = PDD_RebootRadio();

    if ( FAILED( hr ) && E_NOTIMPL != hr )
    {
        DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : RebootRadio : PDD_RebootRadio failed , hr = [0x%08x]\r\n"), hr));
        return FALSE;
    }

    return TRUE;
}

BOOL RebootRestoreState()
{
    BOOL fSuccess = FALSE;
    char szNextCmd[MAX_PATH];
    RILEQUIPMENTSTATE res;    
    CNotificationData *pnd = NULL;
    DWORD dwDisconnectReason = RIL_DISCINIT_REMOTE;
    DWORD dwOldReadyState = g_dwReadyState;
    BOOL OldRadioOff = g_bRadioOff;
    EnterCriticalSection(&g_csReboot);

    // Make sure that we turn off the audio path both starting up. Indicate call is inactive to audio driver
    IndicateCallActivityToAudioSubsystem(FALSE, FALSE);

    // We rebooted, so we want to cycle through the ready states from none again.
    g_dwReadyState = RIL_READYSTATE_NONE;        

    // Test hook for knowing when the radio rebooted
    pnd = new CNotificationData;
    if (pnd && !pnd->InitFromRealBlob(RIL_NOTIFY_RADIORESET, NULL, 0))
    {
        delete pnd;
        pnd = NULL;
    }
    else
    {
        QueueCmdIgnoreRsp(APIID_NONE, NULL, CMDOPT_INIT | CMDOPT_NOOP, g_TimeoutCmdInit, NULL, pnd, 0, 0, 0);
    }
    // Assume any calls were disconnected
    pnd = new CNotificationData;
    if (pnd && !pnd->InitFromRealBlob(RIL_NOTIFY_DISCONNECT, (void*)&dwDisconnectReason, sizeof(dwDisconnectReason)))
    {
        delete pnd;
        pnd = NULL;
    }
    else
    {
        QueueCmdIgnoreRsp(APIID_NONE, NULL, CMDOPT_INIT | CMDOPT_NOOP, g_TimeoutCmdInit, NULL, pnd, 0, 0, 0);
    }

    // Some radios may need a bit before we send down the Init strings
    Sleep(g_rppPDDParams->dwPostRebootInitDelay);

    SendComInitString(COM_INIT_INDEX);

    HRESULT hr = E_FAIL;
    SAFE_PDD_CREATECOMMAND( szNextCmd, MAX_PATH, hr, PDD_CreateCommand_GetPostRebootDiagnostics( szNextCmd, MAX_PATH ) );
    
    if ( FAILED( hr ) && E_NOTIMPL != hr )
    {
        DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : PDD_CreateCommand_GetPostRebootDiagnostics failed , hr = [0x%08x]\r\n"), hr));
    }
    
    if (S_OK == hr) {
        QueueCmdIgnoreRsp(APIID_NONE, szNextCmd, CMDOPT_INIT, g_TimeoutCmdInit, g_rppPDDParams->pfnParsePostRebootDiagnostics, NULL, 0, 0, 0);
        }
                    
    if (OldRadioOff == FALSE)
    {
        FillEquipmentStateStruct(&res, RIL_EQSTATE_MINIMUM);
        pnd = new CNotificationData;
        if (pnd && !pnd->InitFromRealBlob(RIL_NOTIFY_RADIOEQUIPMENTSTATECHANGED, (void*)&res, res.cbSize))
        {
            delete pnd;
            pnd = NULL;
        }
    }
    else
    {
        // Don't send a CFUN 0 notification if the radio was already off
        pnd = NULL;
    }
   
    // Cycle the radio equipment state, otherwise some radios will return errors
    QueueCmdIgnoreRsp(APIID_SETEQUIPMENTSTATE, "AT+CFUN=0\r", CMDOPT_INIT, g_TimeoutCmdInit, NULL, pnd, 0, 0, 0);

    if (OldRadioOff == FALSE)
    {
        FillEquipmentStateStruct(&res, RIL_EQSTATE_FULL);
        pnd = new CNotificationData;
        if (pnd && !pnd->InitFromRealBlob(RIL_NOTIFY_RADIOEQUIPMENTSTATECHANGED, (void*)&res, res.cbSize))
        {
            delete pnd;
            pnd = NULL;
        }

        CHAR szCmdBuf[MAX_PATH];
        char* szWalk = szCmdBuf;
        HRESULT hr = E_FAIL;

        SAFE_PDD_CREATECOMMAND( szWalk, MAX_PATH - ( szWalk - szCmdBuf ), hr, PDD_CreateCommand_SetupBeforeRadioOn( szWalk, MAX_PATH - (szWalk - szCmdBuf), FALSE ) );
         
        if ( FAILED( hr ) && E_NOTIMPL != hr )
        {
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : PDD_CreateCommand_SetupBeforeRadioOn failed , hr = [0x%08x]\r\n"), hr));
        }
        
        if (E_NOTIMPL == hr) {
            (void)_snprintfz(szWalk, MAX_PATH - (szWalk - szCmdBuf), "AT");
        }

        szWalk = strchr(szWalk, '\0');  // NO_TYPO: 27
        DEBUGCHK(NULL != szWalk);
    
        (void)_snprintfz(szWalk, MAX_PATH - (szWalk - szCmdBuf), "+CFUN=1\r");

        QueueCmdIgnoreRsp(APIID_SETEQUIPMENTSTATE, szCmdBuf, CMDOPT_INIT | CMDOPT_SETRADIOON | CMDOPT_IGNORERADIOOFF | CMDOPT_REINIT, g_TimeoutCmdInit, NULL, pnd, 0, 0, 0);
    }
    
    // if we just rebooted and were previously unlocked, then unlock the phone
    if (dwOldReadyState & RIL_READYSTATE_UNLOCKED)
    {
        CHAR szLastPIN[256];
        if (FetchPINSecure(szLastPIN, sizeof(szLastPIN)))
        {
            (void)_snprintfz(szNextCmd, MAX_PATH, "AT+CPIN=\"%s\"\r", szLastPIN);
            QueueCmdIgnoreRsp(APIID_NONE, szNextCmd, CMDOPT_INIT, g_TimeoutCmdInit, NULL, NULL, 0, 0, 0);
        }
    }    

    if (g_fOperatorSelected && (OldRadioOff == FALSE))
    {
        // if we just rebooted and were previously registered, then reregister on the network
        QueueCmdIgnoreRsp(APIID_NONE, g_szOpSelCmd, CMDOPT_INIT, g_TimeoutCmdInit, NULL, NULL, 0, 0, 0);
    }

    // Restore audio gain
    (void)_snprintfz(szNextCmd, MAX_PATH, "AT+CLVL=%u\r", g_dwCacheDownlinkVolume);
    QueueCmdIgnoreRsp(APIID_NONE, szNextCmd, CMDOPT_NONE, g_TimeoutCmdInit, NULL, NULL, 0, 0, 0);

    // Restore PB location
    if (g_fPBLocationSet)
    {
        QueueCmdIgnoreRsp(APIID_NONE, g_szPBLocCmd, CMDOPT_INIT, g_TimeoutCmdInit, NULL, NULL, 0, 0, 0);
    } 
    fSuccess = TRUE;

    LeaveCriticalSection(&g_csReboot);
    return fSuccess;
}

HRESULT RILDrv_RebootRadio (DWORD dwParam)
{
    FUNCTION_TRACE(RILDrv_RebootRadio);
    DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : RILDrv_RebootRadio\r\n")));

    HRESULT hr = E_INVALIDARG;
    CRilInstanceHandle* pHandle = ExtractHandle(dwParam);
    if (!pHandle)
    {
        goto Error;
    }

    if (!RebootRadio())
    {
        hr = E_NOTIMPL;
        goto Error;
    }

    // send an OK response
    if (!QueueCmd(pHandle, NULL, CMDOPT_NOOP, APIID_REBOOTRADIO, NULL, NULL, hr)) 
    {
        hr = E_FAIL;
        goto Error;
    }

Error:
    return hr;
}

#endif // RIL_RADIO_RESILIENCE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
有坂深雪av一区二区精品| www.欧美.com| 一区二区高清免费观看影视大全| 久久天堂av综合合色蜜桃网| 欧美一区三区四区| 欧美美女视频在线观看| 欧美又粗又大又爽| 欧美区在线观看| 日韩欧美在线1卡| 欧美第一区第二区| 久久众筹精品私拍模特| 久久天堂av综合合色蜜桃网| 久久久午夜电影| 欧美经典一区二区| 国产精品美女久久福利网站| 亚洲色图在线视频| 一区二区免费在线播放| 肉丝袜脚交视频一区二区| 青草av.久久免费一区| 国产制服丝袜一区| 92国产精品观看| 欧美日韩国产a| www日韩大片| 国产精品狼人久久影院观看方式| 中文字幕亚洲一区二区va在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 99久久精品国产导航| eeuss影院一区二区三区| 91麻豆产精品久久久久久 | 亚洲免费在线电影| 日日噜噜夜夜狠狠视频欧美人 | 色婷婷激情综合| 欧美日韩国产精品成人| 久久一日本道色综合| 中文字幕一区二区不卡| 日韩av电影免费观看高清完整版在线观看| 麻豆91精品视频| 粗大黑人巨茎大战欧美成人| 在线免费视频一区二区| 亚洲精品一区二区三区福利| 亚洲欧洲日韩女同| 麻豆成人久久精品二区三区红| 国产风韵犹存在线视精品| 欧美性猛交xxxx黑人交| 久久久久久久久久久久久久久99| 亚洲男同1069视频| 国内精品免费在线观看| 欧美日韩综合色| 国产欧美日韩久久| 日本va欧美va精品| www.亚洲精品| 精品国产乱码91久久久久久网站| 综合久久国产九一剧情麻豆| 精品写真视频在线观看| 欧美日韩在线综合| 亚洲欧洲日韩一区二区三区| 国产精品一区二区久激情瑜伽| 在线观看av一区| 中文字幕五月欧美| 国产精品99久久久久久似苏梦涵| 91精品国产黑色紧身裤美女| 亚洲美女免费在线| 成人av免费在线观看| 亚洲精品一区二区三区99| 亚洲成人av一区| 91黄色小视频| 亚洲欧美色图小说| 99天天综合性| 国产欧美日韩综合| 懂色av中文字幕一区二区三区 | 97se亚洲国产综合在线| 久久九九99视频| 久88久久88久久久| 欧美tk丨vk视频| 国产在线播放一区三区四| 91精品国产综合久久福利| 亚洲成av人影院在线观看网| 91传媒视频在线播放| 亚洲男人电影天堂| 在线中文字幕一区| 亚洲国产综合91精品麻豆| 99精品视频中文字幕| 亚洲人午夜精品天堂一二香蕉| 丁香天五香天堂综合| 国产精品色婷婷| 97se亚洲国产综合自在线| 亚洲精品一二三| 欧美日韩国产乱码电影| 日韩精品1区2区3区| 日韩精品中文字幕在线不卡尤物| 蜜桃久久久久久久| 日韩女优视频免费观看| 日本不卡一二三| xnxx国产精品| caoporn国产精品| 亚洲欧美国产高清| 欧美乱妇15p| 精品一二三四区| 国产欧美日韩另类一区| 91高清视频免费看| 日本不卡一区二区| 久久精品视频一区二区三区| 成人黄色大片在线观看| 亚洲成a人片在线观看中文| 精品国产乱码久久久久久蜜臀| 成人一区二区三区中文字幕| 亚洲免费在线播放| 久久综合成人精品亚洲另类欧美 | 91免费在线视频观看| 亚洲一区二区视频| 久久久蜜臀国产一区二区| av高清久久久| 日韩精品成人一区二区在线| 国产日韩综合av| 欧洲精品在线观看| 日韩二区三区在线观看| 久久九九99视频| 欧美日韩国产小视频| 国产精品77777竹菊影视小说| 一个色在线综合| 久久精品亚洲精品国产欧美kt∨| 色av综合在线| 国产精品18久久久| 日韩av中文在线观看| 亚洲三级小视频| 久久综合色婷婷| 欧美日韩免费高清一区色橹橹| 国产99精品在线观看| 日本伊人精品一区二区三区观看方式| 国产肉丝袜一区二区| 日韩视频中午一区| 欧美亚洲一区三区| 白白色 亚洲乱淫| 激情小说亚洲一区| 日日夜夜精品视频免费| 亚洲美女视频一区| 国产精品麻豆一区二区| 精品福利一区二区三区| 91麻豆精品国产91久久久久久 | 亚洲国产精品麻豆| 国产精品福利电影一区二区三区四区| 欧美电影免费观看高清完整版| 欧美午夜寂寞影院| 91成人网在线| 色欧美片视频在线观看| 99视频在线精品| 91天堂素人约啪| 成人性色生活片免费看爆迷你毛片| 精品一区二区三区久久| 日韩高清不卡一区| 丝袜美腿亚洲一区| 日韩电影在线看| 奇米888四色在线精品| 视频一区视频二区中文| 天天做天天摸天天爽国产一区| 九色综合狠狠综合久久| 久久精品国产秦先生| 日本不卡不码高清免费观看| 青青草91视频| 激情小说亚洲一区| 国产成人在线视频网站| 国产精品99久久久| 成人av在线影院| 色94色欧美sute亚洲线路二 | 麻豆成人免费电影| 国产一区在线看| 成人福利电影精品一区二区在线观看| 国产一区二区三区av电影| 国产乱子伦视频一区二区三区| 国产成人av电影在线观看| 丰满白嫩尤物一区二区| 91福利视频久久久久| 欧美高清视频在线高清观看mv色露露十八| 欧美日产国产精品| 欧美电视剧免费观看| 日本一二三四高清不卡| 亚洲视频图片小说| 日本三级亚洲精品| 国产成人免费在线视频| www.欧美亚洲| 欧美一区二区三区喷汁尤物| 久久先锋影音av| 亚洲婷婷综合久久一本伊一区| 亚洲午夜三级在线| 国产乱人伦偷精品视频免下载| 菠萝蜜视频在线观看一区| 欧美三级韩国三级日本三斤| 欧美一级理论性理论a| 国产精品久久久久天堂| 一区二区三区在线观看视频| 日本vs亚洲vs韩国一区三区二区| 大白屁股一区二区视频| 欧美高清激情brazzers| 欧美国产激情一区二区三区蜜月| 亚洲成人动漫在线观看| 成人听书哪个软件好| 欧美精品一二三四| 成人欧美一区二区三区视频网页| 日韩精品乱码免费| 色综合久久88色综合天天|