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

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

?? system.c

?? 硬件平臺:ARM+WINCE 實現ATA方式驅動CF卡的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
        status = GAW_PRIMARY_FAIL;
        goto gaw_error;
    }

    //
    // Map the command window now. If this fails we can tell the caller to try
    // the secondary ATA I/O port range.
    //
    pATAReg = (PVOID)v_pfnCardMapWindow(
                                    hATAReg,
                                    reg_base + modifier,
                                    ATA_REG_LENGTH,
                                    &v_MemGran);
    if (pATAReg == NULL) {
        //
        // There may be another ATA device in the system. Tell the caller to
        // use the secondary ATA I/O range.
        //
        status = GetLastError();
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardMapWindow(pATAReg) failed %d\r\n"),
            status));
        status = (wtype == ACCESS_MEMORY_ONLY) ?
                                 GAW_MEMORY_FAIL : GAW_PRIMARY_FAIL;
        goto gaw_error;
    }
    DEBUGMSG(ZONE_PCMCIA|ZONE_INIT,
        (TEXT("ATADISK: pATAReg = 0x%x\r\n"), pATAReg));

    WndParms.uWindowSize  = ATA_ALT_REG_LENGTH;
    hATARegAlt = (CARD_WINDOW_HANDLE)v_pfnCardRequestWindow(pDisk->d_hPcmcia, &WndParms);
    if (hATARegAlt == NULL) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardRequestWindow(hATARegAlt) failed %d\r\n"),
            GetLastError()));
        status = (wtype == ACCESS_MEMORY_ONLY) ?
                                 GAW_MEMORY_FAIL : GAW_SECONDARY_FAIL;
        goto gaw_error;
    }

    pATARegAlt = (PVOID)v_pfnCardMapWindow(
                                hATARegAlt,
                                alt_base + modifier,
                                ATA_ALT_REG_LENGTH,
                                &v_MemGran);
    if (pATARegAlt == NULL) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardMapWindow(pATARegAlt) failed %d\r\n"),
            GetLastError()));
        status = (wtype == ACCESS_MEMORY_ONLY) ?
                                 GAW_MEMORY_FAIL : GAW_SECONDARY_FAIL;
        goto gaw_error;
    }

    DEBUGMSG(ZONE_PCMCIA|ZONE_INIT,
        (TEXT("ATADISK: pATARegAlt = 0x%x. v_MemGran = %d\r\n"),
        pATARegAlt, v_MemGran));

    pDisk->d_hATAReg = hATAReg;
    pDisk->d_pATAReg = pATAReg;
    pDisk->d_hATARegAlt = hATARegAlt;
    pDisk->d_pATARegAlt = pATARegAlt;

    if ((wtype == ACCESS_IO_16BIT) || ((wtype == ACCESS_IO_ANY) && !(pDisk->d_Flags & ATADISK_FLAG_TRY8BIT))) {
        pDisk->d_f16Bit = TRUE;
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT, (TEXT("ATADISK: Using 16 bit I/O\r\n")));
    }
    return GAW_SUCCESS;

gaw_error:
    if (hATAReg) {
        v_pfnCardReleaseWindow(hATAReg);
    }
    if (hATARegAlt) {
        v_pfnCardReleaseWindow(hATARegAlt);
    }
    return status;

}   // GetATAWindows


