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

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

?? file.c

?? FAT文件系統源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    DWORD dwError;

    ASSERT(pstm);
    DEBUGMSG(ZONE_APIS,(DBGTEXT("FATFS!FAT_SetEndOfFile(0x%x)\r\n"), pfh));

    if (!FATEnter(pstm->s_pvol, LOGID_SETENDOFFILE))
        return FALSE;

    if (!(pfh->fh_mode & FH_MODE_WRITE) || (pfh->fh_flags & (FHF_VOLUME | FHF_UNMOUNTED))) {
        dwError = ERROR_ACCESS_DENIED;
        goto exit;
    }

    EnterCriticalSection(&pstm->s_cs);
    dwError = ResizeStream(pstm, pfh->fh_pos, RESIZESTREAM_SHRINK|RESIZESTREAM_UPDATEFAT);
    LeaveCriticalSection(&pstm->s_cs);

  exit:
    if (dwError) {
        SetLastError(dwError);
    }

    FATExit(pstm->s_pvol, LOGID_SETENDOFFILE);

    DEBUGMSG(ZONE_APIS || ZONE_ERRORS && dwError,(DBGTEXT("FATFS!FAT_SetEndOfFile returned 0x%x (%d)\r\n"), dwError == ERROR_SUCCESS, dwError));

    return dwError == ERROR_SUCCESS;
}


