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

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

?? comhand.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:

comhand.cpp

Abstract:


Notes:


--*/


#include "precomp.h"
#ifdef RIL_LAST_ERROR
#include "ccoreutl.h"
#endif

// Initialize radio off to true, since this is how we boot up.
BOOL g_bRadioOff = TRUE;
BOOL g_bSettingMinimumEquipmentState = FALSE;
#ifdef RIL_LAST_ERROR
extern DWORD g_dwLastError;
#endif

extern DWORD g_dwPrintSIMPINInfo;
extern BOOL SetupCallListEvaluation (void);

//
// Virtual serial device handle ctor
//
CComHandle::CComHandle()
: m_hDownstream(INVALID_HANDLE_VALUE),
m_hDownstream2(INVALID_HANDLE_VALUE),
m_hCommandModeEvent(NULL),
m_hCancelEvent(NULL),
#ifndef DEDICATED_DATA_PORT
m_hDataModeInterrupted(NULL),
#endif
#ifdef DEDICATED_DATA_PORT
m_hDataModeEvent(NULL),
#endif
m_pBuffer(NULL),
m_dwDownstreamBaudRate(115200),
m_dwStatQuantum(500),
m_pOwner(NULL),
m_fInited(FALSE),
m_fPortOpened(FALSE),
m_fDataMode(FALSE),
m_fCancelledDial(FALSE),
m_dwNumTimeouts(0),
m_dwMaxTimeouts(3)
{
    // FUNCTION_TRACE(CComHandle::CComHandle);
    DWORD dwTemp;

    InitializeCriticalSection(&m_csDataMode);
    InitializeCriticalSection(&m_csOwner);
    InitializeCriticalSection(&m_csStats);

    // Read the baud rate for the downstream modem
    if (GetRegistryDWORD(HKEY_LOCAL_MACHINE, g_tszRegKeyRIL, TEXT("BaudRate"), &dwTemp))
    {
        m_dwDownstreamBaudRate = dwTemp;
    }

    // Read the data mode interruption time
    if (GetRegistryDWORD(HKEY_LOCAL_MACHINE, g_tszRegKeyRIL, TEXT("DataModeInteruptionQuantum"), &dwTemp))
    {
        m_dwStatQuantum = dwTemp;
    }

    // Read the data mode interruption time
    if (GetRegistryDWORD(HKEY_LOCAL_MACHINE, g_tszRegKeyRIL, TEXT("MaxTimeouts"), &dwTemp))
    {
        m_dwMaxTimeouts = dwTemp;
    }

    // Intialize read and write data bickets to 0
    memset(m_rgdwReadStatBits,  0x00, STAT_BUCKETS * sizeof(DWORD));
    memset(m_rgdwWriteStatBits, 0x00, STAT_BUCKETS * sizeof(DWORD));

    // Set the initial timestamps for com activity stats
    m_dwReadStatTimestamp = GetTickCount();
    m_dwWriteStatTimestamp = m_dwReadStatTimestamp;
}


//
// Virtual serial device handle dtor
//
CComHandle::~CComHandle()
{
    // FUNCTION_TRACE(CComHandle::~CComHandle);
    if (m_fPortOpened)
    {
        (void)CloseDownstreamPort();
        m_fPortOpened = FALSE;
    }

    if (m_hCommandModeEvent)
    {
        CloseHandle(m_hCommandModeEvent);
        m_hCommandModeEvent = NULL;
    }

    if (m_hCancelEvent)
    {
        CloseHandle(m_hCancelEvent);
        m_hCancelEvent = NULL;
    }

#ifndef DEDICATED_DATA_PORT
    if (m_hDataModeInterrupted)
    {
        CloseHandle(m_hDataModeInterrupted);
        m_hDataModeInterrupted = NULL;
    }
#endif

#ifdef DEDICATED_DATA_PORT
    if (m_hDataModeEvent)
    {
        CloseHandle(m_hDataModeEvent);
        m_hDataModeEvent = NULL;
    }
#endif

    delete m_pBuffer;
    m_pBuffer = NULL;

    DeleteCriticalSection(&m_csDataMode);
    DeleteCriticalSection(&m_csOwner);
    DeleteCriticalSection(&m_csStats);
    m_fInited = FALSE;
}


