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

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

?? serv.c

?? wince下的源代碼集合打包
?? C
字號:
/*++Copyright (c) 1997-2000 Microsoft Corporation.  All rights reserved.Module Name:    serv.cAbstract:    This file contains the FSDMGR services provided to other FSDs.--*/#include "fsdmgrp.h"/*  FSDMGR_GetDiskInfo - Called by an FSD to query disk info * *  ENTRY *      pDsk -> DSK passed to FSD_MountDisk *      pfdi -> FSD_DISK_INFO structure to be filled in * *  EXIT *      ERROR_SUCCESS if structure successfully filled in, or an error code. */DWORD FSDMGR_GetDiskInfo(PDSK pDsk, FSD_DISK_INFO *pfdi){    DWORD cb;    ASSERT(        VALIDSIG(pDsk, DSK_SIG) &&        offsetof(FSD_DISK_INFO, cSectors)           == offsetof(DISK_INFO, di_total_sectors) &&        offsetof(FSD_DISK_INFO, cbSector)           == offsetof(DISK_INFO, di_bytes_per_sect) &&        offsetof(FSD_DISK_INFO, cCylinders)         == offsetof(DISK_INFO, di_cylinders) &&        offsetof(FSD_DISK_INFO, cHeadsPerCylinder)  == offsetof(DISK_INFO, di_heads) &&        offsetof(FSD_DISK_INFO, cSectorsPerTrack)   == offsetof(DISK_INFO, di_sectors) &&        offsetof(FSD_DISK_INFO, dwFlags)            == offsetof(DISK_INFO, di_flags)    );    // Return cached information whenever possible    if (pfdi != &pDsk->fdi && pDsk->fdi.cbSector != 0) {        *pfdi = pDsk->fdi;        return ERROR_SUCCESS;    }    if (DeviceIoControl(pDsk->hDsk,                        IOCTL_DISK_GETINFO,                        NULL, 0,                        pfdi, sizeof(*pfdi),                        &cb, NULL)) {        pDsk->dwFlags |= DSK_NEW_IOCTLS;    }    else    if (DeviceIoControl(pDsk->hDsk,                        DISK_IOCTL_GETINFO,                        pfdi, sizeof(*pfdi),                        NULL, 0,                        &cb, NULL)) {        ASSERT(!(pDsk->dwFlags & DSK_NEW_IOCTLS));    }    else {        DWORD status = GetLastError();        DEBUGMSG(ZONE_ERRORS, (DBGTEXT("FSDMGR_GetDiskInfo: DISK_IOCTL_GETINFO failed (%d)\n"), status));        pDsk->dwFlags |= DSK_NO_IOCTLS;        return status;    }    DEBUGMSG(ZONE_DISKIO, (DBGTEXT("FSDMGR_GetDiskInfo: DISK_IOCTL_GETINFO returned %d bytes\n"), cb));    DEBUGMSG(ZONE_DISKIO, (DBGTEXT("FSDMGR_GetDiskInfo: %d sectors, BPS=%d, CHS=%d:%d:%d\n"),              pfdi->cSectors, pfdi->cSectors, pfdi->cbSector, pfdi->cCylinders, pfdi->cHeadsPerCylinder, pfdi->cSectorsPerTrack));    DEBUGMSG(pfdi->dwFlags & ~(FDI_MBR | FDI_CHS_UNCERTAIN | FDI_UNFORMATTED | FDI_PAGEABLE), (DBGTEXT("FSDMGR_GetDiskInfo: DISK_IOCTL_GETINFO returned unknown flags (0x%08x)\n"), pfdi->dwFlags));    pfdi->dwFlags &= (FDI_MBR | FDI_CHS_UNCERTAIN | FDI_UNFORMATTED | FDI_PAGEABLE);    if (pDsk->dwFlags & DSK_READONLY)        pfdi->dwFlags |= FDI_READONLY;    return ERROR_SUCCESS;}/* process an I/O operation using ReadFile() or WriteFile() */static DWORD PlainReadWrite(FSD_SCATTER_GATHER_INFO *sgi,					 		FSD_SCATTER_GATHER_RESULTS *sgr,							DWORD ioctl){DWORD numBytes;DWORD i;PDSK  pDsk;BOOL  ok;	pDsk = (PDSK)sgi->idDsk;	if (SetFilePointer(pDsk->hDsk, sgi->dwSector * pDsk->fdi.cbSector, NULL, FILE_BEGIN) == 0xFFFFFFFF)       	return GetLastError();	for (i = 0; i < sgi->cfbi; i++)	{        if (ioctl == DISK_IOCTL_READ)        	ok = ReadFile(pDsk->hDsk, sgi->pfbi[i].pBuffer, sgi->pfbi[i].cbBuffer, &numBytes, NULL);		else        	ok = WriteFile(pDsk->hDsk, sgi->pfbi[i].pBuffer, sgi->pfbi[i].cbBuffer, &numBytes, NULL);		if (!ok)			return GetLastError();        if (numBytes != sgi->pfbi[i].cbBuffer)			return ERROR_GEN_FAILURE;	}	return ERROR_SUCCESS;}/*  ReadWriteDiskEx - Read/write sectors from/to a disk to/from discontiguous buffers * *  ENTRY *      pfsgi -> FSD_SCATTER_GATHER_INFO *      pfsgr -> FSD_SCATTER_GATHER_RESULTS *      ioctl -> I/O op to perform * *  EXIT *      ERROR_SUCCESS if successful, or an error code */static DWORD ReadWriteDiskEx(FSD_SCATTER_GATHER_INFO *sgi,							 FSD_SCATTER_GATHER_RESULTS *sgr,							 DWORD ioctl){SG_REQ *sgreq;PDSK    pDsk;DWORD   result;DWORD   i;DWORD   dummy;	pDsk = (PDSK)sgi->idDsk;    ASSERT(VALIDSIG(pDsk, DSK_SIG) && pDsk->hDsk);    // make sure the caller is not passing inappropriate flags    if (sgi->dwFlags)        return ERROR_INVALID_PARAMETER;    //DEBUGMSGW(ZONE_DISKIO,(DBGTEXTW("ReadWriteDiskEd: %s sector %d (0x%08x), total %d)\n"), cmd == DISK_IOCTL_READ? TEXTW("READ") : TEXTW("WRITE"), dwSector, dwSector, cSectors));    if (pDsk->hDsk == INVALID_HANDLE_VALUE)    {        DEBUGMSGW(ZONE_ERRORS,(DBGTEXTW("ReadWriteDiskEx: %s not open, returning error %d\n"), pDsk->wsDsk, ERROR_BAD_DEVICE));        return ERROR_BAD_DEVICE;    }	if (pDsk->dwFlags & DSK_NO_IOCTLS)	{		result = PlainReadWrite(sgi, sgr, ioctl);	}    else	{        if (pDsk->dwFlags & DSK_NEW_IOCTLS)		{        	if (ioctl == DISK_IOCTL_READ)            	ioctl = IOCTL_DISK_READ;            else if (ioctl == DISK_IOCTL_WRITE)                ioctl = IOCTL_DISK_WRITE;        }		sgreq              = alloca(sizeof(SG_REQ) + sgi->cfbi * sizeof(SG_BUF) - sizeof(SG_BUF));		sgreq->sr_start    = sgi->dwSector;		sgreq->sr_num_sec  = sgi->cSectors;		sgreq->sr_num_sg   = sgi->cfbi;		sgreq->sr_status   = 0;		sgreq->sr_callback = NULL;		for (i = 0; i < sgi->cfbi; i++)		{	    	sgreq->sr_sglist[i].sb_buf = sgi->pfbi[i].pBuffer;			sgreq->sr_sglist[i].sb_len = sgi->pfbi[i].cbBuffer;		}    	if (!DeviceIoControl(pDsk->hDsk, ioctl, sgreq, sizeof(sgreq) + sgi->cfbi * sizeof(SG_BUF) - sizeof(SG_BUF), NULL, 0, &dummy, NULL))			result = GetLastError();		else			result = ERROR_SUCCESS;    }	if (sgr)	{	    sgr->dwFlags = 0;		if (result == ERROR_SUCCESS)			sgr->cSectorsTransferred = sgi->cSectors;		else		    sgr->cSectorsTransferred = 0;	}	return result;}/*  FSDMGR_ReadDisk - Called by an FSD to read sector(s) from a disk * *  ENTRY *      pDsk -> DSK passed to FSD_MountDisk *      dwsector == starting sector # *      cSectors == number of sectors to read *      pBuffer -> buffer to read sectors into *      cbBuffer == size of buffer, in bytes * *  EXIT *      ERROR_SUCCESS if successful, or an error code */DWORD FSDMGR_ReadDisk(PDSK pDsk, DWORD dwSector, DWORD cSectors, PBYTE pBuffer, DWORD cbBuffer){FSD_BUFFER_INFO         bi;FSD_SCATTER_GATHER_INFO sgi;	bi.pBuffer      = pBuffer;	bi.cbBuffer     = cbBuffer;	sgi.dwFlags     = 0;	sgi.idDsk       = (DWORD)pDsk;	sgi.dwSector    = dwSector;	sgi.cSectors    = cSectors;	sgi.pfdi        = NULL;	sgi.cfbi        = 1;	sgi.pfbi        = &bi;	sgi.pfnCallBack = NULL;    return ReadWriteDiskEx(&sgi, NULL, DISK_IOCTL_READ);}/*  FSDMGR_WriteDisk - Called by an FSD to write sector(s) to a disk * *  ENTRY *      pDsk -> DSK passed to FSD_MountDisk *      dwsector == starting sector # *      cSectors == number of sectors to write *      pBuffer -> buffer to write sectors from *      cbBuffer == size of buffer, in bytes * *  EXIT *      ERROR_SUCCESS if successful, or an error code */DWORD FSDMGR_WriteDisk(PDSK pDsk, DWORD dwSector, DWORD cSectors, PBYTE pBuffer, DWORD cbBuffer){FSD_BUFFER_INFO         bi;FSD_SCATTER_GATHER_INFO sgi;	bi.pBuffer      = pBuffer;	bi.cbBuffer     = cbBuffer;	sgi.dwFlags     = 0;	sgi.idDsk       = (DWORD)pDsk;	sgi.dwSector    = dwSector;	sgi.cSectors    = cSectors;	sgi.pfdi        = NULL;	sgi.cfbi        = 1;	sgi.pfbi        = &bi;	sgi.pfnCallBack = NULL;    return ReadWriteDiskEx(&sgi, NULL, DISK_IOCTL_WRITE);}/*  FSDMGR_ReadDiskEx - Called by an FSD to read sectors from a disk into discontiguous buffers * *  ENTRY *      pfsgi -> FSD_SCATTER_GATHER_INFO *      pfsgr -> FSD_SCATTER_GATHER_RESULTS * *  EXIT *      ERROR_SUCCESS if successful, or an error code */DWORD FSDMGR_ReadDiskEx(FSD_SCATTER_GATHER_INFO *pfsgi, FSD_SCATTER_GATHER_RESULTS *pfsgr){    return ReadWriteDiskEx(pfsgi, pfsgr, DISK_IOCTL_READ);}/*  FSDMGR_WriteDiskEx - Called by an FSD to write sectors to a disk from discontiguous buffers * *  ENTRY *      pfsgi -> FSD_SCATTER_GATHER_INFO *      pfsgr -> FSD_SCATTER_GATHER_RESULTS * *  EXIT *      ERROR_SUCCESS if successful, or an error code */DWORD FSDMGR_WriteDiskEx(FSD_SCATTER_GATHER_INFO *pfsgi, FSD_SCATTER_GATHER_RESULTS *pfsgr){    return ReadWriteDiskEx(pfsgi, pfsgr, DISK_IOCTL_WRITE);}/*  FSDMGR_RegisterVolume - Called by an FSD to register a volume * *  ENTRY *      pDsk -> DSK passed to FSD_MountDisk *      pwsName -> desired volume name, NULL for default name (eg, "Storage Card") *      pVolume == FSD-defined volume-specific data * *  EXIT *      Volume identifier, NULL if none */PVOL FSDMGR_RegisterVolume(PDSK pDsk, PWSTR pwsName, PVOLUME pVolume){    PVOL pVol;    ASSERT(VALIDSIG(pDsk, DSK_SIG));    EnterCriticalSection(&csFSD);    if (pVol = AllocVolume(pDsk, (DWORD)pVolume)) {        PFSD pFSD = pVol->pDsk->pFSD;        if (GetFSDProcArray(pFSD, pFSD->apfnAFS,  apfnAFSStubs,  apwsAFSAPIs,  ARRAY_SIZE(apwsAFSAPIs)) &&            GetFSDProcArray(pFSD, pFSD->apfnFile, apfnFileStubs, apwsFileAPIs, ARRAY_SIZE(apwsFileAPIs)) &&            GetFSDProcArray(pFSD, pFSD->apfnFind, apfnFindStubs, apwsFindAPIs, ARRAY_SIZE(apwsFindAPIs))) {            if (pVol->iAFS == INVALID_AFS) {                // Determine what AFS index to use.  We try to use OID_FIRST_AFS                // first, because FILESYS.EXE pre-registers the name "Storage Card"                // at that index (to prevent anyone from creating a folder or file                // with that name).  However, if that fails, then we'll try to create                // a unique derivation of whatever name FILESYS.EXE had reserved at                // that index, register the new name, and use the resulting AFS index.                                int cch;                int iAFS, iSuffix = 1;                WCHAR wsAFS[128];                cch = GetAFSName(OID_FIRST_AFS, wsAFS, ARRAY_SIZE(wsAFS));                if (pwsName == NULL && cch) {                    // The FSD did not provide a name, and the default name is already in use,                    // so we should just try derivations of the default name.                    iSuffix = 2;                    pwsName = wsAFS;                }                if (pwsName == NULL) {                    // The FSD did not provide a name, and the default name is NOT in use,                    // so we should be able to use the default name.                    if (RegisterAFS(OID_FIRST_AFS, hAFSAPI, (DWORD)pVol, AFS_VERSION)) {                        pVol->iAFS = OID_FIRST_AFS;#ifdef DEBUG                        VERIFYTRUE(GetAFSName(pVol->iAFS, wsAFS, ARRAY_SIZE(wsAFS)));                        memcpy(pVol->wsVol, wsAFS, min(sizeof(pVol->wsVol),sizeof(wsAFS)));                        DEBUGMSGW(ZONE_EVENTS,(DBGTEXTW("FSDMGR_RegisterVolume: registered primary volume as %s\n"), pVol->wsVol));#endif                    }                    else                        DEBUGMSGW(ZONE_EVENTS,(DBGTEXTW("FSDMGR_RegisterVolume: primary volume could not be registered (%d)\n"), GetLastError()));                }                else {                    // Either the FSD provided a name, or the default name is in use,                    // so we should try all the appropriate derivations.                    wcscpy(wsAFS, pwsName[0] == '\\'? pwsName+1 : pwsName);                    cch = wcslen(wsAFS);                    do {                        if (iSuffix > 1) {                            wsAFS[cch] = '0'+iSuffix;                            wsAFS[cch+1] = 0;                        }                                                iAFS = RegisterAFSName(wsAFS);                        if (iAFS != INVALID_AFS && GetLastError() == 0) {                            DEBUGMSGW(ZONE_EVENTS,(DBGTEXTW("FSDMGR_RegisterVolume: registering secondary volume as %s\n"), wsAFS));                            if (RegisterAFS(iAFS, hAFSAPI, (DWORD)pVol, AFS_VERSION)) {                                pVol->iAFS = iAFS;                                break;                            }                            DEBUGMSGW(ZONE_EVENTS,(DBGTEXTW("FSDMGR_RegisterVolume: registering secondary volume failed (%d)\n"), GetLastError()));                            VERIFYTRUE(DeregisterAFSName(iAFS));                        }                    } while (iSuffix++ < 9);                }            }            // End of "if pVol->iAFS == INVALID_AFS".  Note, however, that pVol->iAFS may            // *still* be INVALID_AFS if all our attempts to register a volume name were rebuffed.        }        // End of "if GetFSDProcArray()" calls        if (pVol->iAFS == INVALID_AFS) {            DeallocVolume(pVol);            pVol = NULL;        }    }    LeaveCriticalSection(&csFSD);    return pVol;}/*  FSDMGR_GetVolumeName - Called by an FSD to query a volume's registered name * *  ENTRY *      pVol -> VOL structure returned from FSDMGR_RegisterVolume *      pwsName -> buffer, or NULL to query size of name *      cchMax == max chars allowed in buffer (including terminating NULL), ignored if pwsName is NULL * *  EXIT *      Number of characters returned, NOT including terminating NULL, or 0 if error */int FSDMGR_GetVolumeName(PVOL pVol, PWSTR pwsName, int cchMax){    ASSERT(VALIDSIG(pVol, VOL_SIG));    return GetAFSName(pVol->iAFS, pwsName, cchMax);}/*  FSDMGR_DeregisterVolume - Called by an FSD to deregister a volume * *  ENTRY *      pVol -> VOL structure returned from FSDMGR_RegisterVolume * *  EXIT *      None */void FSDMGR_DeregisterVolume(PVOL pVol){    ASSERT(VALIDSIG(pVol, VOL_SIG));    EnterCriticalSection(&csFSD);    if (pVol) {        if (pVol->iAFS != INVALID_AFS) {            VERIFYTRUE(DeregisterAFS(pVol->iAFS));            if (pVol->iAFS > OID_FIRST_AFS)                VERIFYTRUE(DeregisterAFSName(pVol->iAFS));            pVol->iAFS = INVALID_AFS;        }        DeallocVolume(pVol);    }    LeaveCriticalSection(&csFSD);}/*  FSDMGR_CreateFileHandle - Called by an FSD to create 'file' handles * *  ENTRY *      pVol -> VOL structure returned from FSDMGR_RegisterVolume *      hProc == originating process handle *      pFile == FSD-defined file-specific data for the new handle * *  EXIT *      A 'file' handle associated with the originating process, or INVALID_HANDLE_VALUE */HANDLE FSDMGR_CreateFileHandle(PVOL pVol, HANDLE hProc, PFILE pFile){    ASSERT(VALIDSIG(pVol, VOL_SIG));    return AllocFSDHandle(pVol, hProc, (DWORD)pFile, HDL_FILE);}/*  FSDMGR_CreateSearchHandle - Called by an FSD to create 'search' (aka 'find') handles * *  ENTRY *      pVol -> VOL structure returned from FSDMGR_RegisterVolume *      hProc == originating process handle *      pSearch == FSD-defined search-specific data for the new handle * *  EXIT *      A 'search' handle associated with the originating process, or INVALID_HANDLE_VALUE */HANDLE FSDMGR_CreateSearchHandle(PVOL pVol, HANDLE hProc, PSEARCH pSearch){    ASSERT(VALIDSIG(pVol, VOL_SIG));    return AllocFSDHandle(pVol, hProc, (DWORD)pSearch, HDL_SEARCH);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久夜甘婷婷| 久久国产乱子精品免费女| 91精品国产一区二区| 国产成人午夜99999| 亚洲成人激情av| 亚洲国产精品av| 欧美一卡2卡3卡4卡| 色偷偷成人一区二区三区91 | 亚洲一区二区不卡免费| 精品国产一区二区三区久久影院| 欧美中文字幕不卡| 成人app软件下载大全免费| 日韩高清不卡在线| 亚洲女同ⅹxx女同tv| 久久久国产精品麻豆| 日韩情涩欧美日韩视频| 91传媒视频在线播放| 成人午夜激情影院| 国产成a人亚洲精| 国产乱码精品一区二区三区忘忧草 | 欧美一区二区三区播放老司机| 波多野结衣在线aⅴ中文字幕不卡| 精品一区二区三区免费播放| 天使萌一区二区三区免费观看| 一区二区高清免费观看影视大全 | 久久久久久久综合日本| 日韩亚洲欧美高清| 91麻豆精品国产| 欧美天堂一区二区三区| 色先锋资源久久综合| 色综合欧美在线视频区| av中文一区二区三区| 成人美女视频在线观看| 国产成人亚洲精品青草天美| 精品一区二区三区免费播放| 久久99在线观看| 国产在线观看一区二区| 国精产品一区一区三区mba视频| 久久精品国产精品亚洲综合| 免费日韩伦理电影| 久久成人免费电影| 国产一区二三区| 国产激情视频一区二区在线观看| 国产高清不卡二三区| 成人美女视频在线看| 9人人澡人人爽人人精品| 99视频在线观看一区三区| 97精品视频在线观看自产线路二| 99久久久国产精品免费蜜臀| av电影一区二区| 91国产免费看| 欧美日产在线观看| 欧美一二三区精品| 久久麻豆一区二区| 1024成人网| 亚洲综合久久久| 婷婷久久综合九色综合伊人色| 日韩精品电影在线观看| 精品在线观看视频| 国产suv精品一区二区883| 91美女视频网站| 欧美日韩精品免费| 精品国产99国产精品| 国产欧美一区二区精品性色 | 欧美不卡一区二区三区| 久久亚洲私人国产精品va媚药| 国产丝袜美腿一区二区三区| 国产精品不卡视频| 亚洲午夜久久久久中文字幕久| 日韩黄色在线观看| 懂色av一区二区夜夜嗨| 欧美午夜不卡在线观看免费| 日韩西西人体444www| 欧美国产精品一区二区| 亚洲国产一区二区视频| 精品一区二区三区在线视频| 丰满白嫩尤物一区二区| 欧美视频一区二| 久久婷婷色综合| 亚洲视频 欧洲视频| 免费成人在线影院| 色综合久久综合中文综合网| 欧美成人一区二区| 亚洲欧美二区三区| 国产精品正在播放| 欧美性受极品xxxx喷水| 国产午夜精品一区二区三区四区| 亚洲一区二区三区四区在线观看 | 欧美一区二区视频免费观看| 久久久久久一二三区| 亚洲香肠在线观看| 丁香天五香天堂综合| 欧美美女一区二区在线观看| 中文字幕在线不卡视频| 老司机精品视频一区二区三区| 91在线视频官网| 久久色在线观看| 日韩中文字幕不卡| av在线不卡观看免费观看| 欧美第一区第二区| 亚洲午夜精品久久久久久久久| 国产成人综合网站| 欧美欧美欧美欧美| 亚洲欧美区自拍先锋| 国产精品一品视频| 日韩一区二区免费电影| 亚洲夂夂婷婷色拍ww47| 成人丝袜视频网| 精品国产乱码久久久久久图片 | 五月综合激情网| 91亚洲精品久久久蜜桃| 欧美经典三级视频一区二区三区| 日日嗨av一区二区三区四区| 91蜜桃免费观看视频| 国产精品青草综合久久久久99| 经典三级一区二区| 91精品国产91久久久久久一区二区 | 视频一区在线视频| 色综合天天综合| 国产精品久久久久久久第一福利 | 成人精品亚洲人成在线| 精品国产免费人成在线观看| 青青草97国产精品免费观看| 91一区二区在线| 日韩一区中文字幕| 99久久久精品| 亚洲图片另类小说| 91蜜桃在线观看| 亚洲精品免费电影| 91一区一区三区| 亚洲青青青在线视频| 色哟哟精品一区| 夜夜嗨av一区二区三区| 欧美在线|欧美| 亚洲成a天堂v人片| 欧美电影一区二区三区| 日欧美一区二区| 日韩精品在线一区二区| 韩国精品一区二区| 国产校园另类小说区| 国产ts人妖一区二区| 国产精品的网站| 91麻豆免费在线观看| 亚洲资源在线观看| 欧美日本在线播放| 日本美女一区二区三区| 日韩欧美成人一区二区| 国产在线精品免费| 国产片一区二区| 91在线视频网址| 午夜视频一区二区三区| 91精品黄色片免费大全| 精品在线观看免费| 国产精品久久久久久久久久免费看| 99久久伊人久久99| 亚洲综合在线视频| 欧美精品三级在线观看| 蜜臀久久99精品久久久久久9| 久久精品视频在线看| 91麻豆免费看片| 日韩高清一区在线| 国产午夜亚洲精品午夜鲁丝片 | 国产精品一区久久久久| 国产精品美女久久久久高潮| 日本韩国欧美一区二区三区| 日韩vs国产vs欧美| 国产色91在线| 在线国产电影不卡| 麻豆国产一区二区| 中文字幕一区二区视频| 欧美人狂配大交3d怪物一区| 久久se精品一区二区| 亚洲人被黑人高潮完整版| 欧美一区二区三区播放老司机 | 4438x亚洲最大成人网| 国产一区二区三区久久久| 中文字幕一区在线观看| 欧美电影在哪看比较好| 成人精品国产福利| 日韩av一区二区三区四区| 国产精品久久久久久一区二区三区 | 亚洲国产人成综合网站| 精品久久一区二区| 欧美在线视频不卡| 国产伦理精品不卡| 午夜欧美一区二区三区在线播放| 久久久久国色av免费看影院| 色噜噜夜夜夜综合网| 久久99国产精品久久99果冻传媒| 综合欧美亚洲日本| 欧美精品一区二区三区在线| 色综合久久88色综合天天| 国产一区在线观看麻豆| 亚洲国产精品人人做人人爽| 久久嫩草精品久久久久| 欧美片网站yy| 91蜜桃在线观看| 不卡视频在线观看| 激情深爱一区二区| 午夜精品在线看|