BOOL FAT_DeviceIoControl(
PFHANDLE pfh,
DWORD dwIoControlCode,
LPVOID lpInBuf, DWORD nInBufSize,
LPVOID lpOutBuf, DWORD nOutBufSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped)
{
    DWORD dwError = ERROR_INVALID_PARAMETER;
    PVOLUME pvol = pfh->fh_pstm->s_pvol;

    DEBUGMSG(ZONE_APIS,(DBGTEXT("FATFS!FAT_DeviceIoControl(0x%x,0x%x)\r\n"), pfh, dwIoControlCode));

    // Deny all IOCTL access to untrusted applications
    if (OEM_CERTIFY_TRUST != PSLGetCallerTrust()) {
        SetLastError(ERROR_ACCESS_DENIED);
        return FALSE;
    }

    
    // FATEnterQuick();
    
#ifdef UNDER_CE
    if (dwIoControlCode == FSCTL_COPY_EXTERNAL_START) {

        if (pfh->fh_flags & (FHF_VOLUME | FHF_UNMOUNTED)) {
            dwError = ERROR_ACCESS_DENIED;
            goto exit;
        }
        
        if (!lpInBuf || nInBufSize < sizeof(FILE_COPY_EXTERNAL)) {
            dwError = ERROR_INVALID_PARAMETER;
            goto exit;
        }
        
        dwError = CopyFileExternal (pfh->fh_pstm, (PFILE_COPY_EXTERNAL)lpInBuf, lpOutBuf,nOutBufSize);
        goto exit;
    }

    if (dwIoControlCode == FSCTL_COPY_EXTERNAL_COMPLETE) {
        return FSDMGR_DiskIoControl((HDSK)pvol->v_pdsk->d_hdsk, IOCTL_DISK_COPY_EXTERNAL_COMPLETE, lpInBuf, nInBufSize, lpOutBuf, nOutBufSize, lpBytesReturned, lpOverlapped);
    }

#endif
    

    if ((pfh->fh_flags & FHF_VOLUME) && !(pfh->fh_flags & FHF_UNMOUNTED)) {

      __try {

        if ((dwIoControlCode == IOCTL_DISK_GET_DEVICE_PARAMETERS ||
             dwIoControlCode == IOCTL_DISK_GET_VOLUME_PARAMETERS) &&
            nOutBufSize >= sizeof(DEVPB)) {

            QueryVolumeParameters(pvol, (PDEVPB)lpOutBuf, dwIoControlCode == IOCTL_DISK_GET_VOLUME_PARAMETERS);

            if (lpBytesReturned) {
                *lpBytesReturned = sizeof(DEVPB);
            }

            dwError = ERROR_SUCCESS;
            goto exit;
        }

        if (dwIoControlCode == IOCTL_DISK_GET_FREE_SPACE && nOutBufSize >= sizeof(FREEREQ)) {

            PFREEREQ pfr = (PFREEREQ)lpOutBuf;

            if (FAT_GetDiskFreeSpaceW(pvol,
                                     NULL,
                                     &pfr->fr_SectorsPerCluster,
                                     &pfr->fr_BytesPerSector,
                                     &pfr->fr_FreeClusters,
                                     &pfr->fr_Clusters)) {
                if (lpBytesReturned) {
                    *lpBytesReturned = sizeof(FREEREQ);
                }
                dwError = ERROR_SUCCESS;
            }
            goto exit;
        }


        // NOTE: Callers of IOCTL_DISK_FORMAT_VOLUME and IOCTL_DISK_SCAN_VOLUME
        // need only pass the first (flags) DWORD of the corresponding FMTVOLREQ and
        // SCANVOLREQ packets;  the flags will indicate whether or not any of the
        // additional fields that we may or may not add over time are actually present.

        if (dwIoControlCode == IOCTL_DISK_FORMAT_VOLUME) {
            if (nInBufSize < sizeof(DWORD))
                lpInBuf = NULL;
            dwError = FormatVolume(pvol, (PFMTVOLREQ)lpInBuf);
            if (lpBytesReturned) {
                *lpBytesReturned = 0;
            }
            goto exit;
        }

        if (dwIoControlCode == IOCTL_DISK_SCAN_VOLUME) {
            DWORD dwScanVol = SCANVOL_QUICK;
            if (nInBufSize >= sizeof(DWORD) && lpInBuf) {
                dwScanVol = ((PSCANVOLREQ)lpInBuf)->sv_dwScanVol;
            }
            dwError = ScanVolume(pvol, dwScanVol);
            if (lpBytesReturned) {
                *lpBytesReturned = 0;
            }
            goto exit;
        }
        
#if defined(DEBUG) && defined(UNDER_CE)
        if (dwIoControlCode == IOCTL_DISK_SET_DEBUG_ZONES && nInBufSize >= sizeof(DWORD)) {
            dpCurSettings.ulZoneMask = *(PDWORD)lpInBuf;
            dwError = ERROR_SUCCESS;
            if (lpBytesReturned) {
                *lpBytesReturned = 0;
            }
            goto exit;
        }
#endif

// Last ditch attempt... if all else fails and the dwIoControlCode is
// in the valid range, pass it on to the device driver and hope for the best

        if (((dwIoControlCode >> 16) & 0xffff) != IOCTL_DISK_BASE ||
            ((dwIoControlCode >> 2) & 0xfff) < 0x080 ||
            ((dwIoControlCode >> 2) & 0xfff) >= 0x700) {
            if (!FSDMGR_DiskIoControl((HDSK)pvol->v_pdsk->d_hdsk, dwIoControlCode, lpInBuf, nInBufSize, lpOutBuf, nOutBufSize, lpBytesReturned, lpOverlapped)) {
                dwError = GetLastError();
            } else {
                dwError = ERROR_SUCCESS;
            }
            goto exit;
        }

      } __except (EXCEPTION_EXECUTE_HANDLER) {
        ;
      }
    }
    
  exit:
    if (dwError)
        SetLastError(dwError);

    
    DEBUGMSG(ZONE_APIS || ZONE_ERRORS && dwError,(DBGTEXT("FATFS!FAT_DeviceIoControl returned 0x%x (%d)\r\n"), dwError == ERROR_SUCCESS, dwError));

    return dwError == ERROR_SUCCESS;
}

#ifdef UNDER_CE
BOOL FAT_LockFileEx(PFHANDLE pfh, DWORD dwFlags, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped)
{
    PREFAST_DEBUGCHK(pfh);

    return FSDMGR_InstallFileLock(AcquireFileLockState, ReleaseFileLockState, (DWORD)pfh, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped);
}

BOOL FAT_UnlockFileEx(PFHANDLE pfh, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped)
{
    PREFAST_DEBUGCHK(pfh);

    return FSDMGR_RemoveFileLock(AcquireFileLockState, ReleaseFileLockState, (DWORD)pfh, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped);
}

