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

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

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

RilSimTKit.cpp

Abstract:


Notes:


--*/



#include "precomp.h"
#undef assert
#include "Safeint.hxx"

#ifndef _PREFAST_
#pragma warning( disable: 4068 )
#endif

static const BYTE gsc_pbDefTerminalProfile[]    = {0x01, 0x61, 0xFF, 0x7F, 0x61, 0x00, 0x00, 0x30, 0x21};

typedef HRESULT (CRilSimToolkitCommand::*TLVPARSEFUNC)();

// A description of each toolkit command and which components it needs.  Note that the high bit is
// set if a component is optional, otherwise, it is mandatory
// NOTE: Open Channel is handled outside of this array of commands.
const DWORD g_rgdwTLV[] = {
      5, SIM_NOTIFY_DISPLAYTEXT, TEXTTAG, (ICONTAG | OPTIONALTAG), (IMMEDIATETAG | OPTIONALTAG),
      4, SIM_NOTIFY_GETINKEY, TEXTTAG, (ICONTAG | OPTIONALTAG),
      4, SIM_NOTIFY_SETUPIDLEMODETEXT, TEXTTAG, (ICONTAG | OPTIONALTAG),
      6, SIM_NOTIFY_GETINPUT, TEXTTAG, RESPONSETAG, (DEFTEXTTAG | OPTIONALTAG), (ICONTAG | OPTIONALTAG),
      2, SIM_NOTIFY_MORETIME,
      6, SIM_NOTIFY_PLAYTONE, (ALPHAIDTAG | OPTIONALTAG), (TONETAG | OPTIONALTAG), (DURATIONTAG | OPTIONALTAG), (ICONTAG | OPTIONALTAG),
      3, SIM_NOTIFY_POLLINTERVAL, DURATIONTAG,
      7, SIM_NOTIFY_SETUPMENU, ALPHAIDTAG, MENUITEMTAG, (NEXTACTIONTAG | OPTIONALTAG), (ICONTAG | OPTIONALTAG), (ICONLISTTAG | OPTIONALTAG),
      8, SIM_NOTIFY_SELECTITEM, (ALPHAIDTAG | OPTIONALTAG), MENUITEMTAG, (NEXTACTIONTAG | OPTIONALTAG), (ITEMIDTAG | OPTIONALTAG), (ICONTAG | OPTIONALTAG), (ICONLISTTAG | OPTIONALTAG),
      6, SIM_NOTIFY_SENDSMS, (ALPHAIDTAG | OPTIONALTAG), (ADDRESSTAG | OPTIONALTAG), TPDUTAG, (ICONTAG | OPTIONALTAG),
      5, SIM_NOTIFY_SENDSS, (ALPHAIDTAG | OPTIONALTAG), SSSTRINGTAG, (ICONTAG | OPTIONALTAG),
      5, SIM_NOTIFY_SENDUSSD, (ALPHAIDTAG | OPTIONALTAG), USSDSTRINGTAG, (ICONTAG | OPTIONALTAG),
      // Note: The SETUP CALL 2nd Alpha ID is handled as a special case in Parse Command.
      8, SIM_NOTIFY_SETUPCALL, (ALPHAIDTAG | OPTIONALTAG), ADDRESSTAG, (CAPABILITYTAG | OPTIONALTAG), (SUBADDRTAG | OPTIONALTAG), (DURATIONTAG | OPTIONALTAG), (ICONTAG | OPTIONALTAG),
      3, SIM_NOTIFY_REFRESH, (FILELISTTAG | OPTIONALTAG),   // Note -- this is optional or not depending on the command qualifier
      2, SIM_NOTIFY_POLLINGOFF,
      2, SIM_NOTIFY_LOCALINFO,
      3, SIM_NOTIFY_EVENTLIST, EVENTLISTTAG,
      9, SIM_NOTIFY_LAUNCHBROWSER, (BROWSERIDTAG | OPTIONALTAG), URLTAG, (BEARERTAG | OPTIONALTAG), (PROVISIONFILETAG | OPTIONALTAG), (TEXTTAG | OPTIONALTAG), (ALPHAIDTAG | OPTIONALTAG), (ICONTAG | OPTIONALTAG),
      4, SIM_NOTIFY_CLOSECHANNEL, (ALPHAIDTAG | OPTIONALTAG), (ICONTAG | OPTIONALTAG),
      5, SIM_NOTIFY_RECEIVEDATA, (ALPHAIDTAG | OPTIONALTAG),  (ICONTAG | OPTIONALTAG), CHANNELDATALENTAG,
      5, SIM_NOTIFY_SENDDATA, (ALPHAIDTAG | OPTIONALTAG),  (ICONTAG | OPTIONALTAG), CHANNELDATATAG,
      5, SIM_NOTIFY_SENDDTMF, (ALPHAIDTAG | OPTIONALTAG), DTMFTAG, (ICONTAG | OPTIONALTAG),
      3, SIM_NOTIFY_LANGUAGENOTIFICATION, (LANGUAGETAG | OPTIONALTAG),
      4, SIM_NOTIFY_RUNATCOMMAND, ATCMDTAG, (ICONTAG | OPTIONALTAG),
      0
};

