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

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

?? system.c

?? 硬件平臺:ARM+WINCE 實現ATA方式驅動CF卡的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
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:  

    system.c

Abstract:  

    WINCE driver for PCMCIA ATA Disk cards

Functions:

Notes:


--*/
#include <windows.h>
#include <windev.h>
#include <types.h>
#include <tchar.h>
#include <cardserv.h>
#include <cardapi.h>
#include <tuple.h>
#include <devload.h>
#include <atapi.h>
#include <diskio.h>
#include <atadisk.h>
#include <storemgr.h>
#include <pm.h>

//
// This module contains the necessary OS interface functions:
//  InitPcmciaDll
//  ATADiskEntry
//  CreateDiskObject
//  IsValidDisk
//  DiskFromSocket
//  GetDiskStateError
//  InitFSD
//  DSK_Init and the other device API functions
//  IsCardInserted
//  PcmciaCallBack
//  GetATAWindows
//  ATAConfig
//  ATAInit
//  ATAGetSocket
//  ATADetect
//  DetectATADisk
//

#ifdef DEBUG
//
// These defines must match the ZONE_* defines
//
#define DBG_ERROR      1
#define DBG_WARNING    2
#define DBG_FUNCTION   4
#define DBG_INIT       8
#define DBG_PCMCIA     16
#define DBG_IO         32