//
// ATAConfig - get required PCMCIA resources
// 1. Ask for status notifications on the socket
// 2. Find which PCMCIA I/O card configuration to use.
// 3. Request and map an I/O window to the ATA registers.
// 4. Request the PCMCIA interrupt
// 5. Request the configuration
//
// Return: CERR_SUCCESS or one of the CERR_* return codes.
//
DWORD
ATAConfig(
    PDISK pDisk
    )
{
    CARD_CONFIG_INFO CfgInfo;
    PARSED_CFTABLE CfTable[10];
    DWORD i,k;
    DWORD nCfg;
    DWORD status;
    DWORD reg_base;
    UCHAR req_vcc;
    BOOL fPowerAC;

    //
    // 1. Ask for status notifications on the socket
    //
    status = v_pfnCardRequestSocketMask(
                pDisk->d_hPcmcia,
                pDisk->d_hSock,
                0xff);  // all events for now
    if (status != CERR_SUCCESS) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardRequestSocketMask failed %d\r\n"), status));
        return status;
    }

    //
    // 2. Choose which configuration to use
    //
    nCfg = sizeof(CfTable)/sizeof(PARSED_CFTABLE);
    status = v_pfnCardGetParsedTuple(
                pDisk->d_hSock,
                CISTPL_CFTABLE_ENTRY,
                CfTable,
                &nCfg);
    if (status) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardGetParsedTuple(CISTPL_CFTABLE_ENTRY) failed %d\r\n"),
            status));
        return status;
    }

    // if info is unavailable, try for performance rather than power-savings
    fPowerAC = TRUE;
    if (v_pfnGetSystemPowerStatusEx != NULL) {
        SYSTEM_POWER_STATUS_EX PowerStatus;

        if (v_pfnGetSystemPowerStatusEx(&PowerStatus, TRUE))
            fPowerAC = (PowerStatus.ACLineStatus == AC_LINE_ONLINE);
    }
    req_vcc = fPowerAC ? 50 : 33;
    reg_base = ATA_IO_REG_BASE;

ac_try_again:
    pDisk->d_f16Bit = FALSE;
    for (i = 0; i < nCfg; i++) {
        DEBUGMSG(ZONE_PCMCIA, (TEXT("ATADISK Cfg[%d] = x%02x: def:%c %d dV  %d ranges\n"),
                               i, CfTable[i].ConfigIndex, CfTable[i].ContainsDefaults?'Y':'N',
                               CfTable[i].VccDescr.NominalV, CfTable[i].NumIOEntries));
        if (((CfTable[i].VccDescr.ValidMask & PWR_DESCR_NOMINALV) &&
             !isVoltageNear(req_vcc, CfTable[i].VccDescr.NominalV)) ||
            CfTable[i].NumIOEntries != 2)
            continue;
        k = CfTable[i].NumIOAddrLines;
        if (k < 16) {
        	k = 15;
        }	
        if (CfTable[i].IOLength[0] >= 7 && CfTable[i].IOLength[1] >= 1) {
            if (GetATAWindows(pDisk, CfTable[i].IOAccess, CfTable[i].IOBase[0],
                CfTable[i].IOBase[1], (k >= 16) ? 0 : (1 << k)) == GAW_SUCCESS)
                goto ac_address_ok;
        } else if (CfTable[i].IOLength[1] >= 7 && CfTable[i].IOLength[0] >= 1) {
            if (GetATAWindows(pDisk, CfTable[i].IOAccess, CfTable[i].IOBase[1],
                CfTable[i].IOBase[0], (k >= 16) ? 0 : (1 << k)) == GAW_SUCCESS)
                goto ac_address_ok;
        }
    }
    // No I/O configurations matched our requested voltage so fall back and try again
    if ((fPowerAC ? 50 : 33) == req_vcc) {
        req_vcc = fPowerAC ? 33 : 50;
        // we assume that any I/O window available at one voltage is supported at both,
        // so the only way to get here is if no windows are supported at the preferred voltage;
        // hence there is no need to reset reg_base.
        goto ac_try_again;
    }

    //
    // Couldn't map a valid I/O address range (perhaps device doesn't support I/O access for this
    // slot). Try a common memory window.
    //
    for (i = 0; i < nCfg; i++) {
        if (CfTable[i].IFacePresent && (CfTable[i].IFaceType == 0)) {  /* Constant defined somewhere? */
            DEBUGMSG(ZONE_PCMCIA, (TEXT("ATADISK: Config 0x%x (Mem) supports "), CfTable[i].ConfigIndex));
            //
            // For now, just use 8 bit access
            //
            DEBUGMSG(ZONE_PCMCIA, (TEXT("8-bit only access\r\n")));
            if (GetATAWindows(pDisk, ACCESS_MEMORY_ONLY, 0, 0, 0) == GAW_SUCCESS) {
                pDisk->d_Flags |= ATADISK_FLAG_MEMORY_MAPPED;
                goto ac_address_ok;
            }
        }
    }

    DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
             (TEXT("ATADISK: Unable to find adequate configuration!\r\n")));
    return CERR_BAD_BASE;