/****************************************************************************

    FUNCTION:   CRilSimToolkitCommand

    PURPOSE:    CRilSimToolkitCommand class constructor

    PARAMETERS: None

    RETURNS:    HRESULT

****************************************************************************/

CRilSimToolkitCommand::CRilSimToolkitCommand()
: m_fTextNotifications(FALSE)
{
    FUNCTION_TRACE(CRilSimToolkitCommand::CRilSimToolkitCommand);
    m_fTextNotifications = g_rppPDDParams->fSIMToolkit_SupportsTextNotifications;
}


/****************************************************************************

    FUNCTION:   ~CRilSimToolkitCommand

    PURPOSE:    CRilSimToolkitCommand class destructor

    PARAMETERS: None

    RETURNS:    HRESULT

****************************************************************************/

CRilSimToolkitCommand::~CRilSimToolkitCommand()
{
    FUNCTION_TRACE(CRilSimToolkitCommand::~CRilSimToolkitCommand);
}


/****************************************************************************

    FUNCTION:   ParseCommand

    PURPOSE:    Parses a Proactive SIM command, returning a structure
                containing the command details suitable for passing
                to SIMTKit.

    PARAMETERS: szData - Data from SIM card
                dwDataSize - Size of that data
                ppCommand - Resulting structure to send to caller
                pdwCommandId - ID of this command
                pdwNotifyCode - What the notification code is

    RETURNS:    DWORD - SIMTKit response code.

****************************************************************************/

