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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rilmain.cpp

?? ril source code for Windows CE
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
//
// 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.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:

rilmain.cpp

Abstract:


Notes:


--*/


#include "precomp.h"
#include "rilhand.h"
#include <Marshal.hpp>
//
// Globals
//
CRITICAL_SECTION g_csClosing;
#ifdef RIL_RADIO_RESILIENCE
extern CRITICAL_SECTION g_csReboot;
#else
HANDLE g_hCriticalErrorEvent; // = NULL;
#endif // ! RIL_RADIO_RESILIENCE
HANDLE g_hDriverPresentEvent; // = NULL;
HANDLE g_hNewDialOrHangupEvent; // = NULL;

CRilHandle* g_pRilHandleDevice = NULL;

DWORD g_dwReadyState;
DWORD g_dwRegStatus;
DWORD g_dwGPRSRegStatus;

BOOL g_rfExternalCalltypeDetermination = FALSE;
RILCALLTYPECALLBACK g_rlpfExternalCalltypeFunction = NULL;
HINSTANCE g_hCalltypeLib = NULL;

DWORD g_dwPrintSIMPINInfo;

const RILPDDParams* g_rppPDDParams = NULL;

extern RILCALLINFO g_rgfCallStates[RIL_MAX_TRACKED_CALL_ID];

extern RINGINGCALLDATA g_rcdRingingCallData;
// CS required for safe access - see RINGINGCALLDATA definition for details
CRITICAL_SECTION g_csRingingCallData;

extern DIALEDCALLDATA g_rcdDialedCallData;
// CS required for safe access - see DIALEDCALLDATA definition for details
CRITICAL_SECTION g_csDialedCallData;

extern WAITINGCALLDATA g_rcdWaitingCallData;
// No CS required for safe access - see WAITINGCALLDATA definition for details

// Storage for the SIM toolkit Terminal Profile settings
CRilSTKTerminalProfile g_RilSTKTerminalProfile;

#ifdef RIL_LAST_ERROR
DWORD g_dwLastError;            // = 0;
#endif

#ifdef RIL_WATSON_REPORT
// Info Cache for Watson reporting
RilInfoCache g_RilInfoCache;
CRITICAL_SECTION g_csRilInfoCache; 
BOOL g_fWatsonCalled;

// In-memory buffer to capture AT Cmd logs for Watson reports.
CRilATCmdLogBuffer g_RilATCmdLogBuffer;

// Unique platform identifier used as a Watson parameter 
const TCHAR* gc_szWatsonDeviceType = TEXT("Generic");

DWORD g_WatsonThreadId = NULL;
#endif

const char *g_pcszCPHS   = NULL;

#ifdef RIL_ENABLE_EONS
EONS      g_eons;
EONSCache g_eonscache;
#endif

DBGPARAM dpCurSettings = 
{ 
    L"RILDrv", 
    {
        L"Init",       L"Info",       L"Trace",      L"NDIS",
        L"NDIS Pkt",   L"EventLog",   L"EONS",       L"ATCMD",
        L"Undefined",  L"Undefined",  L"Undefined",  L"Undefined",
        L"Alloc",      L"Function",   L"Warning",    L"Error" 
    },
    ZONEMASK_ERROR | ZONEMASK_WARNING | ZONEMASK_ATCMD | ZONEMASK_EONS
};