ac_address_ok:
    //
    // 4. Request the PCMCIA interrupt
    //
    status = v_pfnCardRequestIRQ(
                pDisk->d_hPcmcia,
                pDisk->d_hSock,
                (CARD_ISR)PcmciaIntr,
                (DWORD)pDisk);
    if (status != CERR_SUCCESS) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardRequestIRQ failed %d\r\n"), status));
        return status;
    }

    //
    // 5. Request the configuration (this will enable the interrupt)
    //
ac_req_config:
    CfgInfo.hSocket = pDisk->d_hSock;
    CfgInfo.fAttributes = CFG_ATTR_IRQ_STEERING | CFG_ATTR_NO_IO_IS_8 | CFG_ATTR_NO_SUSPEND_UNLOAD;
    CfgInfo.fInterfaceType = CFG_IFACE_MEMORY_IO;
    CfgInfo.uVcc = req_vcc;
    CfgInfo.uVpp1 = 0;
    CfgInfo.uVpp2 = 0;
    CfgInfo.fRegisters = CFG_REGISTER_CONFIG|CFG_REGISTER_STATUS;
    CfgInfo.uConfigReg = CfTable[i].ConfigIndex;
    CfgInfo.uStatusReg = 0;
    
    DEBUGMSG(ZONE_PCMCIA|ZONE_INIT,
             (TEXT("ATADISK: CardRequestConfiguration 0x%x at %d dV\r\n"),
              CfgInfo.uConfigReg, CfgInfo.uVcc));

    status = v_pfnCardRequestConfiguration(
                pDisk->d_hPcmcia,
                &CfgInfo);
    if (status != CERR_SUCCESS) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardRequestConfiguration failed %d\r\n"), status));

        if (status == CERR_BAD_VCC && (fPowerAC ? 50 : 33) == req_vcc) {
            req_vcc = fPowerAC ? 33 : 50;  // try the other known Vcc
            goto ac_req_config;
        }
    }

    return status;
}   // ATAConfig
    

//
// ATAInit:
// 1. Find which socket the disk card is in by looking in the active device key
// 2. Register as a client driver with PCMCIA.DLL.
// 3. Find and set up the PCMCIA I/O card configuration to use.
// 4. Init the disk card
//
// ActivePath is the registry path to our device's active key under
// HKEY_LOCAL_MACHINE\Drivers\Active
//
// Return pointer to new disk structure or NULL.
//
PDISK
ATAInit(
    CARD_SOCKET_HANDLE hSock,
    LPTSTR ActiveKey
    )
{
    DWORD status;
    CARD_REGISTER_PARMS Parms;
    PDISK pDisk=NULL;
    DWORD ValLen;
    HKEY  hKey;

    pDisk = CreateDiskObject();
    if (pDisk == NULL) {
        DEBUGMSG(ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: LocalAlloc(PDISK) failed %d\r\n"), GetLastError()));
        return NULL;
    }

    pDisk->d_hSock = hSock;
    if (pDisk->d_ActivePath = LocalAlloc(LPTR, wcslen(ActiveKey)*sizeof(WCHAR)+sizeof(WCHAR))) {
        wcscpy(pDisk->d_ActivePath, ActiveKey);
    } else {
        pDisk->d_ActivePath = NULL;
        goto ai_fail;
    }    

    //
    // Register callback function with PCMCIA driver
    //
    DEBUGMSG(ZONE_PCMCIA|ZONE_INIT,
        (TEXT("ATADISK: Attempting to register with PCMCIA.DLL\r\n")));

    Parms.fEventMask =  EVENT_MASK_CARD_DETECT | EVENT_MASK_POWER_MGMT;
    Parms.uClientData = (UINT32)pDisk;

    Parms.fAttributes = CLIENT_ATTR_IO_DRIVER | CLIENT_ATTR_NOTIFY_SHARED |
                        CLIENT_ATTR_NOTIFY_EXCLUSIVE;
    pDisk->d_hPcmcia = (CARD_CLIENT_HANDLE)v_pfnCardRegisterClient(PcmciaCallBack,&Parms);
    if (pDisk->d_hPcmcia == 0) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: CardRegisterClient failed %d\r\n"), GetLastError()));
        goto ai_fail;
    }

    ValLen = sizeof(DWORD);
    hKey = OpenDriverKey( ActiveKey);
    if (hKey) {
        if (ERROR_SUCCESS != RegQueryValueEx(hKey, L"Settings", NULL, NULL, (PUCHAR)&pDisk->d_Flags, &ValLen)) {
            pDisk->d_Flags = 0;
        } else {
            DEBUGMSG( ZONE_INIT, (L"ATADISK: Settings = %08X\r\n", pDisk->d_Flags));
        }
        RegCloseKey( hKey);
    }    


    //
    // ATAConfig figures out which configuration to use and maps an I/O window
    // and does all the other PCMCIA specific setup.
    //
    status = ATAConfig(pDisk);
    if (status != CERR_SUCCESS) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: ATAConfig failed %d\r\n"), status));
        goto ai_fail;
    }

    //
    // InitDisk 
    //
    
    status = InitDisk(pDisk, ActiveKey);
    if (status) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_INIT|ZONE_ERROR,
            (TEXT("ATADISK: InitDisk failed %d\r\n"), status));
        goto ai_fail;
    }

    return pDisk;