//
// Virtual serial device handle initialization
//
BOOL CComHandle::Init()
{
    // FUNCTION_TRACE(CComHandle::Init);
    if (m_fInited)
    {
        goto Error;
    }

    // Create command-mode event
    m_hCommandModeEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
    if (!m_hCommandModeEvent)
    {
        goto Error;
    }

    // Create cancel event
    m_hCancelEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    if (!m_hCancelEvent)
    {
        goto Error;
    }

#ifndef DEDICATED_DATA_PORT
    // Create data mode interrupt event
    m_hDataModeInterrupted = CreateEvent(NULL, TRUE, FALSE, NULL);
    if (!m_hDataModeInterrupted)
    {
        goto Error;
    }
#endif

#if DEDICATED_DATA_PORT

    // Create event to signal data mode to data port
    m_hDataModeEvent = CreateEvent(NULL, TRUE, FALSE, RILDRIVERDATAMODE_EVENT);
    if (!m_hDataModeEvent)
    {
        goto Error;
    }

#endif

    // Create backup buffer
    m_pBuffer = new CBuffer;
    if (!m_pBuffer)
    {
        goto Error;
    }

    // Initialize the shared resource underneath
    m_fInited = CSharedResource::Init(m_hCancelEvent);

    Error:
    return m_fInited;
}

// Causes a reboot if more than some number of commands in a row fail
void CComHandle::SetTimeoutStatus(BOOL bTimedOut)
{
    // FUNCTION_TRACE(CComHandle::SetTimeoutStatus);
    if (bTimedOut)
    {
        m_dwNumTimeouts++;
        if (m_dwNumTimeouts>=m_dwMaxTimeouts)
        {
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : CComHandle::SetTimeoutStatus : Too many timeouts, rebooting via CPM\r\n")));
            SignalCriticalError(RILLOG_EVENT_TOOMANYTIMEOUTS, __LINE__, __FILE__);
        }
    }
    else
    {
        m_dwNumTimeouts=0;
    }
}

//
// Open downstream port
//
BOOL CComHandle::OpenDownstreamPort()
{
    // FUNCTION_TRACE(CComHandle::OpenDownstreamPort);

#ifdef UNDER_CE
    DWORD dwFlags = 0;
#else   // UNDER_CE
    DWORD dwFlags = FILE_FLAG_OVERLAPPED;
#endif // UNDER_CE

    TCHAR tszComName[6];
    DWORD dwTimeout;
    DWORD nAttempts = 0;
    DWORD nMaxAttempts;
    BOOL fRet = FALSE;

    // Get the COM port name
    if (!GetRegistrySZ(HKEY_LOCAL_MACHINE, g_tszRegKeyRIL, TEXT("ComPort"), tszComName, 6))
    {
        _tcsncpyz(tszComName, TEXT("COM2:"), 6);
    }

    DEBUGMSG(ZONE_TRACE, (TEXT("RILDrv : t : CComHandle::OpenDownstreamPort : Connecting to COM port: %s\r\n"), tszComName));

    TCHAR tszComNameNotifications[6];
    // Get the Notification COM port name

    tszComNameNotifications[0] = L'\0';
    if (g_rppPDDParams->fNotificationPortSupported) {
        if (!GetRegistrySZ(HKEY_LOCAL_MACHINE, g_tszRegKeyRIL, TEXT("ComPortNotifications"), tszComNameNotifications, 6)) {
            _tcsncpyz(tszComName, TEXT("COM2:"), 6);
            }
        DEBUGMSG(ZONE_TRACE, (TEXT("RILDrv : t : CComHandle::OpenDownstreamPort : Connecting to Notifications COM port: %s\r\n"), tszComNameNotifications));
        }

    // Get the max number of times we should try to open the COM port
    if (!GetRegistryDWORD(HKEY_LOCAL_MACHINE, g_tszRegKeyRIL, TEXT("MaxOpenAttempts"), &nMaxAttempts))
    {
        nMaxAttempts = 3;
    }

    // Get the amount of time we should sleep between attempts
    if (!GetRegistryDWORD(HKEY_LOCAL_MACHINE, g_tszRegKeyRIL, TEXT("OpenTimeout"), &dwTimeout))
    {
        dwTimeout = 1000;
    }

    // Open the COM port
    while (1)
    {
        // Try to open the COM port
        m_hDownstream = CreateFile(tszComName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, dwFlags, NULL);

        // If we succeeded or exhausted the number of attempts, quit looping
        nAttempts++;
        if (m_hDownstream != INVALID_HANDLE_VALUE || nAttempts >= nMaxAttempts)
        {
            break;
        }

        // Sleep the required amount of time and try again
        Sleep(dwTimeout);
    }

    if (g_rppPDDParams->fNotificationPortSupported) {
            nAttempts = 0;
            // Open the Notifications COM port
            while (1)
            {
                // Try to open the COM port
                m_hDownstream2 = CreateFile(tszComNameNotifications, GENERIC_READ, 0, NULL, OPEN_EXISTING, dwFlags, NULL);

                // If we succeeded or exhausted the number of attempts, quit looping
                nAttempts++;
                if (m_hDownstream2 != INVALID_HANDLE_VALUE || nAttempts >= nMaxAttempts)
                {
                    break;
                }

                // Sleep the required amount of time and try again
                Sleep(dwTimeout);
            }

            if (INVALID_HANDLE_VALUE == m_hDownstream2)
            {
                DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : CComHandle::OpenDownstreamPort : Couldn't open downstream port 2\r\n")));
                goto Error;
            }
        }
    
    if (INVALID_HANDLE_VALUE == m_hDownstream)
    {
        DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : CComHandle::OpenDownstreamPort : Couldn't open downstream port\r\n")));
        goto Error;
    }

    if (!InitCommState(NULL))
    {
        DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : E : CComHandle::OpenDownstreamPort : Couldn't Init comm state\r\n")));
        goto Error;
    }

    m_fPortOpened = TRUE;
    fRet = TRUE;

    Error:
    if (!fRet)
    {
        if (INVALID_HANDLE_VALUE != m_hDownstream)
        {
            (void)CloseHandle(m_hDownstream);
        }
        
        if (g_rppPDDParams->fNotificationPortSupported) {
                if (INVALID_HANDLE_VALUE != m_hDownstream2)
                {
                    (void)CloseHandle(m_hDownstream2);
                }
            }
    }
    return fRet;
}