//
// Stubs for unsupported RILDrv_ functions
//
#define UNSUPPORTED(n, m) \
HRESULT n m \
{ \
    FUNCTION_TRACE(n); \
    DEBUGMSG(ZONE_ERROR, (TEXT(#n) TEXT("RILDrv : E :  : E_NOTIMPL\r\n"))); \
    return E_NOTIMPL; \
}


UNSUPPORTED(RILDrv_SetDTMFMonitoring, (DWORD, BOOL));
UNSUPPORTED(RILDrv_GetAudioDevices, (DWORD));
UNSUPPORTED(RILDrv_FetchSimToolkitCmd, (DWORD));
UNSUPPORTED(RILDrv_GetCCBSStatus, (DWORD, DWORD));
UNSUPPORTED(RILDrv_ClearCCBSRegistration, (DWORD, DWORD));
UNSUPPORTED(RILDrv_GetSystemTime, (DWORD));
UNSUPPORTED(RILDrv_GetPacketByteCount, (DWORD));
UNSUPPORTED(RILDrv_ResetPacketByteCount, (DWORD));
UNSUPPORTED(RILDrv_SendFlash, (DWORD, RILADDRESS));
UNSUPPORTED(RILDrv_GetRoamingMode, (DWORD));
UNSUPPORTED(RILDrv_SetRoamingMode, (DWORD, DWORD));
UNSUPPORTED(RILDrv_GetPreferredPrivacyMode, (DWORD));
UNSUPPORTED(RILDrv_SetPreferredPrivacyMode, (DWORD, DWORD));
UNSUPPORTED(RILDrv_GetCurrentPrivacyStatus, (DWORD));
UNSUPPORTED(RILDrv_GetCurrentLocationStatus, (DWORD));
UNSUPPORTED(RILDrv_GetCurrentRoamingStatus, (DWORD));
UNSUPPORTED(RILDrv_SendAKey, (DWORD, LPCSTR));

// RIL logging global
CDebugEventLogging *g_pRilLog = NULL;

static void EnableEventLogging(void)
{
    TCHAR pFileName[MAX_PATH];
    DWORD cbData= MAX_PATH * sizeof(TCHAR);
    *pFileName = L'\0';

    if ( TRUE == GetRegistryEventLogging((BYTE*)pFileName, cbData ))
    {
        g_pRilLog = new CDebugEventLogging;
        if ( g_pRilLog )
        {
             g_pRilLog->Init(pFileName);
        }
    }
}

static void DisableEventLogging(void)
{
    if ( g_pRilLog )
    {
        g_pRilLog->DeInit();
        delete g_pRilLog;
        g_pRilLog = NULL;
    }
}

static HRESULT ValidateRILPDDParams(const RILPDDParams* rppPDDParams)
{
    ASSERT( ( NULL != rppPDDParams ) );
    return( ( rppPDDParams->cbSize == sizeof( RILPDDParams ) ) ? S_OK : E_INVALIDARG );

    /* TODO: Other potential PDD parameters to check below:
    
    const LISTSTRINGMAP* plsmPhoneBookLocationCapsTable;
    const UINT uiPhoneBookLocationCapsTableSize;
    DWORD dwDevCapsSIMTKN_SetUpCall;
    DWORD dwDevCapsSIMTKN_SendDTMF;
    DWORD dwCRSMStatusCommandId;
    const LPCSTR* pstrPhoneBookLocationTable;
    const UINT uiPhoneBookLocationTableSize;
    ENCODING_TYPE etMessageEncodingType;
    const ERRORMAP* pemCMEErrorTable;
    const UINT uiCMEErrorTableSize;
    const ERRORMAP* pemCMSErrorTable;
    const UINT uiCMSErrorTableSize;
    const ERRORMAP* pemEXTErrorTable;
    const UINT uiEXTErrorTableSize;
    const char* pchSMSIntermediaryPrompt;
    DWORD dwDefaultCOMMask;
    ENCODING_TYPE etEncodingTECharset;
    const INITSTRING_DATA* pisdInitStringDataTable;
    const UINT uiInitStringDataTableSize;

    */
}
    
//
// DLL entry point
//
BOOL WINAPI DllMain(HANDLE hinstDll, DWORD dwReason, LPVOID lpReserved)
{
    if (DLL_PROCESS_ATTACH == dwReason)
    {
        DEBUGREGISTER((HMODULE) hinstDll);
        DEBUGMSG(ZONE_TRACE, (TEXT("RILDrv : t : DllMain : DLL_PROCESS_ATTACH\r\n")));
        EnableEventLogging();

    }
    else if (DLL_PROCESS_DETACH == dwReason)
    {
        DEBUGMSG(ZONE_TRACE, (TEXT("RILDrv : t : DllMain : DLL_PROCESS_DETACH\r\n")));
        DisableEventLogging();
    }
    return TRUE;
}

#ifdef RIL_ALLOW_DRIVER_REMOVAL_TESTING
CRilHandle * g_pDeviceAllowDriverRemovalTesting = NULL;
#define DRIVERCOOKIE_FROM_RILHANDLE(pDevice)    (DWORD)(g_pDeviceAllowDriverRemovalTesting = pDevice)
#define RILHANDLE_FROM_DRIVERCOOKIE(dwData)     (g_pDeviceAllowDriverRemovalTesting)
#else
#define DRIVERCOOKIE_FROM_RILHANDLE(pDevice)    (DWORD)pDevice;
#define RILHANDLE_FROM_DRIVERCOOKIE(dwData)     (CRilHandle*)dwData;
#endif

//
// RIL driver initialization
//
#ifdef __cplusplus
extern "C" DWORD RIL_Init(DWORD dwInfo)
#else
DWORD RIL_Init(DWORD dwInfo)
#endif
{
    FUNCTION_TRACE(RIL_Init);
    DEBUGMSG(ZONE_TRACE, (TEXT("RILDrv : t : RIL_Init : params: dwInfo = %d\r\n"), dwInfo));

    CRilHandle* pDevice = NULL;
    DWORD dwRet = 0;
    HRESULT hr = E_FAIL;

    // Initialize globals
    InitializeCriticalSection(&g_csClosing);

#ifdef RIL_RADIO_RESILIENCE
    InitializeCriticalSection(&g_csReboot);
    memset(&g_LastResetTime, 0, sizeof(g_LastResetTime));
#else
    g_hCriticalErrorEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
    if (!g_hCriticalErrorEvent)
    {
        goto Error;
    }
#endif // ! RIL_RADIO_RESILIENCE

#ifdef RIL_WATSON_REPORT
    InitializeCriticalSection(&g_csRilInfoCache);    
#endif // RIL_WATSON_REPORT

    InitializeCriticalSection(&g_csDeactCringLock);    
    InitializeCriticalSection(&g_csCallStates);
    g_hDriverPresentEvent = CreateEvent(NULL, TRUE, FALSE, RILDRIVERPRESENT_EVENT);
    if (!g_hDriverPresentEvent)
    {
        goto Error;
    }

    g_hNewDialOrHangupEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
    if (!g_hNewDialOrHangupEvent)
    {
        goto Error;
    }

#ifdef RIL_WATSON_REPORT
    // Initialize the info cache used for watson reporting
    memset(&(g_RilInfoCache), 0, sizeof(g_RilInfoCache));

    // Initialize flag used to prevent multiple Watson reporting of the same problem
    g_fWatsonCalled = FALSE;

    // Initialize the AT Cmd log
    g_RilATCmdLogBuffer.Init(RILATCMDLOGSIZE);
#endif // RIL_WATSON_REPORT

    // Initialize the default Terminal profile settings.
    g_RilSTKTerminalProfile.InitializeDefault();

    // Before starting any communication with the radio, initialize PDD and obtain PDD parameters

    hr = PDD_Initialize( g_rppPDDParams );
    if ( FAILED( hr ) || !g_rppPDDParams )
    {
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : RIL_Init : error in PDD_Initialize, hr = [0x%08x], g_rppPDDParams = %p\r\n"), hr, g_rppPDDParams));
            goto Error;
    }

    // Validate parameters obtained from PDD

    hr = ValidateRILPDDParams( g_rppPDDParams );
    if ( FAILED( hr ) )
    {
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : RIL_Init : PDD parameters invalid, hr = [0x%08x]\r\n"), hr));
            goto Error;
    }

    // Allocate a device handle
    pDevice = new CRilHandle;
    if (!pDevice || !pDevice->StartInit())
    {
        goto Error;
    }

    // Need to save this off for use in broadcasting CPI data generated internally by the RIL.
    g_pRilHandleDevice = pDevice;

    dwRet = DRIVERCOOKIE_FROM_RILHANDLE(pDevice);

    // Driver has started successfully, so set
    // the event that says RIL driver is up.
    SetEvent(g_hDriverPresentEvent);
    RIL_EVENTLOG_MSG((RILLOG_EVENT_RADIOPRESENT));

    DWORD dwEONSEnabled = 0;

#ifdef RIL_ENABLE_EONS

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩av一区二区三区粉嫩| 国产999精品久久久久久| 91视频免费播放| 欧美成人精品3d动漫h| 夜夜嗨av一区二区三区| 国产永久精品大片wwwapp| 欧美日韩极品在线观看一区| 亚洲欧美在线视频| 国产剧情一区在线| 欧美一区二区精品在线| 一区av在线播放| 91视频国产观看| 国产精品色在线观看| 韩国精品在线观看| 日韩一区二区精品| 三级久久三级久久| 欧美色图天堂网| 一级女性全黄久久生活片免费| 成人福利视频网站| 亚洲国产成人在线| 国产精品自在欧美一区| 欧美精品一区男女天堂| 奇米四色…亚洲| 欧美一区二区三区成人| 偷窥少妇高潮呻吟av久久免费| 色综合久久综合| 亚洲手机成人高清视频| 91在线你懂得| 亚洲天堂网中文字| 91丨九色丨国产丨porny| 国产精品国产三级国产aⅴ入口 | 亚洲va天堂va国产va久| 色就色 综合激情| 成人免费在线播放视频| 99久久er热在这里只有精品66| 中文字幕av一区二区三区高| 成人性生交大片免费看视频在线 | 国产欧美日韩三区| 国产精一区二区三区| 久久久91精品国产一区二区精品| 极品美女销魂一区二区三区免费| 在线免费亚洲电影| 91麻豆精品91久久久久久清纯| 亚洲综合偷拍欧美一区色| 日本精品一区二区三区四区的功能| 中文字幕一区二区三区不卡在线 | 久久国产免费看| 精品日韩在线一区| 国产精品一级黄| 欧美国产日韩在线观看| 成人黄色片在线观看| 亚洲欧洲精品一区二区精品久久久 | 亚洲精品国产a久久久久久| 91福利视频在线| 丝袜亚洲另类欧美| 日韩欧美在线网站| 黄色成人免费在线| 中文字幕av一区二区三区| 色综合久久天天综合网| 亚洲成人激情av| 欧美一级日韩一级| 国产乱码精品一品二品| 最新热久久免费视频| 在线欧美日韩国产| 麻豆精品一区二区三区| 国产人久久人人人人爽| 91麻豆成人久久精品二区三区| 亚洲韩国一区二区三区| 日韩欧美高清一区| 成人福利电影精品一区二区在线观看| 洋洋成人永久网站入口| 日韩你懂的电影在线观看| 国产精品正在播放| 亚洲天堂福利av| 7777精品伊人久久久大香线蕉| 精彩视频一区二区三区| 中文字幕一区二区三区在线不卡| 欧美中文字幕一二三区视频| 久久精品国产99| 综合久久久久久| 欧美一区二区三区在线观看| 国产精品69久久久久水密桃| 亚洲精品中文在线观看| 日韩欧美电影在线| 99久久伊人久久99| 日本vs亚洲vs韩国一区三区二区| 欧美激情一区二区三区不卡| 欧美三级三级三级| 国产精品亚洲第一| 亚洲大尺度视频在线观看| 久久综合九色综合97婷婷女人| 色菇凉天天综合网| 国内欧美视频一区二区| 亚洲愉拍自拍另类高清精品| 精品国产91九色蝌蚪| 91传媒视频在线播放| 精品一区二区免费视频| 亚洲激情av在线| xvideos.蜜桃一区二区| 欧美日韩在线免费视频| 国产91精品欧美| 青青草91视频| 亚洲欧洲www| 精品1区2区在线观看| 色美美综合视频| 国产乱子轮精品视频| 性久久久久久久久久久久| 国产嫩草影院久久久久| 欧美一区二区三区系列电影| 色呦呦网站一区| 国产成人精品综合在线观看| 青青国产91久久久久久| 亚洲免费观看高清完整| 国产午夜精品理论片a级大结局 | 91丨九色丨尤物| 国内成+人亚洲+欧美+综合在线| 亚洲国产中文字幕| 18欧美乱大交hd1984| 久久久久久久久久久久电影| 欧美一区二区三区爱爱| 欧美熟乱第一页| 色婷婷香蕉在线一区二区| 福利电影一区二区| 国内精品久久久久影院色| 日本欧美一区二区在线观看| 亚洲图片自拍偷拍| 亚洲免费色视频| 日韩理论在线观看| 国产精品视频你懂的| 国产网红主播福利一区二区| 欧美zozo另类异族| 日韩欧美国产午夜精品| 欧美一区二区视频在线观看2022 | 在线观看国产一区二区| av电影一区二区| 懂色av一区二区三区蜜臀| 久久99国产精品尤物| 日本一不卡视频| 日韩在线卡一卡二| 视频一区二区三区中文字幕| 亚洲成人中文在线| 亚洲成av人片在www色猫咪| 亚洲一区在线观看网站| 一区二区三区四区五区视频在线观看 | 欧美亚洲国产一卡| 在线观看亚洲精品| 欧美三级视频在线| 欧美色大人视频| 欧美视频三区在线播放| 欧美私模裸体表演在线观看| 欧美性猛交xxxxxx富婆| 欧美三级电影在线看| 欧美在线一区二区| 在线影视一区二区三区| 欧美最猛性xxxxx直播| 91黄色在线观看| 欧美三级视频在线播放| 8x福利精品第一导航| 欧美一级免费大片| 日韩欧美中文字幕一区| 精品久久国产字幕高潮| 久久久亚洲精华液精华液精华液| 久久久不卡影院| 国产精品私房写真福利视频| 亚洲欧美综合在线精品| 亚洲激情在线播放| 婷婷国产v国产偷v亚洲高清| 蜜桃视频在线一区| 国产麻豆视频一区| av不卡免费在线观看| 色偷偷久久一区二区三区| 欧美日韩在线亚洲一区蜜芽| 日韩午夜av电影| 国产亚洲一本大道中文在线| 中文字幕不卡的av| 亚洲自拍偷拍图区| 日韩高清国产一区在线| 一区二区三区精品视频在线| 91亚洲精品乱码久久久久久蜜桃| av欧美精品.com| 欧美日韩免费视频| 日韩欧美国产麻豆| 欧美激情一区二区| 一区二区免费看| 久久精品国产一区二区| 国产电影一区在线| 91精彩视频在线| 日韩欧美一区二区免费| 国产三级一区二区| 一级特黄大欧美久久久| 蜜桃av一区二区| av色综合久久天堂av综合| 欧美日韩高清一区二区| 久久久噜噜噜久久中文字幕色伊伊| 国产精品美女久久久久久| 一区二区三区免费观看| 久久精品国产成人一区二区三区| 成人av电影在线观看| 欧美日韩另类一区| 国产婷婷精品av在线|