BOOL AcquireFileLockState(DWORD dwPfh, PFILELOCKSTATE *ppFileLockState)
{
    PFHANDLE pfh;
    PDSTREAM pstm;
    BOOL fRet;

    pfh = (PFHANDLE)dwPfh;

    PREFAST_DEBUGCHK(pfh);
    PREFAST_DEBUGCHK(ppFileLockState);

    FATEnterQuick();

    pstm = pfh->fh_pstm;
    PREFAST_DEBUGCHK(pstm);

    if (pfh->fh_flags & (FHF_VOLUME | FHF_UNMOUNTED)) {
        fRet = FALSE;
        goto exit;
    }

    if (NULL == pstm->s_filelockstate.lpcs) {
        fRet = FALSE;
        goto exit;
    }

    // TODO: what protects pfh?

    // acquire file lock state; exit in ReleaseFileLockState
    EnterCriticalSection(pstm->s_filelockstate.lpcs);

    // fetch file position
    pstm->s_filelockstate.dwPosLow = pfh->fh_pos;
    pstm->s_filelockstate.dwPosHigh = 0;

    // fetch create access
    pstm->s_filelockstate.dwAccess = 0;
    if (pfh->fh_mode & AccessToMode(GENERIC_WRITE)) {
        pstm->s_filelockstate.dwAccess |= GENERIC_WRITE;
    }
    if (pfh->fh_mode & AccessToMode(GENERIC_READ)){
        pstm->s_filelockstate.dwAccess |= GENERIC_READ;
    }

    // fetch file lock container
    *ppFileLockState = &pstm->s_filelockstate;

    fRet = TRUE;

exit:

    FATExitQuick();

    return fRet;
}


BOOL ReleaseFileLockState(DWORD dwPfh, PFILELOCKSTATE *ppFileLockState)
{
    PFHANDLE pfh;
    PDSTREAM pstm;
    BOOL fRet;

    pfh = (PFHANDLE)dwPfh;

    PREFAST_DEBUGCHK(pfh);
    PREFAST_DEBUGCHK(ppFileLockState);

    FATEnterQuick();

    pstm = pfh->fh_pstm;
    PREFAST_DEBUGCHK(pstm);

    // if volume is unmounted, then fail
    if (pfh->fh_flags & (FHF_VOLUME | FHF_UNMOUNTED)) {
        fRet = FALSE;
        goto exit;
    }

    if (NULL == pstm->s_filelockstate.lpcs) {
        fRet = FALSE;
        goto exit;
    }

    // release file lock state; enter s_filelockstate.cs in AcquireFileLockState
    LeaveCriticalSection(pstm->s_filelockstate.lpcs);

    fRet = TRUE;

exit:

    FATExitQuick();

    return fRet;
}