//
// Close downstream port
//
BOOL CComHandle::CloseDownstreamPort()
{
    // FUNCTION_TRACE(CComHandle::CloseDownstreamPort);
    BOOL fRet = FALSE;

    if (!m_fInited || !m_fPortOpened || INVALID_HANDLE_VALUE == m_hDownstream)
    {
        goto Error;
    }

    if (g_rppPDDParams->fNotificationPortSupported) {
            if (INVALID_HANDLE_VALUE == m_hDownstream2)
            {
                goto Error;
            }
        }
    
    // Release all the waiting operations
    (void)SetEvent(m_hCancelEvent);

    // Close the downstream port
    (void)CloseHandle(m_hDownstream);
    m_hDownstream = INVALID_HANDLE_VALUE;
    
    if (g_rppPDDParams->fNotificationPortSupported) {
            // Close the downstream notifications port
            (void)CloseHandle(m_hDownstream2);
            m_hDownstream2 = INVALID_HANDLE_VALUE;
        }

    fRet = TRUE;

    Error:
    return fRet;
}


//
// Serial read
//
BOOL CComHandle::Read(void* pBuf, const UINT cb, DWORD& rdwRead) const

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文无字幕一区二区三区| 久久精品国产久精国产| 国产丝袜欧美中文另类| 日韩欧美国产电影| 欧美高清视频一二三区 | 美日韩黄色大片| 日韩电影在线观看网站| 婷婷开心激情综合| 人人狠狠综合久久亚洲| 免费在线一区观看| 国产精品影音先锋| 成人黄色大片在线观看| 91视频在线看| 欧美日韩国产乱码电影| 日韩美女视频在线| 亚洲国产精品传媒在线观看| 亚洲男同1069视频| 日韩黄色小视频| 国产精品白丝av| 97精品久久久午夜一区二区三区 | 欧美大片日本大片免费观看| 日韩欧美视频一区| 国产精品视频观看| 午夜精品在线看| 国产不卡视频一区| 欧美日韩不卡视频| 久久久国际精品| 亚洲精品国产一区二区精华液| 亚洲地区一二三色| 高清不卡一区二区在线| 欧美无人高清视频在线观看| 日韩欧美一区在线| 亚洲欧美日韩精品久久久久| 捆绑调教美女网站视频一区| 成人avav影音| 精品久久久久久无| 亚洲激情校园春色| 狠狠色丁香婷婷综合久久片| 欧日韩精品视频| 国产亚洲精品资源在线26u| 亚洲一区二区三区四区中文字幕| 九一九一国产精品| 精品视频在线免费看| 国产三级欧美三级日产三级99| 亚洲电影一级片| www.日韩精品| 久久精品一二三| 日本三级韩国三级欧美三级| 91捆绑美女网站| 久久久久久久久97黄色工厂| 日韩影院精彩在线| 在线观看一区二区视频| 久久九九久精品国产免费直播| 日韩精品一二三区| 欧日韩精品视频| 一区二区三区中文字幕在线观看| 国产精品77777| 久久综合精品国产一区二区三区| 丝袜国产日韩另类美女| 在线观看网站黄不卡| 亚洲日本在线a| 99久久99久久免费精品蜜臀| 国产亚洲综合在线| 国产伦精品一区二区三区免费迷| 欧美电影一区二区三区| 亚洲成人在线观看视频| 日本精品一级二级| 亚洲图片你懂的| 91猫先生在线| 一区二区三区免费在线观看| 色婷婷综合久久久久中文一区二区 | 欧美人伦禁忌dvd放荡欲情| 亚洲丝袜制服诱惑| 97久久精品人人做人人爽| 国产精品另类一区| 99亚偷拍自图区亚洲| 专区另类欧美日韩| 91国偷自产一区二区三区观看| 亚洲视频小说图片| 欧美色图激情小说| 日韩精品五月天| 欧美成人伊人久久综合网| 精品在线亚洲视频| 国产欧美综合在线观看第十页| 国产九九视频一区二区三区| 国产欧美日韩一区二区三区在线观看| 国产综合久久久久久鬼色| 国产亚洲自拍一区| 91免费视频观看| 日韩电影网1区2区| 久久久99精品久久| 91色在线porny| 日韩和欧美一区二区三区| 2024国产精品| 99久久国产综合精品麻豆| 一区二区久久久久久| 日韩一区二区三区电影在线观看 | 亚洲欧美成aⅴ人在线观看| 色欧美片视频在线观看在线视频| 一区二区三区在线免费视频| 91精品国产综合久久小美女| 国产在线视视频有精品| 亚洲欧美日韩国产成人精品影院| 91黄色激情网站| 韩国三级电影一区二区| 亚洲免费电影在线| 日韩欧美高清在线| 一本到一区二区三区| 美女视频网站黄色亚洲| 国产网站一区二区| 欧美四级电影在线观看| 国产精品正在播放| 午夜视频在线观看一区| 欧美国产一区在线| 91精品欧美综合在线观看最新 | 欧美精品一卡二卡| 国内外成人在线| 亚洲综合无码一区二区| 久久久久国产一区二区三区四区| 一本一道久久a久久精品| 国产真实乱对白精彩久久| 一区二区三区日本| 国产精品视频yy9299一区| 欧美日韩一区二区三区四区五区| 国产精品99精品久久免费| 亚洲丰满少妇videoshd| 国产免费成人在线视频| 欧美无砖砖区免费| a4yy欧美一区二区三区| 极品少妇一区二区| 午夜精品福利一区二区三区蜜桃| 国产精品麻豆一区二区| 精品乱码亚洲一区二区不卡| 欧美亚洲国产怡红院影院| 国产成人免费视频| 韩国在线一区二区| 亚洲v中文字幕| 亚洲男人的天堂网| 中文字幕一区在线| 中文字幕成人av| 精品日韩欧美一区二区| 欧美一区二区观看视频| 在线播放国产精品二区一二区四区| 99精品视频免费在线观看| 成人午夜av在线| 成人午夜碰碰视频| 91亚洲精华国产精华精华液| 国产精品一级片| 成人黄色av电影| 成人美女视频在线看| 国产成人亚洲综合a∨婷婷| 国产一区二区三区免费观看| 狠狠狠色丁香婷婷综合激情 | 一级女性全黄久久生活片免费| 中文乱码免费一区二区| 国产精品久久毛片av大全日韩| 亚洲国产成人午夜在线一区| 久久理论电影网| 中文字幕不卡在线播放| 亚洲免费av观看| 亚洲国产成人高清精品| 日韩av高清在线观看| 免费成人在线观看| 国产经典欧美精品| 99热精品国产| 欧美日韩精品欧美日韩精品一综合| 欧美伊人久久大香线蕉综合69 | 麻豆免费看一区二区三区| 激情五月激情综合网| 风间由美性色一区二区三区| 成人综合在线观看| 99精品黄色片免费大全| 欧美日韩一区 二区 三区 久久精品 | 欧美喷潮久久久xxxxx| 欧美一区二区三区在线观看| 91精品欧美福利在线观看| 日韩欧美国产成人一区二区| 国产欧美精品区一区二区三区| 国产精品天干天干在观线| 伊人开心综合网| 麻豆精品一区二区| 99麻豆久久久国产精品免费| 欧美久久久久久久久中文字幕| 精品区一区二区| 亚洲激情自拍视频| 国产在线一区二区| 欧美亚洲国产怡红院影院| 久久久久久久久久美女| 亚洲欧美成人一区二区三区| 看片网站欧美日韩| 色素色在线综合| 国产亚洲美州欧州综合国| 午夜精品久久久久久久蜜桃app| 国内国产精品久久| 欧美剧情片在线观看| 亚洲婷婷综合色高清在线| 久久精品国产**网站演员| 91久久精品网| 国产精品国产三级国产aⅴ原创| 日韩av不卡在线观看|