ai_fail:
    if (pDisk) {
        if (pDisk->d_ActivePath) {
            LocalFree( pDisk->d_ActivePath);
            pDisk->d_ActivePath = NULL;
        }    
        CloseDisk(pDisk);
    }    
    return NULL;
}   // ATAInit


//
// Function to retrieve the pcmcia socket handle from the device's active key
//
DWORD
ATAGetSocket(
    LPTSTR ActivePath,
    CARD_SOCKET_HANDLE * pSock
    )
{
    DWORD ValType;
    DWORD ValLen;
    HKEY hDiskCardKey;
    DWORD status;

    //
    // Get CARD_SOCKET_HANDLE from active device registry key
    //
    status = RegOpenKeyEx(
                HKEY_LOCAL_MACHINE,
                ActivePath,
                0,
                0,
                &hDiskCardKey);
    if (status) {
        DEBUGMSG(ZONE_INIT|ZONE_ERROR,
                 (TEXT("ATADISK:ATAGetSocket RegOpenKeyEx(HLM\\%s) returned %d!!!\r\n"),
                  ActivePath, status));
        return status;
    }

    ValLen = sizeof(CARD_SOCKET_HANDLE);
    status = RegQueryValueEx(
                hDiskCardKey,
                DEVLOAD_SOCKET_VALNAME,
                NULL,
                &ValType,
                (PUCHAR)pSock,
                &ValLen);
    if (status != ERROR_SUCCESS) {
        DEBUGMSG(ZONE_INIT|ZONE_ERROR,
                 (TEXT("ATADISK:ATAGetSocket - RegQueryValueEx(%s) returned %d\r\n"),
                  DEVLOAD_SOCKET_VALNAME, status));
    }
    RegCloseKey(hDiskCardKey);
    return status;
}   // ATAGetSocket


//
// Function to detect an ATA device.  This detection relies on the fact that
// device.exe has already determined there is a disk device in this socket by
// looking at the CISTPL_FUNCID tuple.  This function will look at the CISTPL_FUNCE
// tuples to see if it is an ATA device.
//
// Return TRUE if there is an ATA device in the specified socket; FALSE if not.
BOOL
ATADetect(
    CARD_SOCKET_HANDLE hSock
    )
{
    DWORD status;
    UCHAR buf[sizeof(CARD_DATA_PARMS) + 256];
    PCARD_TUPLE_PARMS pParms;
    PCARD_DATA_PARMS  pTuple;
    PUCHAR pData;

    //
    // A type 1 CISTPL_FUNCE will tell if it is an ATA device.
    //
    pParms = (PCARD_TUPLE_PARMS)buf;
    pParms->hSocket = hSock;
    pParms->uDesiredTuple = CISTPL_FUNCE;
    pParms->fAttributes = 0;
    status = v_pfnCardGetFirstTuple(pParms);
    if (status != CERR_SUCCESS) {
        DEBUGMSG(ZONE_PCMCIA|ZONE_ERROR,
            (TEXT("ATADISK:CardGetFirstTuple returned %d\r\n"), status));
        return FALSE;
    }

    while (status == CERR_SUCCESS) {
        pTuple = (PCARD_DATA_PARMS)buf;
        pTuple->uBufLen = sizeof(buf) - sizeof(CARD_DATA_PARMS);
        pTuple->uTupleOffset = 0;
        status = v_pfnCardGetTupleData(pTuple);
        if (status != CERR_SUCCESS) {
            DEBUGMSG(ZONE_PCMCIA|ZONE_ERROR,
                (TEXT("DEVLOAD: CardGetTupleData returned %d\r\n"), status));
            return FALSE;
        }

        pData = buf + sizeof(CARD_DATA_PARMS);
        //
        // If the CISTPL_FUNCE is type 1 and its data is 1, then it is an ATA device
        //
        if ((pData[0] == 1) && (pData[1] == 1)) {
            return TRUE;
        }

        status = v_pfnCardGetNextTuple(pParms);
    }   // while

    return FALSE;
}   // ATADetect