DWORD CopyFileExternal(PDSTREAM pstm, PFILE_COPY_EXTERNAL pInCopyReq, LPVOID lpOutBuf, DWORD nOutBufSize)
{
    DWORD dwRuns = 0;
    PDISK_COPY_EXTERNAL pOutCopyReq = NULL;
    PSECTOR_LIST_ENTRY pEntry, pSectorList;
    PVOLUME pvol = pstm->s_pvol;
    DWORD dwSize;
    DWORD dwError = ERROR_SUCCESS;
    DWORD dwPosition = 0;

    // Validate input parameters
    if (!pInCopyReq->pUserData && pInCopyReq->cbUserDataSize) {
        return ERROR_INVALID_PARAMETER;
    }

    FATEnterQuick();
    EnterCriticalSection(&pstm->s_cs);    
       
    // Determine the number of sector runs
    RewindStream (pstm, INVALID_POS);
    while (UnpackRun (pstm) != ERROR_HANDLE_EOF) {
        dwRuns++;    
    }

    dwSize = sizeof(DISK_COPY_EXTERNAL) + dwRuns * sizeof(SECTOR_LIST_ENTRY);
    if ((dwSize - sizeof(DISK_COPY_EXTERNAL)) / dwRuns != sizeof(SECTOR_LIST_ENTRY)) {
        // Integer overflow
        dwError = ERROR_INVALID_PARAMETER;
        goto exit;
    }
        
    pOutCopyReq = HeapAlloc (hHeap, 0, dwSize);
    if (!pOutCopyReq) {
        DEBUGMSG(ZONE_ERRORS,(DBGTEXT("FATFS!CopyFileExternal: Out of memory\r\n")));
        dwError = ERROR_OUTOFMEMORY;
        goto exit;
    }

    // Initialize the output copy request structure by copying the input
    pOutCopyReq->cbSize = sizeof(DISK_COPY_EXTERNAL);
    pOutCopyReq->dwDirection = pInCopyReq->dwDirection;
    pOutCopyReq->pUserData = pInCopyReq->pUserData;
    pOutCopyReq->cbUserDataSize = pInCopyReq->cbUserDataSize;
    _tcsncpy (pOutCopyReq->szCancelEventName, pInCopyReq->szCancelEventName, MAX_PATH-1);
    pOutCopyReq->szCancelEventName[MAX_PATH-1] = 0;

    pOutCopyReq->hCallerProc = GetCallerProcess();
    pOutCopyReq->cbSectorListSize = dwRuns * sizeof(SECTOR_LIST_ENTRY);

    // Set the file size.
    pOutCopyReq->ulFileSize.LowPart = pstm->s_size;
    pOutCopyReq->ulFileSize.HighPart = 0;

    // The sector list starts at the end of the structure.
    pSectorList = (PSECTOR_LIST_ENTRY)(pOutCopyReq + 1);
    pEntry = pSectorList;

    // Loop through each of the cluster runs and add each one to the sector list.
    RewindStream (pstm, INVALID_POS);
    dwPosition = 0;
    while (UnpackRun (pstm) != ERROR_HANDLE_EOF) {      

        RunInfo RunInfo;
        dwError = GetRunInfo (&pstm->s_runList, dwPosition, &RunInfo);
        if (dwError != ERROR_SUCCESS) {
            goto exit;
        }

        pEntry->dwStartSector = (RunInfo.StartBlock >> pvol->v_log2cblkSec) + pvol->v_secBlkBias;
        ASSERT (RunInfo.StartPosition <= RunInfo.EndPosition);
        pEntry->dwNumSectors = (RunInfo.EndPosition - RunInfo.StartPosition + pvol->v_pdsk->d_diActive.di_bytes_per_sect - 1) / 
            pvol->v_pdsk->d_diActive.di_bytes_per_sect;
        pEntry++;

        dwPosition += RunInfo.StartPosition;        
    }    

    // For a write, invalidate the cache for these sectors, since copy external will not go 
    // through the cache.  For a read, flush any dirty sectors first, so that the correct
    // data is read from disk.
    if (pvol->v_DataCacheId != INVALID_CACHE_ID) {
        if (pInCopyReq->dwDirection == COPY_EXTERNAL_READ) {
            FSDMGR_FlushCache (pvol->v_DataCacheId, pSectorList, dwRuns, 0);
        } else {
            FSDMGR_InvalidateCache (pvol->v_DataCacheId, pSectorList, dwRuns, 0);
        }
    }

    if (!FSDMGR_DiskIoControl((HDSK)pvol->v_pdsk->d_hdsk, IOCTL_DISK_COPY_EXTERNAL_START, (LPBYTE)pOutCopyReq, dwSize, lpOutBuf, nOutBufSize, NULL, NULL)) {
        dwError = GetLastError();
    }

exit:

    if (pOutCopyReq)
        HeapFree (hHeap, 0, (HLOCAL)pOutCopyReq);

    LeaveCriticalSection(&pstm->s_cs);    
    FATExitQuick();

    return dwError;
    
}

#else

BOOL FAT_LockFileEx(PFHANDLE pfh, DWORD dwFlags, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped)
{
    return TRUE;
}

BOOL FAT_UnlockFileEx(PFHANDLE pfh, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped)
{
    return TRUE;
}
BOOL AcquireFileLockState(DWORD dwPfh, PFILELOCKSTATE *ppFileLockState)
{
    return TRUE;
}