DBGPARAM dpCurSettings = {
    TEXT("ATA Disk"), {
    TEXT("Errors"),TEXT("Warnings"),TEXT("Functions"),TEXT("Initialization"),
    TEXT("PCMCIA"),TEXT("Disk I/O"),TEXT("Undefined"),TEXT("Undefined"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined") },
    DBG_INIT
};
#endif  // DEBUG

PDISK ATAInit(CARD_SOCKET_HANDLE hSock, LPTSTR ActivePath);
DWORD ATAGetSocket(LPTSTR ActivePath, CARD_SOCKET_HANDLE * pSock);
BOOL ATADetect(CARD_SOCKET_HANDLE hSock);
BOOL GetFolderName(PDISK pDisk, LPWSTR pOutBuf, DWORD nOutBufSize, DWORD * pBytesReturned);
BOOL GetStorageID(PDISK pDisk, PSTORAGE_IDENTIFICATION pOutBuf, DWORD nOutBufSize, DWORD * pBytesReturned);
HKEY OpenDriverKey(LPTSTR ActiveKey);


//
// Global Variables
//
DWORD v_MemGran;                    // memory granularity from CardMapMemory (usually 1)
CRITICAL_SECTION v_DiskCrit;
PDISK v_DiskList;                   // initialized to 0 in bss

HMODULE v_hPcmciaDll;
REGISTERCLIENT      v_pfnCardRegisterClient;
DEREGISTERCLIENT    v_pfnCardDeregisterClient;
GETFIRSTTUPLE       v_pfnCardGetFirstTuple;
GETNEXTTUPLE        v_pfnCardGetNextTuple;
GETTUPLEDATA        v_pfnCardGetTupleData;
GETPARSEDTUPLE      v_pfnCardGetParsedTuple;
REQUESTWINDOW       v_pfnCardRequestWindow;
RELEASEWINDOW       v_pfnCardReleaseWindow;
MAPWINDOW           v_pfnCardMapWindow;
REQUESTCONFIG       v_pfnCardRequestConfiguration;
RELEASECONFIG       v_pfnCardReleaseConfiguration;
REQUESTIRQ          v_pfnCardRequestIRQ;
RELEASEIRQ          v_pfnCardReleaseIRQ;
REQUESTSOCKETMASK   v_pfnCardRequestSocketMask;
RELEASESOCKETMASK   v_pfnCardReleaseSocketMask;
GETSTATUS           v_pfnCardGetStatus;

typedef BOOL (WINAPI *GETSYSPOWER)(PSYSTEM_POWER_STATUS_EX pSystemPowerStatusEx, BOOL fUpdate);
GETSYSPOWER v_pfnGetSystemPowerStatusEx = NULL;

//
// InitPcmciaDll - LoadLibrary(PCMCIA.DLL) and GetProcAddress necessary entrypoints
//
BOOL
InitPcmciaDll(VOID)
{
    HMODULE hCoreDll;
    
    hCoreDll = (HMODULE)LoadLibrary(TEXT("COREDLL.DLL"));
    if (hCoreDll != NULL) {
        v_pfnGetSystemPowerStatusEx = (GETSYSPOWER)GetProcAddress(hCoreDll, TEXT("GetSystemPowerStatusEx"));
        FreeLibrary(hCoreDll);
    }

    v_hPcmciaDll = LoadLibrary(TEXT("PCMCIA.DLL"));
    if (v_hPcmciaDll) {
        v_pfnCardRegisterClient =       (REGISTERCLIENT)GetProcAddress(v_hPcmciaDll, TEXT("CardRegisterClient"));
        v_pfnCardDeregisterClient =     (DEREGISTERCLIENT)GetProcAddress(v_hPcmciaDll, TEXT("CardDeregisterClient"));
        v_pfnCardGetFirstTuple =        (GETFIRSTTUPLE)GetProcAddress(v_hPcmciaDll, TEXT("CardGetFirstTuple"));
        v_pfnCardGetNextTuple =         (GETNEXTTUPLE)GetProcAddress(v_hPcmciaDll, TEXT("CardGetNextTuple"));
        v_pfnCardGetTupleData =         (GETTUPLEDATA)GetProcAddress(v_hPcmciaDll, TEXT("CardGetTupleData"));
        v_pfnCardGetParsedTuple =       (GETPARSEDTUPLE)GetProcAddress(v_hPcmciaDll, TEXT("CardGetParsedTuple"));
        v_pfnCardRequestWindow =        (REQUESTWINDOW)GetProcAddress(v_hPcmciaDll, TEXT("CardRequestWindow"));
        v_pfnCardReleaseWindow =        (RELEASEWINDOW)GetProcAddress(v_hPcmciaDll, TEXT("CardReleaseWindow"));
        v_pfnCardMapWindow =            (MAPWINDOW)GetProcAddress(v_hPcmciaDll, TEXT("CardMapWindow"));
        v_pfnCardRequestConfiguration = (REQUESTCONFIG)GetProcAddress(v_hPcmciaDll, TEXT("CardRequestConfiguration"));
        v_pfnCardReleaseConfiguration = (RELEASECONFIG)GetProcAddress(v_hPcmciaDll, TEXT("CardReleaseConfiguration"));
        v_pfnCardRequestIRQ =           (REQUESTIRQ)GetProcAddress(v_hPcmciaDll, TEXT("CardRequestIRQ"));
        v_pfnCardReleaseIRQ =           (RELEASEIRQ)GetProcAddress(v_hPcmciaDll, TEXT("CardReleaseIRQ"));
        v_pfnCardRequestSocketMask =    (REQUESTSOCKETMASK)GetProcAddress(v_hPcmciaDll, TEXT("CardRequestSocketMask"));
        v_pfnCardReleaseSocketMask =    (RELEASESOCKETMASK)GetProcAddress(v_hPcmciaDll, TEXT("CardReleaseSocketMask"));
        v_pfnCardGetStatus =            (GETSTATUS)GetProcAddress(v_hPcmciaDll, TEXT("CardGetStatus"));
    }
    if ((v_hPcmciaDll == NULL) ||
        (v_pfnCardRegisterClient == NULL) ||
        (v_pfnCardDeregisterClient == NULL) ||
        (v_pfnCardGetFirstTuple == NULL) ||
        (v_pfnCardGetNextTuple == NULL) ||
        (v_pfnCardGetTupleData == NULL) ||
        (v_pfnCardGetParsedTuple == NULL) ||
        (v_pfnCardRequestWindow == NULL) ||
        (v_pfnCardReleaseWindow == NULL) ||
        (v_pfnCardMapWindow == NULL) ||
        (v_pfnCardRequestConfiguration == NULL) ||
        (v_pfnCardReleaseConfiguration == NULL) ||
        (v_pfnCardRequestIRQ == NULL) ||
        (v_pfnCardReleaseIRQ == NULL) ||
        (v_pfnCardRequestSocketMask == NULL) ||
        (v_pfnCardReleaseSocketMask == NULL) ||
        (v_pfnCardGetStatus == NULL)) {
        DEBUGMSG(ZONE_INIT, (TEXT("ATADISK: InitPcmciaDll() failed!\r\n")));
        return FALSE;
    }
    return TRUE;
}   // InitPcmciaDll

//
// ATADISK.DLL entry
//
BOOL WINAPI
DllMain(HINSTANCE DllInstance, DWORD Reason, LPVOID Reserved)
{
    switch(Reason) {
    case DLL_PROCESS_ATTACH:
        DEBUGREGISTER(DllInstance);
        DEBUGMSG(ZONE_INIT, (TEXT("ATADISK: DLL_PROCESS_ATTACH\r\n")));
    DisableThreadLibraryCalls((HMODULE) DllInstance);
        InitializeCriticalSection(&v_DiskCrit);
        return InitPcmciaDll();

    case DLL_PROCESS_DETACH:
        DEBUGMSG(ZONE_INIT, (TEXT("ATADISK: DLL_PROCESS_DETACH\r\n")));
        FreeLibrary(v_hPcmciaDll);
        DeleteCriticalSection(&v_DiskCrit);
        break;
    }
    return TRUE;
}   // ATADiskEntry


//
// CreateDiskObject - create a DISK structure, init some fields and link it.
//
PDISK
CreateDiskObject(VOID)
{
    PDISK pDisk;

    pDisk = LocalAlloc(LPTR, sizeof(DISK));
    if (pDisk != NULL) {
        pDisk->d_OpenCount = 0;
        pDisk->d_ActivePath = NULL;
        pDisk->d_Flags = 0;
        InitializeCriticalSection(&(pDisk->d_DiskCardCrit));
        pDisk->d_IRQEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
        pDisk->hPwrEvent= CreateEvent(NULL, TRUE, TRUE, NULL);
        pDisk->lPwrOff = 0;
        if (pDisk->d_IRQEvent == NULL) {
            DEBUGMSG(ZONE_INIT|ZONE_ERROR, (TEXT("ATADISK: CreateEvent failed\r\n")));
            CloseHandle(pDisk->d_IRQEvent);
            LocalFree(pDisk);
            pDisk = NULL;
        } else {
            EnterCriticalSection(&v_DiskCrit);
            pDisk->d_next = v_DiskList;
            v_DiskList = pDisk;
            LeaveCriticalSection(&v_DiskCrit);
        }
    }
    return pDisk;
}   // CreateDiskObject


//
// IsValidDisk - verify that pDisk points to something in our list
//
// Return TRUE if pDisk is valid, FALSE if not.
//
BOOL
IsValidDisk(
    PDISK pDisk
    )
{
    PDISK pd;
    BOOL ret = FALSE;

    EnterCriticalSection(&v_DiskCrit);
    pd = v_DiskList;
    while (pd) {
        if (pd == pDisk) {
            ret = TRUE;
            break;
        }
        pd = pd->d_next;
    }
    LeaveCriticalSection(&v_DiskCrit);
    return ret;
}   // IsValidDisk


//
// DiskFromSocket - return the address of the DISK structure for the specified
//                  socket or NULL if there is not disk in that socket.
//
PDISK
DiskFromSocket(
    CARD_SOCKET_HANDLE hSock
    )
{
    PDISK pd;

    EnterCriticalSection(&v_DiskCrit);
    pd = v_DiskList;
    while (pd) {
        if ((pd->d_hSock.uSocket   == hSock.uSocket  ) &&
            (pd->d_hSock.uFunction == hSock.uFunction)) {
            break;
        }
        pd = pd->d_next;
    }
    LeaveCriticalSection(&v_DiskCrit);
    return pd;
}   // DiskFromSocket



//
// InitFSD - Load and initialize the file system associated with this device
//
// Return TRUE for success
//
BOOL
InitFSD(
   PPOST_INIT_BUF pInBuf
   )
{
    DWORD ValType;
    DWORD ValLen;
    DWORD status;
    TCHAR FSDll[256];

    if (IsStorageManagerRunning()) {
        DEBUGMSG( ZONE_INIT, (TEXT("Not loading FSD since StorageManager is active\r\n")));
    } else {
        DEBUGMSG(ZONE_INIT, (TEXT("ATADISK:InitFSD entered\r\n")));
        ValLen = sizeof(FSDll);
        status = RegQueryValueEx(    // get the file system driver dll name
                    pInBuf->p_hDeviceKey,
                    TEXT("FSD"),
                    NULL,
                    &ValType,
                    (PUCHAR)FSDll,
                    &ValLen);
        if (status != ERROR_SUCCESS) {
            DEBUGMSG(ZONE_INIT|ZONE_ERROR,
                (TEXT("ATADISK:InitFSD - RegQueryValueEx(FS) returned %d\r\n"),
                status));
            return FALSE;
        }

        DEBUGMSG(ZONE_INIT, (TEXT("ATADISK:InitFSD calling LoadFSD(0x%x, %s)\r\n"),
            pInBuf->p_hDevice, FSDll));
        return LoadFSD(pInBuf->p_hDevice, FSDll);
    }
    return TRUE;
}    // InitFSD



BOOL GetDeviceInfo(PDISK pDisk, PSTORAGEDEVICEINFO psdi)
{
    HKEY DriverKey;
    DWORD ValType;
    DWORD status;
    DWORD dwSize;

    DriverKey = OpenDriverKey(pDisk->d_ActivePath);
    if (DriverKey) {
        dwSize = sizeof(psdi->szProfile);
        status = RegQueryValueEx(
                    DriverKey,
                    TEXT("Profile"),
                    NULL,
                    &ValType,
                    (LPBYTE)psdi->szProfile,
                    &dwSize);
        if ((status != ERROR_SUCCESS) || (dwSize > sizeof(psdi->szProfile))){
            DEBUGMSG(ZONE_INIT|ZONE_ERROR,
                (TEXT("ATADISK:GetFolderName - RegQueryValueEx(Profile) returned %d\r\n"),
                      status));
            wcscpy( psdi->szProfile, L"Default");
        } else {
            DEBUGMSG(ZONE_INIT|ZONE_ERROR,
                (TEXT("ATADISK:GetProfileName - Profile = %s, length = %d\r\n"),
                 psdi->szProfile, dwSize));
        }
        RegCloseKey(DriverKey);
    }

    
    psdi->dwDeviceClass = STORAGE_DEVICE_CLASS_BLOCK;
    psdi->dwDeviceType = STORAGE_DEVICE_TYPE_PCCARD;
    psdi->dwDeviceType |= STORAGE_DEVICE_TYPE_ATA;
    psdi->dwDeviceType |= STORAGE_DEVICE_TYPE_REMOVABLE_DRIVE;
    psdi->dwDeviceFlags = STORAGE_DEVICE_FLAG_READWRITE;
    return TRUE;
}
//
// File system device entrypoints (DSK_????)
//

//
// Returns context data (PDISK) for this Init instance or 0 for failure.
//
// Arguments:
//      dwContext - registry path for this device's active key
//
DWORD
DSK_Init(
    DWORD dwContext
    )
{
    DWORD ret;
    CARD_SOCKET_HANDLE hSock;
    LPTSTR ActiveKey = (LPTSTR)dwContext;

    DEBUGMSG(ZONE_INIT,
        (TEXT("ATADISK: DSK_Init\r\n")));

    //
    // Get the socket number from the device's active key.
    //
    ret = ATAGetSocket(ActiveKey, &hSock);
    if (ret) {
        DEBUGMSG(ZONE_INIT,
            (TEXT("ATADISK:DSK_Init ATAGetSocket failed %d\r\n"),
            ret));
        return 0;
    }

    if (ATADetect(hSock) == TRUE) {
        return (DWORD)ATAInit(hSock, ActiveKey);
    } else {
        DEBUGMSG(ZONE_INIT,
            (TEXT("ATADISK:DSK_Init Non-ATA device inserted\r\n")));
        return 0;
    }
}   // DSK_Init


BOOL
DSK_Close(
    DWORD Handle
    )
{
    BOOL bClose = TRUE;
    PDISK pDisk = (PDISK)Handle;

    DEBUGMSG(ZONE_IO, (TEXT("ATADISK: DSK_Close\r\n")));

    if (!IsValidDisk(pDisk)) {
        return FALSE;
    }

    EnterCriticalSection(&(pDisk->d_DiskCardCrit));
    pDisk->d_OpenCount--;
    if (pDisk->d_OpenCount != 0) {
        bClose = FALSE;
    }
    LeaveCriticalSection(&(pDisk->d_DiskCardCrit));
    if (bClose == TRUE) {
        SetEvent(pDisk->d_IRQEvent);
    }
    return TRUE;
}   // DSK_Close


//
// Device deinit - devices are expected to close down.
// The device manager does not check the return code.
//
BOOL
DSK_Deinit(
    DWORD dwContext     // pointer to the per disk structure
    )
{
    PDISK pDisk = (PDISK)dwContext;

    DEBUGMSG(ZONE_INIT, (TEXT("ATADISK: DSK_Deinit\r\n")));

    DSK_Close(dwContext);
    CloseDisk(pDisk);
    return TRUE;
}   // DSK_Deinit

//
// Returns handle value for the open instance.
//
DWORD
DSK_Open(
    DWORD dwData,
    DWORD dwAccess,
    DWORD dwShareMode
    )
{
    PDISK pDisk = (PDISK)dwData;
    DWORD ret = 0;


    DEBUGMSG(ZONE_IO, (TEXT("ATADISK: DSK_Open(0x%x)\r\n"),dwData));

    if (IsValidDisk(pDisk) == FALSE) {
        DEBUGMSG(ZONE_IO, (TEXT("ATADISK: DSK_Open - Passed invalid disk handle\r\n")));
        return ret;
    }

    EnterCriticalSection(&(pDisk->d_DiskCardCrit));
    ret = (DWORD)pDisk;
    pDisk->d_OpenCount++;
    LeaveCriticalSection(&(pDisk->d_DiskCardCrit));

    return ret;
}   // DSK_Open

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波波电影院一区二区三区| 日韩理论片在线| 欧美精品日日鲁夜夜添| 欧美情侣在线播放| 日韩精品中文字幕一区二区三区| 日韩欧美国产一区二区在线播放 | 欧美亚洲国产一区二区三区va| 91视视频在线观看入口直接观看www| 99久久免费视频.com| 91美女片黄在线观看| 99久久精品国产一区二区三区| 99国内精品久久| 51精品国自产在线| 国产蜜臀av在线一区二区三区| 国产精品久久久一本精品| 亚洲一区二区精品视频| 国产福利一区二区三区视频在线| 欧美伊人久久大香线蕉综合69 | 一区二区三区日韩欧美| 久久黄色级2电影| av一区二区三区四区| 精品国产乱码久久久久久闺蜜| 亚洲夂夂婷婷色拍ww47| 99riav一区二区三区| 亚洲精品一区二区在线观看| 午夜精品视频在线观看| 色就色 综合激情| 亚洲国产精品传媒在线观看| 麻豆91小视频| 欧美日韩亚洲不卡| 日本美女一区二区三区视频| 国产精品一区二区久激情瑜伽| 日韩欧美视频一区| 久久精品噜噜噜成人av农村| 欧美中文字幕一区二区三区 | 久88久久88久久久| 欧美一二三四区在线| 视频一区视频二区中文| 欧美日本一区二区三区| 午夜视频久久久久久| 欧美亚洲国产怡红院影院| 日韩av在线免费观看不卡| 欧美午夜精品久久久久久超碰 | 成人国产一区二区三区精品| 久久久噜噜噜久噜久久综合| 国产精品亚洲视频| 亚洲色欲色欲www| 日韩欧美亚洲国产另类| 美洲天堂一区二卡三卡四卡视频| 欧美xingq一区二区| 丁香五精品蜜臀久久久久99网站| 中文字幕一区二区日韩精品绯色| 色综合色综合色综合| 男人的j进女人的j一区| 国产精品福利在线播放| 3d成人动漫网站| 丁香六月综合激情| 亚洲成人一区在线| 亚洲欧洲av一区二区三区久久| 欧美另类高清zo欧美| 成人av中文字幕| 激情欧美一区二区三区在线观看| 亚洲欧洲无码一区二区三区| 91精品国产91久久综合桃花 | 国产亚洲精品aa午夜观看| 日本黄色一区二区| 国产麻豆视频精品| 免费成人在线影院| 一区二区高清免费观看影视大全| 精品国产乱码久久久久久免费| 欧美在线观看一区二区| 成人激情视频网站| 狠狠色丁香婷婷综合| 日韩二区三区在线观看| 性做久久久久久| 亚洲一区二区三区四区在线免费观看 | 91精品国产色综合久久| 欧美在线一二三四区| 91在线观看视频| 菠萝蜜视频在线观看一区| 成人伦理片在线| caoporm超碰国产精品| heyzo一本久久综合| av福利精品导航| 日本韩国精品在线| 欧美日本一区二区三区| 欧美一区二区三区免费| 日韩一区二区三区精品视频| 26uuu精品一区二区| 久久久电影一区二区三区| 久久久久久久久岛国免费| 欧美激情一区二区三区全黄| 国产农村妇女精品| 亚洲图片欧美一区| 国产在线播放一区三区四| 成人高清视频免费观看| 欧美日韩国产综合久久| 久久久久久97三级| 18成人在线视频| 免费在线一区观看| 91在线你懂得| 精品少妇一区二区三区在线播放| 国产精品久久夜| 日韩电影免费在线看| 99综合影院在线| xvideos.蜜桃一区二区| 午夜电影一区二区| 成人福利电影精品一区二区在线观看| 欧美日韩精品免费| 国产精品午夜在线| 韩日av一区二区| 在线不卡的av| 日韩精品一级二级 | 亚洲三级在线免费观看| 精品伊人久久久久7777人| 在线观看免费一区| 亚洲欧美在线视频| 成人av先锋影音| 国产欧美一区二区精品性色超碰 | 欧美日韩和欧美的一区二区| 亚洲人成亚洲人成在线观看图片| 精品一区二区三区在线观看国产| 日本一区二区三区四区| 国产在线精品一区二区夜色| 91麻豆精品国产自产在线| 调教+趴+乳夹+国产+精品| www.欧美日韩| 日韩伦理电影网| 欧美日韩国产精品自在自线| 一个色妞综合视频在线观看| 91丨九色丨蝌蚪丨老版| 亚洲一区二区欧美| 欧美老肥妇做.爰bbww视频| 美国三级日本三级久久99| 日韩视频在线一区二区| 精品一区二区三区在线观看| 国产日韩精品一区二区三区| 国产成人精品一区二区三区四区| 国产精品的网站| 欧美精品视频www在线观看| 免费av网站大全久久| 久久久精品免费免费| 色88888久久久久久影院野外| 日本少妇一区二区| 国产精品情趣视频| 欧美日本一区二区三区四区| 国产成人午夜片在线观看高清观看| 亚洲精品视频在线观看免费| 日韩视频永久免费| 91丨九色丨蝌蚪富婆spa| 国产真实乱子伦精品视频| 亚洲精品福利视频网站| 国产欧美一区二区三区在线看蜜臀 | 精品剧情在线观看| 成人aa视频在线观看| 日日摸夜夜添夜夜添国产精品| 久久久国产综合精品女国产盗摄| 国产精选一区二区三区| 亚洲精品美国一| 国产午夜精品一区二区三区四区| 色综合久久久久久久久| 麻豆精品在线播放| 亚洲精品伦理在线| 国产精品三级av| 精品少妇一区二区三区视频免付费| 97久久精品人人做人人爽| 国内外成人在线| 日韩精品成人一区二区三区| 中文字幕一区二区三区在线观看| 欧美一区二区三区人| 91传媒视频在线播放| 成人免费观看视频| 成人sese在线| 成人18视频在线播放| 日韩中文字幕1| 一区二区三区在线视频观看| 成人欧美一区二区三区在线播放| 亚洲国产精品精华液2区45| 久久久久久久久免费| 国产午夜精品理论片a级大结局| 日韩精品中文字幕一区| 精品欧美黑人一区二区三区| 精品少妇一区二区三区| 欧美一激情一区二区三区| 精品国产自在久精品国产| 久久免费午夜影院| 中文字幕欧美日韩一区| 综合电影一区二区三区| 亚洲综合av网| 久久福利视频一区二区| 国产一区二区免费视频| 色综合天天综合色综合av| 精品视频全国免费看| 欧美一级黄色片| 日本一区二区三级电影在线观看| 综合久久给合久久狠狠狠97色| 亚洲综合色噜噜狠狠| 国产在线国偷精品产拍免费yy| av一二三不卡影片| 日韩一区二区麻豆国产|