//
// Detection modules entrypoint.  Device.exe will call here to give this
// driver a chance to detect a newly inserted card.
//
// Return NULL if undetected or device key name of driver to load.
//
LPTSTR
DetectATADisk(
    CARD_SOCKET_HANDLE hSock,
    UCHAR DevType,
    LPTSTR DevKey,
    DWORD  DevKeyLen
    )
{
    if (DevType == PCCARD_TYPE_FIXED_DISK) {
        if (ATADetect(hSock) == TRUE) {
            _tcscpy(DevKey, TEXT("ATADisk"));
            return DevKey;
        }
    }
    return NULL;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚区不卡日本| 午夜影院久久久| 一区二区三区四区不卡在线 | 亚洲精品成人少妇| 蜜臀av亚洲一区中文字幕| www.亚洲精品| 日韩免费看的电影| 一区二区三区久久久| 国产mv日韩mv欧美| 337p亚洲精品色噜噜狠狠| 中文字幕在线观看不卡| 久久国产精品色| 欧美在线一区二区| 国产精品高清亚洲| 国产一区不卡精品| 欧美大胆一级视频| 免费观看成人av| 欧美日韩情趣电影| 91在线看国产| 国内精品视频一区二区三区八戒| 国产精品素人一区二区| 最新高清无码专区| 亚洲精品美国一| 日韩欧美另类在线| 国产不卡视频在线观看| 亚洲一区在线视频观看| 日韩精品一区二区三区在线观看| 风间由美一区二区av101| 一级特黄大欧美久久久| 欧美www视频| 91丨九色丨蝌蚪富婆spa| 日韩中文字幕91| 国产精品免费观看视频| 宅男噜噜噜66一区二区66| 国产福利91精品一区| 亚洲第一成人在线| 国产精品美女久久久久aⅴ| 欧美精品在线视频| www.久久精品| 美腿丝袜一区二区三区| 亚洲免费在线看| 久久亚洲一级片| 欧美日韩亚洲综合在线 | 久久亚洲一级片| 欧美视频一区二区三区四区| 国产精品影音先锋| 午夜在线成人av| 亚洲日本青草视频在线怡红院| 日韩欧美成人午夜| 色综合天天在线| 成人午夜精品在线| 精品在线一区二区三区| 亚洲成人资源网| 亚洲另类色综合网站| 精品国产91亚洲一区二区三区婷婷| 色诱亚洲精品久久久久久| 国产91丝袜在线观看| 美女久久久精品| 日韩电影免费在线观看网站| 一区二区三区.www| 国产精品美女久久久久aⅴ| 欧美精品一区二区在线观看| 在线综合视频播放| 欧美日韩一区二区三区在线| 91久久国产综合久久| 91丨porny丨最新| 国产91清纯白嫩初高中在线观看 | 国产日产欧美一区| 欧美成人精品高清在线播放| 欧美日韩精品欧美日韩精品| 日本黄色一区二区| 色94色欧美sute亚洲13| 91日韩一区二区三区| av在线一区二区| www.欧美亚洲| 99久久伊人精品| av电影在线观看完整版一区二区| 成人看片黄a免费看在线| 国产美女一区二区三区| 国产乱码精品一区二区三区忘忧草 | 色哟哟精品一区| 91小视频免费看| av一本久道久久综合久久鬼色| fc2成人免费人成在线观看播放 | 久久国产精品72免费观看| 麻豆国产精品官网| 国产专区综合网| 国产成人久久精品77777最新版本| 国产寡妇亲子伦一区二区| 国产精品一卡二卡在线观看| 国产成人在线色| 白白色 亚洲乱淫| 欧洲精品一区二区三区在线观看| 在线观看www91| 欧美一区二区三区日韩视频| 欧美一区二区三区免费在线看| 欧美一区二区三区在线观看| 久久亚洲精品国产精品紫薇| 国产亚洲va综合人人澡精品| 国产精品久久精品日日| 亚洲欧美日韩中文播放| 亚洲国产精品麻豆| 免费在线看一区| 国产成人欧美日韩在线电影| 91亚洲大成网污www| 91精品麻豆日日躁夜夜躁| 精品电影一区二区| 亚洲欧美另类久久久精品2019| 视频一区二区三区中文字幕| 国产一区二区美女诱惑| 91在线视频官网| 欧美成人精品1314www| 自拍偷拍国产亚洲| 日韩精品电影一区亚洲| 国产suv精品一区二区6| 欧美日韩成人综合天天影院| 精品国产麻豆免费人成网站| 亚洲色欲色欲www| 裸体在线国模精品偷拍| 99久久免费视频.com| 日韩视频国产视频| 亚洲日本一区二区三区| 激情欧美日韩一区二区| 一本久道中文字幕精品亚洲嫩 | 3atv在线一区二区三区| 亚洲欧美日韩一区二区| 亚洲免费高清视频在线| 欧美国产视频在线| 亚洲国产三级在线| 国产综合成人久久大片91| eeuss鲁片一区二区三区| 色综合天天综合网国产成人综合天| 不卡的av电影在线观看| 波多野结衣视频一区| 91福利精品第一导航| 91精品国产麻豆| 国产精品久久三| 亚洲第一在线综合网站| 波多野结衣视频一区| 7777精品伊人久久久大香线蕉的 | 欧美日韩国产三级| 精品三级av在线| 中文av一区二区| 国产一区二区伦理| 在线免费亚洲电影| 久久伊人中文字幕| 一区二区三区日韩欧美| 国产电影精品久久禁18| 欧美久久一二区| 国产精品毛片高清在线完整版| 日韩经典一区二区| 狠狠色丁香婷婷综合| 欧美一区二区国产| 亚洲美女淫视频| 国产盗摄一区二区三区| 51精品秘密在线观看| 欧美国产视频在线| 午夜激情一区二区| 99国产精品国产精品毛片| 日韩精品一区二区三区老鸭窝| 国产精品成人午夜| 国产一区二区三区不卡在线观看| 91福利视频在线| 国产精品久久久久久妇女6080 | 97久久久精品综合88久久| 日韩免费一区二区| 亚洲成av人片一区二区梦乃| 欧美日韩精品免费| 一区二区在线观看视频| 成人午夜精品一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 视频一区二区三区在线| 欧美亚洲自拍偷拍| 亚洲精品少妇30p| 99久久精品免费| 亚洲人成伊人成综合网小说| 国产mv日韩mv欧美| 久久精品一区二区三区不卡| 老司机精品视频在线| 欧美视频一区在线| 亚洲综合一二三区| 欧美亚洲精品一区| 亚洲一区二区三区四区五区中文| av电影一区二区| 亚洲自拍欧美精品| 欧美自拍丝袜亚洲| 亚洲狠狠爱一区二区三区| 欧美在线观看一区二区| 亚洲一级电影视频| 欧美精品自拍偷拍| 轻轻草成人在线| 欧美一区二区三级| 久久狠狠亚洲综合| 精品国产三级a在线观看| 久久精品二区亚洲w码| 国产亚洲美州欧州综合国| 国产成人丝袜美腿| 中文字幕第一区综合| 国产精品一区二区不卡| 亚洲色图清纯唯美|