BOOL ReleaseFileLockState(DWORD dwPfh, PFILELOCKSTATE *ppFileLockState)
{
    return TRUE;
}
BOOL LockPages(LPVOID lpvAddress, DWORD cbSize, PDWORD pPFNs, int fOptions)
{
    return TRUE;
}
BOOL UnlockPages(LPVOID lpvAddress, DWORD cbSize)
{
    return TRUE;
}
BOOL SetHandleOwner(HANDLE h, HANDLE hProc)
{
    return TRUE;
}

#endif


BOOL FAT_GetVolumeInfo(PVOLUME pvol, FSD_VOLUME_INFO *pInfo)
{
    pInfo->dwBlockSize = pvol->v_cbClus;
    if (pvol->v_flags & VOLF_READONLY)
        pInfo->dwAttributes = FSD_ATTRIBUTE_READONLY;
    pInfo->dwFlags = FSD_FLAG_LOCKFILE_SUPPORTED | FSD_FLAG_WFSC_SUPPORTED;
#ifdef TFAT    
    if (pvol->v_fTfat)
        pInfo->dwFlags |= FSD_FLAG_TRANSACTION_SAFE;
    if (pvol->v_flFATFS  & FATFS_TRANS_DATA)
        pInfo->dwFlags |= FSD_FLAG_TRANSACT_WRITES;
#endif        
    return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区在线观看| 欧美日韩国产在线播放网站| 日本精品裸体写真集在线观看| 欧美三级视频在线观看| 国产夜色精品一区二区av| 亚洲va韩国va欧美va| 国产99久久精品| 日韩欧美亚洲国产精品字幕久久久| 亚洲特黄一级片| 国产一区二区三区久久久| 中文字幕乱码一区二区免费| 首页国产丝袜综合| 欧美午夜精品久久久久久超碰| 久久婷婷国产综合精品青草| 午夜精品久久久久久久久久| 色综合婷婷久久| 国产精品青草久久| 国产福利一区二区三区视频在线| 9191精品国产综合久久久久久| 亚洲精品免费在线播放| 99精品一区二区| 国产精品乱子久久久久| 国产91富婆露脸刺激对白| 日韩一级片网站| 奇米影视在线99精品| 欧美精品第1页| 日日欢夜夜爽一区| 欧美日韩国产一区二区三区地区| 亚洲精选视频在线| 91黄色免费版| 亚洲一区成人在线| 欧美三级视频在线| 五月婷婷综合激情| 51精品视频一区二区三区| 婷婷国产v国产偷v亚洲高清| 欧美日韩免费观看一区二区三区| 亚洲制服丝袜在线| 欧美色男人天堂| 日本美女一区二区三区| 日韩一区二区在线免费观看| 美女网站一区二区| 久久精品一区四区| 成人小视频免费观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 懂色一区二区三区免费观看| 日韩一区欧美小说| 色婷婷久久久久swag精品| 亚洲一区二区精品3399| 欧美美女一区二区在线观看| 日本系列欧美系列| 久久精品一区蜜桃臀影院| 91小宝寻花一区二区三区| 亚洲啪啪综合av一区二区三区| 欧美日韩一区中文字幕| 人人狠狠综合久久亚洲| 欧美国产日本韩| 欧美色偷偷大香| 国模娜娜一区二区三区| 最新热久久免费视频| 欧美精品在欧美一区二区少妇| 蜜臀va亚洲va欧美va天堂| 国产精品欧美一级免费| 精品视频全国免费看| 韩国在线一区二区| 亚洲精品欧美激情| 亚洲精品在线电影| 日本韩国一区二区三区视频| 日本伊人午夜精品| 国内精品第一页| 成人欧美一区二区三区白人 | 精品国产自在久精品国产| 国产精品自拍一区| 一区二区三区日韩精品视频| 欧美大度的电影原声| 成人黄色免费短视频| 日日骚欧美日韩| 成人免费在线播放视频| 91麻豆精品国产91久久久资源速度| 国产高清在线精品| 日韩成人一区二区| 亚洲精品国产第一综合99久久| 日韩一区二区三区电影| 色呦呦网站一区| 国产成人啪免费观看软件| 午夜久久久久久| 亚洲精品网站在线观看| 国产校园另类小说区| 欧美放荡的少妇| 色综合久久天天| 丁香五精品蜜臀久久久久99网站 | 国产69精品久久久久毛片| 日韩激情在线观看| 不卡区在线中文字幕| 日本欧美一区二区在线观看| 亚洲欧美另类小说视频| 国产人久久人人人人爽| 日韩精品一区二区在线观看| 欧洲一区二区三区免费视频| 成人av电影免费观看| 国产伦精品一区二区三区视频青涩 | 91麻豆高清视频| 国产一区二区三区视频在线播放| 日日欢夜夜爽一区| 亚洲影视在线观看| 亚洲精品菠萝久久久久久久| 国产精品女人毛片| 国产女人aaa级久久久级| 精品国产一区二区三区久久影院 | 日本一区二区三区dvd视频在线| 日韩三级视频中文字幕| 91精品国产高清一区二区三区| 91免费精品国自产拍在线不卡| 成人免费视频免费观看| 成人免费高清视频| 波多野结衣一区二区三区| 国产成人免费在线视频| 国产高清精品网站| 国产不卡视频一区二区三区| 国产精品一区二区你懂的| 国产宾馆实践打屁股91| 成人精品视频一区| 99re亚洲国产精品| aaa欧美大片| 色综合天天综合狠狠| 91福利精品第一导航| 欧美日韩国产综合一区二区| 欧美日韩国产大片| 欧美一区二区三区系列电影| 精品久久久久久久人人人人传媒| 久久综合久久综合久久| 国产欧美日韩综合精品一区二区| 欧美国产精品专区| 亚洲美女精品一区| 午夜伊人狠狠久久| 国产又黄又大久久| 99久久精品免费| 欧美精品在线观看播放| 欧美成人女星排行榜| 欧美激情一区二区三区蜜桃视频| 亚洲日本va在线观看| 午夜伦理一区二区| 国产91在线看| 欧美丝袜丝交足nylons| 欧美成人伊人久久综合网| 国产精品美女久久久久久久久久久| 亚洲欧美日韩一区二区三区在线观看| 亚洲午夜激情av| 国产综合久久久久影院| 91丝袜高跟美女视频| 欧美电影一区二区| 国产校园另类小说区| 亚洲一区二区不卡免费| 国产麻豆一精品一av一免费| 日本道精品一区二区三区| 欧美一卡在线观看| 亚洲欧美综合另类在线卡通| 奇米影视在线99精品| 国产精品免费aⅴ片在线观看| 亚洲精品videosex极品| 日韩高清一区二区| av电影在线观看不卡| 日韩欧美高清一区| 一区二区三区.www| 国产传媒日韩欧美成人| 欧美日韩免费观看一区二区三区| 日本一区二区三区视频视频| 视频精品一区二区| 91麻豆免费在线观看| 精品国产一区二区精华| 亚洲最大成人网4388xx| 国产成人免费视频精品含羞草妖精| 欧美视频第二页| 国产精品久久久久永久免费观看| 午夜精品福利一区二区三区蜜桃| 成a人片亚洲日本久久| 欧美成人精品3d动漫h| 亚洲大片免费看| 99精品久久免费看蜜臀剧情介绍| 精品国产乱码91久久久久久网站| 亚洲一区二区三区小说| av一区二区不卡| 久久久久久久综合| 麻豆极品一区二区三区| 欧美日韩国产美| 亚洲国产精品久久久久秋霞影院 | 亚洲妇熟xx妇色黄| av中文字幕在线不卡| 久久久久久久久99精品| 极品尤物av久久免费看| 欧美一区二区免费观在线| 亚洲线精品一区二区三区八戒| av不卡一区二区三区| 中文字幕日本乱码精品影院| 成人小视频免费观看| 国产日韩亚洲欧美综合| 激情深爱一区二区| 26uuu亚洲| 欧美丰满高潮xxxx喷水动漫 | 国产无遮挡一区二区三区毛片日本| 日韩精品一级中文字幕精品视频免费观看 |