亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
美女一区二区在线观看| 日韩一卡二卡三卡国产欧美| 久久久精品蜜桃| 日韩专区一卡二卡| 欧美日产国产精品| 亚洲欧美成人一区二区三区| 成人av资源下载| 国产精品福利电影一区二区三区四区 | 中文字幕一区在线| 99久久er热在这里只有精品15| 中文字幕电影一区| 91免费观看视频| 亚洲一区二区成人在线观看| 欧美日韩一区二区三区视频| 亚洲日本va午夜在线影院| 欧美伊人久久久久久午夜久久久久| 专区另类欧美日韩| 色视频欧美一区二区三区| 三级欧美在线一区| 久久精品日韩一区二区三区| 99re在线精品| 蜜桃久久久久久| 国产欧美一区二区三区在线看蜜臀 | 欧美亚洲免费在线一区| 五月婷婷综合在线| 久久精品夜色噜噜亚洲a∨| av影院午夜一区| 青青草91视频| 亚洲精品亚洲人成人网在线播放| 91国偷自产一区二区三区成为亚洲经典 | 人人超碰91尤物精品国产| 国产日韩在线不卡| 制服丝袜激情欧洲亚洲| 91视频免费播放| 国产精品一二三四区| 亚洲在线免费播放| 亚洲欧美乱综合| 国产欧美日韩视频一区二区| 欧美精品久久99| 91免费在线播放| 懂色av一区二区三区蜜臀| 免费在线看成人av| 亚洲成人av资源| 亚洲黄色小视频| 亚洲欧美在线视频观看| 久久精品夜色噜噜亚洲a∨| 在线播放中文一区| 欧美亚洲综合在线| 欧美三日本三级三级在线播放| www.66久久| 在线看一区二区| 欧美日韩高清一区二区三区| 99riav一区二区三区| 精品免费视频一区二区| 国产日韩欧美一区二区三区乱码 | 久久国产婷婷国产香蕉| 美国十次综合导航| 奇米影视在线99精品| 韩国精品在线观看| 成人美女在线视频| 99久久免费国产| 欧美精品久久一区二区三区| 51午夜精品国产| 精品久久国产字幕高潮| 久久久不卡网国产精品二区| 欧美—级在线免费片| 成人免费一区二区三区在线观看| 亚洲一级不卡视频| 免费高清不卡av| 成人激情视频网站| 欧美日韩aaaaaa| 国产精品网站在线| 日韩av电影一区| www.亚洲色图| 精品国产百合女同互慰| 悠悠色在线精品| 精品在线一区二区三区| 一本大道av伊人久久综合| 在线综合+亚洲+欧美中文字幕| 日韩欧美视频一区| 亚洲午夜av在线| 色偷偷久久人人79超碰人人澡 | 欧美一区日韩一区| 亚洲日本乱码在线观看| 男男gaygay亚洲| 欧美三级三级三级爽爽爽| 国产亚洲女人久久久久毛片| 日韩成人伦理电影在线观看| 99这里只有久久精品视频| 久久亚洲二区三区| 精品午夜一区二区三区在线观看| 欧美日韩免费一区二区三区| 精品国产成人在线影院| 热久久国产精品| 日韩精品专区在线| 国产一区二区精品久久99| 久久亚洲精华国产精华液| 日本在线播放一区二区三区| 欧美美女一区二区在线观看| 亚洲一区二区三区四区的| 大白屁股一区二区视频| 欧美一级视频精品观看| 日韩精品久久理论片| 日韩欧美国产一区在线观看| 视频精品一区二区| 亚洲精品在线观| aaa亚洲精品一二三区| 夜夜嗨av一区二区三区中文字幕 | 亚洲一区影音先锋| 欧美日高清视频| 蜜桃视频一区二区| 久久久无码精品亚洲日韩按摩| 国产毛片精品国产一区二区三区| 欧美激情中文不卡| 91成人在线免费观看| 天天综合天天综合色| 久久精品欧美一区二区三区麻豆| 99久久精品免费看国产| 日韩在线一区二区| 国产精品女上位| 欧美丝袜丝交足nylons| 国产一区二区三区免费看| 国产精品福利电影一区二区三区四区| 在线观看av不卡| 成人性生交大片免费看中文| 午夜精品久久久久久久99水蜜桃| 久久久综合精品| 国产成人夜色高潮福利影视| 性做久久久久久| 尤物在线观看一区| 久久久久久黄色| 欧美日韩国产综合一区二区 | 欧美午夜一区二区三区| 狠狠色丁香婷综合久久| 亚洲一区二区五区| 国产农村妇女毛片精品久久麻豆 | 久久久久久久电影| 91精品国产综合久久精品| www.亚洲色图| 国产 日韩 欧美大片| 九九视频精品免费| 久久99精品久久久久久动态图| 亚洲午夜在线观看视频在线| 国产精品亲子伦对白| 精品蜜桃在线看| 精品少妇一区二区三区在线视频 | 色成年激情久久综合| 欧美一级高清片在线观看| 欧美亚洲综合色| 欧美日韩激情一区二区| 91 com成人网| 精品成人在线观看| 久久免费午夜影院| 欧美激情在线观看视频免费| 久久影视一区二区| 国产精品久久网站| 蜜桃精品视频在线观看| 日韩极品在线观看| 蜜桃视频免费观看一区| 国产精品18久久久久久vr | 亚洲精品日日夜夜| 亚洲一区影音先锋| 国产精品主播直播| 色偷偷一区二区三区| 欧美日韩成人综合天天影院| 欧美成人在线直播| 亚洲精品国产一区二区精华液 | 亚洲欧美综合在线精品| 日本欧美一区二区| 在线观看日韩毛片| 国产精品日产欧美久久久久| 午夜影院久久久| 99精品偷自拍| 国产精品热久久久久夜色精品三区| 亚洲成av人在线观看| 99久久99久久久精品齐齐| 久久精品欧美日韩| 精品一区二区三区欧美| 99re视频精品| 中文字幕一区二区三区不卡| 成人激情综合网站| 国产精品久久久久7777按摩| 成人精品视频一区二区三区尤物| 欧美精品一区二区三区在线播放 | 精品亚洲aⅴ乱码一区二区三区| 欧亚洲嫩模精品一区三区| 亚洲视频在线观看一区| 成人国产亚洲欧美成人综合网| 国产女人18毛片水真多成人如厕 | 在线免费观看日韩欧美| 亚洲免费av高清| 色激情天天射综合网| 五月婷婷久久丁香| 日本一区二区三区电影| 成人av综合在线| 亚洲高清免费视频| 91精品国产高清一区二区三区蜜臀 | 在线一区二区视频| 国产一区二区福利| 欧美一级xxx|