DWORD CRilSimToolkitCommand::ParseCommand(LPCSTR szData, DWORD dwDataSize, RILSIMTOOLKITCMD **ppCommand, DWORD *pdwCommandSize)
{
    FUNCTION_TRACE(CRilSimToolkitCommand::ParseCommand);

    HRESULT hr;
    DWORD dwRetVal = SIM_RESPONSE_OK;
    DWORD dwResultSize = 0;
    DWORD dwNotifyCode = 0;
    DWORD dwCommandId = 0;
    DWORD dwCommandTag = 0;
    DWORD i;
    DWORD numTLVs;
    DWORD dwTag;
    BYTE bCmdQualifier = 0;
    LPBYTE lpbResult = NULL;
    const DWORD *pdwTLV;
    RILSIMTOOLKITCMD* pCmd = NULL;
#pragma prefast( push )
#pragma prefast( disable: 5434, "PREfast noise: No function call but pointers to function" )
    const TLVPARSEFUNC rglpfnParse[] = { NULL, NULL, NULL, NULL, ReadDuration,                  // 0x00 - 0x04
            ReadAlphaIdentifier, ReadAddress, ReadCapability, ReadSubAddress, ReadShortString,  // 0x05 - 0x09
            ReadUSSD, ReadTPDU, NULL, ReadTextString, ReadTone,                                 // 0x0A - 0x0E
            ReadMenuItem, ReadItemIdentifier, ReadResponseLength, ReadFileList, NULL,           // 0x0F - 0x13
            NULL, NULL, NULL, ReadDefaultTextString, ReadNextAction,                            // 0x14 - 0x18
            ReadEventList, NULL, NULL, NULL, NULL,                                              // 0x19 - 0x1D
            ReadIconIdentifier, ReadIconIdentifierList, NULL, NULL, NULL,                       // 0x1E - 0x22
            NULL, NULL, NULL, NULL, NULL,                                                       // 0x23 - 0x27
            ReadATCommand, NULL, NULL, ReadImmediate, ReadDTMF,                                 // 0x28 - 0x2C
            ReadLanguage, NULL, NULL, ReadBrowserIdentity, ReadURL,                             // 0x2D - 0x31
            ReadBearer, ReadProvisionFileList, NULL, NULL, ReadChannelData,                     // 0x32 - 0x36
            ReadChannelDataLength                                                               // 0x37
            };
#pragma prefast( pop )


    // Assert parameters
    DEBUGCHK(*ppCommand == NULL);
    DEBUGCHK(szData != NULL);

    // Check parameters
    if (szData == NULL)
    {
        dwRetVal = SIM_RESPONSE_ERR_MOBILEINCAPABLE;
        goto Exit;
    }

    // Set up some variables
    m_lpbParse = NULL;
    m_dwParseLen = 0;
    m_pwszAlphaId = NULL;
    m_pwszText = NULL;
    m_pwszDefaultText = NULL;
    m_pwszAddress = NULL;
    m_pwszSubAddr = NULL;
    m_pwszUSSD = NULL;
    m_lpbTPDU = NULL;
    m_dwAlphaIdLen = 0;
    m_dwTextLen = 0;
    m_dwDefaultTextLen = 0;
    m_dwAddressLen = 0;
    m_dwSubAddrLen = 0;
    m_dwUSSDLen = 0;
    m_dwTPDULen = 0;
    m_dwNumFiles = 0;
    m_dwDuration = SIMTONE_DEFAULTDURATION;
    m_dwDuration2 = SIMOPENCHANNEL_DEFAULTDURATION;
    m_dwTone = SIMTONE_DEFAULT;
    m_dwMinResponse = 1;
    m_dwMaxResponse = 1;
    m_dwItemId = 0xffffffff;
    m_rgpsmi = NULL;
    m_numpsmi = 0;
    m_dwAddrType = SIM_ADDRTYPE_UNKNOWN;
    m_dwNumPlan = SIM_NUMPLAN_UNKNOWN;
    m_pdwFiles = NULL;
    m_lpbEventList = NULL;
    m_dwEventListLen = 0;
    m_dwBrowserId = 0xffffffff;
    m_pwszURL = NULL;
    m_dwURLLen = 0;
    m_lpbBearer = NULL;
    m_dwBearerLen = 0;
    m_rgpsfr = NULL;
    m_numpsfr = 0;
    m_pwszDTMF = NULL;
    m_dwDTMFLen = 0;
    m_lpbChannelData = NULL;
    m_dwChannelDataLen = 0;
    m_dwChannelDataLength = 0xffffffff;
    m_dwDeviceSrcId = 0;
    m_dwDeviceDestId = 0;
    m_pwszLanguage = NULL;
    m_dwLanguageLen = 0;
    m_dwLocalAddrType = 0;
    m_lpbLocalAddr = NULL;
    m_dwLocalAddrLen = 0;
    m_lpbDestAddr = NULL;
    m_dwDestAddrLen = 0;
    m_pwszLogin = NULL;
    m_dwLoginLen = 0;
    m_pwszPassword = NULL;
    m_dwPasswordLen = 0;
    m_dwDestAddrType = 0;
    m_dwBearerDescType = 0;
    m_lpbBearerDesc = NULL;
    m_dwBearerDescLen = 0;
    m_dwBufferSize = 0;
    m_dwProtocolType = 0;
    m_dwPortNum = 0;
    m_lpbAccessName = NULL;
    m_dwAccessNameLen = 0;
    m_fImmediateResponse = FALSE;
    m_dwIconIdentifier = SIMTKIT_INVALID_VALUE;
    m_dwIconQualifier = SIMTKIT_INVALID_VALUE;
    m_pwszAlphaId2 = NULL;
    m_dwAlphaId2Len = 0;
    m_dwIconIdentifier2 = SIMTKIT_INVALID_VALUE;
    m_dwIconQualifier2 = SIMTKIT_INVALID_VALUE;

    // Text based, comma delimited commands passed from the radio.
    if (m_fTextNotifications)
    {
        m_lpbParse = (LPBYTE)szData;
        m_dwParseLen = dwDataSize;
        hr = ParseTextFormatCommand(&dwNotifyCode, &bCmdQualifier, &dwRetVal);

        if (FAILED(hr))
        {
            DEBUGCHK(FALSE);
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: Parsing of command %x failed.\r\n"), dwNotifyCode));
            dwRetVal = SIM_RESPONSE_ERR_MOBILEINCAPABLE;
            goto Exit;
        }
    }
    // Byte based commands from the radio.
    else
    {
        m_lpbParse = (LPBYTE)szData;

        // First comes the proactive SIM command tag
        if (*(m_lpbParse++) != 0xD0)
        {
            // Unexpected command
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: First byte is %x, expected 0xD0\r\n"), *(m_lpbParse - 1)));
            dwRetVal = SIM_RESPONSE_ERR_COMMANDNUMBER;
            goto Exit;
        }

        // Then comes the length -- note we have to be a little sly here -- this actually ends up
        // changing m_dwParseLen, but what I really want to do is SET m_dwParseLen here
        m_dwParseLen = 5;
        if ( dwDataSize < m_dwParseLen )
        {
            m_dwParseLen = 0;
        }
        hr = ReadCmdLength(&m_dwParseLen);
        if (FAILED(hr))
        {
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: ReadCmdLength returned error\r\n")));
            dwRetVal = SIM_RESPONSE_ERR_COMMANDNUMBER;
            goto Exit;
        }

        ASSERT(m_dwParseLen == (dwDataSize - 2) || m_dwParseLen == (dwDataSize - 3));
        if (m_dwParseLen < 9)
        {
            // Invalid -- even MORETIME has 9 bytes more
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: Not enough bytes for command details, expected at least 9, saw %d\r\n"), m_dwParseLen));
            dwRetVal = SIM_RESPONSE_ERR_COMMANDNUMBER;
            goto Exit;
        }

        // First byte -- the command details tag. Save this because a proper terminal response requires
        // the command details to be identical to the proactive commands, including comprehension settings.
        dwCommandTag = (DWORD) (*(m_lpbParse++));

        if ((dwCommandTag & 0x7f) != COMMANDIDTAG)
        {
            // Invalid
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: Expected Command ID Tag, saw %x\r\n"), dwCommandTag));
            dwRetVal = SIM_RESPONSE_ERR_COMMANDNUMBER;
            goto Exit;
        }

        // Second byte -- length, should be 3
        if (*(m_lpbParse++) != 3)
        {
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: Expected 3 in second byte of Command ID, saw %x\r\n"), *(m_lpbParse - 1)));
            dwRetVal = SIM_RESPONSE_ERR_COMMANDNUMBER;
            goto Exit;
        }

        // Third byte -- the command number
        dwCommandId = (DWORD) (*(m_lpbParse++));

        // Fourth byte -- the command (fifth byte is command-specific data (command qualifier))
        dwNotifyCode = (DWORD) (*(m_lpbParse++));
        bCmdQualifier = *(m_lpbParse++);
        DEBUGMSG(ZONE_INFO, (TEXT("RILDrv : SIMTKit: Command ID %x, Notification %x, Command Qualifier %x\r\n"), dwCommandId, dwNotifyCode, bCmdQualifier));

        // The next 4 bytes are "device identities" -- we ignore these,
        // but the first byte should be 2 and so should the second byte
        if ((*(m_lpbParse++) & 0x7f) != DEVICEIDTAG)
        {
            // Invalid
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: Expected Device ID Tag, saw %x\r\n"), *(m_lpbParse - 1)));
            dwRetVal = SIM_RESPONSE_ERR_COMMANDDATA;
            goto Exit;
        }

        // Next byte -- length, should be 2
        if (*(m_lpbParse++) != 2)
        {
            DEBUGMSG(ZONE_ERROR, (TEXT("RILDrv : SIMTKit: Expected Device ID Length of 2, saw %x\r\n"), *(m_lpbParse - 1)));
            dwRetVal = SIM_RESPONSE_ERR_COMMANDDATA;
            goto Exit;
        }

        // Source and destination device ID's.
        m_dwDeviceSrcId = (DWORD) (*(m_lpbParse++));
        m_dwDeviceDestId = (DWORD) (*(m_lpbParse++));
        m_dwParseLen -= 9;


        // Special parsing for Open channel commands
        if (SIM_NOTIFY_OPENCHANNEL == dwNotifyCode)
        {
            // Parse Optional alphaID
            if ((m_dwParseLen > 0) && ((*m_lpbParse & 0x7f) == (BYTE)ALPHAIDTAG))
            {
                m_lpbParse++;
                m_dwParseLen--;
                hr = ReadAlphaIdentifier();
                if (FAILED(hr))
                {
                    // Failure
                    DEBUGMSG(ZONE_ERROR, (TEXT("RilDrv : SIMTKit: Function for TLV AlphaID failed while parsing Open Channel.\r\n")));
                    dwRetVal = SIM_RESPONSE_ERR_VALUESMISSING;
                    goto Exit;
                }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲精品国产欧美kt∨ | 欧美精品一区二区蜜臀亚洲| 欧美午夜电影网| 91久久精品一区二区三区| 成人精品电影在线观看| 国产精品77777竹菊影视小说| 久久精品国产精品亚洲综合| 日本sm残虐另类| 久久成人av少妇免费| 激情综合网av| 国产一区二区三区在线观看精品 | 久久免费看少妇高潮| 久久无码av三级| 国产亚洲欧洲一区高清在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 国产激情一区二区三区四区| 国产乱妇无码大片在线观看| 高清beeg欧美| 91麻豆精品一区二区三区| 日本韩国一区二区三区视频| 欧美在线不卡一区| 日韩一级二级三级| 久久一留热品黄| 国产精品卡一卡二卡三| 一区二区三区中文字幕| 亚洲成国产人片在线观看| 秋霞国产午夜精品免费视频| 激情综合色播五月| 99久久久精品免费观看国产蜜| 91久久国产综合久久| 91精品婷婷国产综合久久性色| 精品国产伦一区二区三区观看方式 | 免费观看91视频大全| 韩国精品一区二区| 波多野结衣在线一区| 在线看不卡av| 精品国产电影一区二区| 国产欧美久久久精品影院| 亚洲综合免费观看高清完整版在线| 日本成人中文字幕在线视频| 国产高清不卡一区二区| 日本久久电影网| 精品久久久久久无| 亚洲精品日产精品乱码不卡| 蜜桃一区二区三区在线| 99视频有精品| 欧美一级专区免费大片| 中文字幕亚洲成人| 日本午夜精品一区二区三区电影| 国产高清无密码一区二区三区| 色婷婷精品大视频在线蜜桃视频| 制服丝袜亚洲播放| 国产欧美日韩三区| 天涯成人国产亚洲精品一区av| 国产成人夜色高潮福利影视| 欧美猛男男办公室激情| 国产精品免费观看视频| 日韩高清不卡在线| 色综合天天性综合| 精品91自产拍在线观看一区| 亚洲一区二区三区美女| 国产成人av自拍| 国产精品久久三| 日韩国产成人精品| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 欧美日韩一区二区在线视频| 国产亚洲欧美日韩日本| 日韩不卡在线观看日韩不卡视频| 成人午夜视频福利| 日韩欧美另类在线| 亚洲妇熟xx妇色黄| 91麻豆免费看片| 日本一区二区视频在线观看| 久久精品av麻豆的观看方式| 欧美日韩一区二区三区高清| 亚洲欧美视频在线观看| 国产成人精品三级| 精品国产凹凸成av人导航| 午夜欧美电影在线观看| 99视频一区二区三区| 国产色产综合产在线视频| 久久国产夜色精品鲁鲁99| 欧美日韩另类一区| 一区二区三区在线观看国产| 波多野结衣中文字幕一区| 国产欧美一区二区精品性色| 久久成人免费电影| 欧美α欧美αv大片| 男女男精品视频网| 911精品国产一区二区在线| 亚洲国产三级在线| 欧美中文字幕不卡| 亚洲精选免费视频| 99精品视频一区二区三区| 国产精品妹子av| 成人午夜视频福利| 国产精品久线观看视频| 成人黄色小视频| 日本一二三不卡| 成人免费黄色大片| 国产精品久久久久久久岛一牛影视 | 午夜一区二区三区视频| 欧美亚洲动漫制服丝袜| 亚洲美女精品一区| 色婷婷综合久色| 亚洲一二三四在线| 欧美三级日韩三级| 五月婷婷综合激情| 777久久久精品| 久久99久久99精品免视看婷婷| 日韩视频一区二区三区在线播放| 秋霞av亚洲一区二区三| 欧美一区国产二区| 久久精品国产99| 国产日韩欧美精品在线| av一区二区三区| 亚洲一区二区美女| 欧美卡1卡2卡| 久久国产三级精品| 久久精品亚洲国产奇米99| 成人h动漫精品一区二区| 亚洲视频在线一区二区| 欧美偷拍一区二区| 另类小说图片综合网| 国产欧美在线观看一区| 91视视频在线直接观看在线看网页在线看| 亚洲视频免费观看| 欧美乱熟臀69xxxxxx| 久久 天天综合| 国产精品久久久久久久久免费樱桃 | 美女一区二区三区| 久久久国产精品麻豆| 91色视频在线| 午夜精品一区二区三区免费视频| 日韩一区二区三区四区| 国产成人免费9x9x人网站视频| 中文字幕制服丝袜成人av | 欧美性受xxxx| 人人爽香蕉精品| 国产精品美女久久久久久2018| 日本精品一区二区三区高清| 美女在线一区二区| 中文字幕一区二区三| 91精品午夜视频| 成人精品在线视频观看| 亚洲国产乱码最新视频| 久久久久久一级片| 欧美午夜精品一区| 九九精品视频在线看| 亚洲日本乱码在线观看| 91精品国产91综合久久蜜臀| 成人动漫一区二区三区| 亚洲午夜电影网| 精品久久久久av影院| 色噜噜久久综合| 激情综合色播激情啊| 亚洲精品美腿丝袜| 国产色爱av资源综合区| 欧美日韩中文另类| 成人一级视频在线观看| 日韩av在线发布| 国产欧美日韩另类一区| 欧美日韩一区小说| 99久久99久久精品免费观看| 精品一区二区三区在线观看国产| 亚洲特级片在线| 久久久噜噜噜久久中文字幕色伊伊 | 国产在线精品不卡| 亚洲午夜精品网| 日本一区二区三区国色天香| 成人动漫视频在线| 久久成人综合网| 视频在线观看91| 中文字幕一区在线观看视频| 日韩一级完整毛片| 99re热视频精品| 男男视频亚洲欧美| 亚洲福利视频导航| 亚洲桃色在线一区| 国产欧美一区二区精品久导航| 精品视频在线看| 99re视频精品| 国产成人亚洲综合a∨婷婷图片| 一区二区三区 在线观看视频| 中文字幕乱码久久午夜不卡| 555www色欧美视频| 99视频在线精品| 国产麻豆视频一区| 久久av老司机精品网站导航| 亚洲午夜羞羞片| 亚洲日本欧美天堂| 国产精品国产自产拍高清av| www激情久久| 久久综合九色综合97婷婷| 欧美一卡二卡在线观看| 欧美男女性生活在线直播观看| 色婷婷综合久久久久中文一区二区 | 国产精品国产成人国产三级 | 偷窥少妇高潮呻吟av久久免费| 日韩一区日韩二区|