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

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

?? 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频一区二区| 亚洲精品国产一区二区三区四区在线| 日本最新不卡在线| 4hu四虎永久在线影院成人| 日韩黄色小视频| 日韩精品专区在线| 国产91丝袜在线观看| 亚洲三级免费观看| 欧美日韩精品电影| 裸体一区二区三区| 日本一区二区三区四区在线视频| av一区二区三区黑人| 一区二区高清视频在线观看| 欧美日韩一二区| 美国毛片一区二区三区| 国产精品婷婷午夜在线观看| 在线观看日韩毛片| 精品一区二区三区蜜桃| 国产精品久久久久久久久久久免费看 | 国产成人免费网站| 亚洲欧美一区二区不卡| 欧美一区二区视频观看视频| 国产剧情在线观看一区二区| 亚洲人妖av一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 精品国产凹凸成av人网站| 成人深夜视频在线观看| 亚洲国产精品久久艾草纯爱| 精品国产乱码久久久久久牛牛| 99综合影院在线| 日本不卡视频在线| 中文字幕亚洲在| 欧美老年两性高潮| 福利一区二区在线| 日韩精品每日更新| 亚洲色图清纯唯美| 2023国产精品自拍| 欧美日韩一二区| 91亚洲精品久久久蜜桃| 久久国产精品99久久人人澡| 一级做a爱片久久| 国产人久久人人人人爽| 3d成人h动漫网站入口| 91小视频在线| 国产成人亚洲综合色影视 | 日韩av午夜在线观看| 国产精品成人免费精品自在线观看| 91精品国产一区二区三区| av在线一区二区| 狠狠色丁香九九婷婷综合五月| 亚洲综合一二区| 国产精品国产三级国产| 精品av久久707| 欧美久久一二三四区| 91丨porny丨最新| 国产精品伊人色| 激情综合五月婷婷| 日本美女视频一区二区| 亚洲图片一区二区| 亚洲自拍偷拍av| 亚洲黄色免费网站| 亚洲日本va午夜在线影院| 国产精品视频免费| 国产日韩三级在线| 精品国产91乱码一区二区三区| 欧美一区二区人人喊爽| 欧美三级中文字幕| 欧美专区日韩专区| 色素色在线综合| 91福利小视频| 在线观看视频91| 欧美在线一二三| 欧美日韩精品一区二区在线播放| 91黄色在线观看| 欧美日韩国产不卡| 91精品视频网| 日韩女优毛片在线| 亚洲精品一区二区三区在线观看| 亚洲视频资源在线| 亚洲综合在线免费观看| 一区二区三区精品在线观看| 亚洲色图制服丝袜| 亚洲一区二区四区蜜桃| 午夜精品福利视频网站| 亚洲va欧美va人人爽| 日韩成人免费看| 毛片一区二区三区| 国产成人免费视频| 99久久精品国产精品久久| 91亚洲男人天堂| 欧美日韩不卡在线| www久久精品| 中文字幕精品一区二区三区精品| 中文字幕日韩av资源站| 亚洲国产乱码最新视频| 另类人妖一区二区av| 丰满少妇久久久久久久| 91小视频免费看| 91精品国产91久久久久久一区二区| 精品三级在线观看| 最新欧美精品一区二区三区| 亚洲v精品v日韩v欧美v专区| 经典三级视频一区| 91视频免费观看| 在线成人小视频| 久久综合狠狠综合久久综合88 | 91丨porny丨最新| 4438亚洲最大| 日本一区二区成人在线| 香蕉久久一区二区不卡无毒影院| 国内精品久久久久影院一蜜桃| 不卡一区二区在线| 91精品国产综合久久久蜜臀图片| 国产欧美一区二区三区在线看蜜臀 | 91精品麻豆日日躁夜夜躁| 久久久久久亚洲综合| 亚洲裸体在线观看| 狠狠色狠狠色合久久伊人| 色又黄又爽网站www久久| 欧美不卡视频一区| 亚洲精品第一国产综合野| 精品一区二区三区免费观看| 日本久久精品电影| 精品国产乱码久久久久久久| 一区二区免费看| 国产成人福利片| 日韩欧美一级精品久久| 一区二区在线观看av| 韩国三级电影一区二区| 欧美视频中文一区二区三区在线观看 | 老鸭窝一区二区久久精品| 色综合欧美在线| 国产丝袜欧美中文另类| 天天色天天操综合| 久久久亚洲精品石原莉奈| 亚洲国产精品久久不卡毛片| 成人理论电影网| 精品国产成人系列| 蜜臀av性久久久久av蜜臀妖精| 在线一区二区观看| ...av二区三区久久精品| 国产乱人伦偷精品视频免下载| 欧美军同video69gay| 一区二区免费看| 91丨九色porny丨蝌蚪| 中文字幕av资源一区| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲婷婷在线视频| 大尺度一区二区| 久久久亚洲精品一区二区三区| 美女一区二区三区在线观看| 欧美日韩一区二区电影| 亚洲一区二区三区小说| 日本道色综合久久| 一区二区三区欧美久久| 99精品桃花视频在线观看| 国产精品午夜在线| 成人免费视频视频在线观看免费| 久久精品视频网| 国产精品一区二区不卡| 国产亚洲欧美中文| 东方aⅴ免费观看久久av| 国产婷婷色一区二区三区在线| 国产精品99久久不卡二区| 久久精品一区二区| 成人免费看视频| 国产精品成人网| 色综合天天综合狠狠| 亚洲天堂2014| 欧洲精品视频在线观看| 午夜精品成人在线视频| 欧美一区二区三区四区视频| 麻豆精品一区二区| 久久精品亚洲麻豆av一区二区| 国产精品亚洲视频| 国产一本一道久久香蕉| 久久久久综合网| 99综合电影在线视频| 一级日本不卡的影视| 欧美精品成人一区二区三区四区| 肉丝袜脚交视频一区二区| 日韩美女视频在线| 国产美女精品人人做人人爽| 欧美国产欧美亚州国产日韩mv天天看完整| 国产成人av福利| 亚洲天堂网中文字| 欧美丰满高潮xxxx喷水动漫| 久久国产剧场电影| 国产精品剧情在线亚洲| 欧美午夜宅男影院| 久久99精品久久久久久国产越南| 中文字幕第一页久久| 91国偷自产一区二区开放时间| 日韩电影网1区2区| 中文字幕欧美日韩一区| 欧美色视频在线| 国产综合色视频| 亚洲最大成人综合| 精品国产区一区| 日本精品一级二级|