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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pcdmaccessdb.cpp

?? 《Windows CE 權(quán)威指南》(作者:(美)CHRIS MUENCH
?? CPP
字號(hào):
// PCDMAccessDB.cpp : Implementation of CPCDMAccessDB
#include "stdafx.h"
#include "PCDMDLL.h"
#include "PCDMAccessDB.h"

/////////////////////////////////////////////////////////////////////////////
// CPCDMAccessDB
// <BOOK ADDON STEP5 Chapter 8.4.2> **************************************************
void __stdcall _com_issue_error(HRESULT hr)
{
	// Error handling goes here!
}
// </BOOK ADDON STEP5 Chapter 8.4.2> **************************************************

// <BOOK_ADDON STEP4 Chapter 8.3.3> ******************************************
#define	PCDM_DB	833

STDMETHODIMP CPCDMAccessDB::AddProperty(VARIANT PID, long Sorted)
{
#ifdef UNDER_CE
VARIANT tvPID;

//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		if (m_SortCnt<10)
		{
			VariantInit(&tvPID);
			VariantChangeType(&tvPID,&PID,0,VT_I4);
			m_DBSortOrder[m_SortCnt].propid=MAKELONG(CEVT_LPWSTR,tvPID.lVal);
			if (Sorted)
				m_DBSortOrder[m_SortCnt].dwFlags=CEDB_SORT_GENERICORDER;
			else
				m_DBSortOrder[m_SortCnt].dwFlags=0;
			m_SortCnt++;
		}
		return S_OK;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (Sorted==TRUE)
	{
		VariantInit(&tvPID);
		VariantChangeType(&tvPID,&PID,0,VT_I4);
		m_DBSortOrder[m_SortCnt].propid=MAKELONG(CEVT_LPWSTR,tvPID.lVal);
		m_DBSortOrder[m_SortCnt].dwFlags=CEDB_SORT_GENERICORDER;
		m_SortCnt++;
	}
#endif
	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::CreateTable(BSTR FileLocation, BSTR Name)
{
#ifdef UNDER_CE
CEOID	CeOid=0;
HANDLE	tHandle;

//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		TCHAR strSQL[1024],tStr[200];

		wsprintf(strSQL,TEXT("CREATE DATABASE '%s'"),FileLocation);
		HRESULT hr=m_RS->Open(_variant_t(strSQL),_variant_t(TEXT("")),adOpenForwardOnly , adLockReadOnly , 1);
		wsprintf(strSQL,TEXT("DROP TABLE %s"),Name);
		hr=m_RS->Open(_variant_t(strSQL),_variant_t(FileLocation),adOpenForwardOnly , adLockReadOnly , 1);
		wsprintf(strSQL,TEXT("CREATE TABLE %s ("),Name);
		for (int i=0; i<m_SortCnt; i++)
		{
			wsprintf(tStr,TEXT("Fld%d varchar(200)"),HIWORD(m_DBSortOrder[i].propid));
			wcscat(strSQL,tStr);
			if (i<m_SortCnt-1)
				wcscat(strSQL,TEXT(","));
			else
				wcscat(strSQL,TEXT(")"));
		}
		hr=m_RS->Open(_variant_t(strSQL),_variant_t(FileLocation),adOpenForwardOnly , adLockReadOnly , 1);
		m_SortCnt=0;
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************

	tHandle = CeOpenDatabase(&CeOid,Name,0,0,NULL);          	
	if (tHandle!= INVALID_HANDLE_VALUE)
	{
		CloseHandle(tHandle);
		CeDeleteDatabase(CeOid);
	}
	if ((CeOid = CeCreateDatabase(Name,PCDM_DB,
      m_SortCnt,m_DBSortOrder))==NULL)
		return S_FALSE;
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::OpenTable(BSTR FileLocation, BSTR Name, VARIANT PID, long *Handle)
{
#ifdef UNDER_CE
CEOID	CeOid=0;
HANDLE	hDataBase; 
CEPROPID	tPID=0;
VARIANT tvPID;

	VariantInit(&tvPID);
	VariantChangeType(&tvPID,&PID,0,VT_I4);
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
TCHAR strSQL[1024],tStr[200];
HRESULT hr;
		wsprintf(strSQL,TEXT("SELECT * FROM %s "),Name);
		wsprintf(tStr,TEXT("Order By Fld%d "),tvPID.lVal);
		wcscat(strSQL,tStr);
		hr=m_RS->Open(_variant_t(strSQL),_variant_t(FileLocation),adOpenKeyset , adLockOptimistic , 1);
		*Handle=(long)m_RS;
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************

	for (int i=0;i<m_SortCnt;i++)
	{
		if (HIWORD(m_DBSortOrder[i].propid)==tvPID.lVal)
		{
			tPID=MAKELONG(LOWORD(m_DBSortOrder[i].propid),tvPID.lVal);
			break;
		}
	}
	hDataBase = CeOpenDatabase(&CeOid,Name,tPID,0,NULL);          	
	if (hDataBase == INVALID_HANDLE_VALUE)
	{
		*Handle=0;
		return S_FALSE;	
	}
	*Handle=(long)hDataBase;
	VariantCopy(&m_ActPID,&PID);
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::CloseTable(long Handle)
{
	m_SortCnt=0;
	m_rfldCnt=0;
#ifdef UNDER_CE
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		HRESULT hr=m_RS->Close();
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	CloseHandle((HANDLE)Handle);
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::MoveFirst(long Handle)
{
#ifdef UNDER_CE
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		HRESULT hr=m_RS->MoveFirst();
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (!(m_curRec=CeSeekDatabase((HANDLE)Handle,CEDB_SEEK_BEGINNING, 0, &m_dwIndex)))
		return S_FALSE;
#endif
	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::MoveLast(long Handle)
{
#ifdef UNDER_CE
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		HRESULT hr=m_RS->MoveLast();
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (!(m_curRec=CeSeekDatabase((HANDLE)Handle, CEDB_SEEK_END,0, &m_dwIndex)))
		return S_FALSE;
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::MoveNext(long Handle)
{
#ifdef UNDER_CE
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		HRESULT hr=m_RS->MoveNext();
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (!(m_curRec=CeSeekDatabase((HANDLE)Handle, CEDB_SEEK_CURRENT, 1, &m_dwIndex)))
		return S_FALSE;
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::MovePrevious(long Handle)
{
#ifdef UNDER_CE
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		HRESULT hr=m_RS->MovePrevious();
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (!(m_curRec=CeSeekDatabase((HANDLE)Handle, CEDB_SEEK_CURRENT, -1, &m_dwIndex)))
		return S_FALSE;
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::FindRecord(long Handle, VARIANT PID, VARIANT Value)
{
#ifdef UNDER_CE
VARIANT tvPID,tvValue;
		
VariantInit(&tvPID);
VariantInit(&tvValue);
VariantChangeType(&tvPID,&PID,0,VT_I4);
VariantChangeType(&tvValue,&Value,0,VT_BSTR);
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	switch (m_useADO)
	{
		case PCDMADO_V2:
		case PCDMADO_V3:
			{
				Fields		*pFields;
				Field20		*pField20;
Field	*pField;
				HRESULT hr;
				TCHAR tFldName[10];
				VARIANT_BOOL	tBOF,tEOF;
				VARIANT value,tBookMark;

				VariantInit(&tBookMark);
				m_RS->get_Bookmark(&tBookMark);
				m_RS->get_BOF(&tBOF);
				m_RS->get_EOF(&tEOF);
				if(!(tBOF==VARIANT_TRUE && tEOF==VARIANT_TRUE))
				{
					while (tEOF!=VARIANT_TRUE)
					{
						m_RS->get_Fields(&pFields);
						wsprintf(tFldName,TEXT("Fld%d"),tvPID.lVal);
	if (m_useADO==PCDMADO_V3)
	{
		hr=pFields->get_Item(_variant_t(tFldName),(struct Field **)&pField);
		pField->get_Value(&value);
	}
	else
	{
						hr=pFields->get_Item(_variant_t(tFldName),(struct Field **)&pField20);
						pField20->get_Value(&value);
	}
						VariantChangeType(&value,&value,0,VT_BSTR);	// just to be sure...
						if (value.vt==VT_BSTR && tvValue.vt==VT_BSTR)
						{
							if (!(CompareString(LOCALE_USER_DEFAULT,NORM_IGNORECASE,value.bstrVal,-1,tvValue.bstrVal, -1)-2))
							{
								hr=S_OK;
								break;
							}
						}
						hr=m_RS->MoveNext(); 
						hr=m_RS->get_EOF(&tEOF);
					}
				}
				if (FAILED(hr) || tEOF==VARIANT_TRUE)
					m_RS->put_Bookmark(tBookMark);
				return hr;
			}
			break;
		case 1:
			{
				VARIANT tBookMark;
				TCHAR tFldName[10];
				VariantInit(&tBookMark);

				HRESULT hr=m_RS->get_Bookmark(&tBookMark);
				wsprintf(tFldName,TEXT("Fld%d='%s'"),tvPID.lVal,tvValue.bstrVal);
				hr=m_RS->Find(tFldName,0,adSearchForward,tBookMark);
				if (FAILED(hr))
					m_RS->put_Bookmark(tBookMark);
				return hr;
			}
			break;
		default:
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
			CEPROPVAL tPropVal;
			DWORD	tdwIndex;
		
			if (tvPID.lVal!=m_ActPID.lVal) return S_FALSE;
			tPropVal.wLenData = 0;
			tPropVal.wFlags = 0;
			tPropVal.propid=MAKELONG(CEVT_LPWSTR,m_ActPID.lVal);
			tPropVal.val.lpwstr=tvValue.bstrVal;
		
			tdwIndex=m_dwIndex;
			if (!(m_curRec=CeSeekDatabase((HANDLE)Handle,CEDB_SEEK_VALUEFIRSTEQUAL,(DWORD)&tPropVal, &tdwIndex)))
			{
				m_curRec=CeSeekDatabase((HANDLE)Handle, CEDB_SEEK_BEGINNING, m_dwIndex, &m_dwIndex);
				return S_FALSE;
			}
			m_dwIndex=tdwIndex;
			break;
	}
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::AddNewRecord(long Handle)
{
#ifdef UNDER_CE
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		_variant_t	vaEmpty;
		HRESULT hr=m_RS->AddNew(vaEmpty,vaEmpty); 
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	m_curRec=0;
#endif
	m_wfldCnt=0;

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::SetValue(VARIANT PID, VARIANT Value)
{
#ifdef UNDER_CE
VARIANT tValue,tvPID;

	if (m_wfldCnt>9) return S_FALSE; 
	VariantInit(&tValue);
	VariantChangeType(&tValue,&Value,0,VT_BSTR);
	VariantInit(&tvPID);
	VariantChangeType(&tvPID,&PID,0,VT_I4);
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		Fields	*pFields;
		Field	*pField;
		Field20	*pField20;
		TCHAR tFldName[10];

		HRESULT hr=m_RS->get_Fields(&pFields);
		wsprintf(tFldName,TEXT("Fld%d"),tvPID.lVal);
	
		if (m_useADO==PCDMADO_V3)
		{
			hr=pFields->get_Item(_variant_t(tFldName),&pField);
			hr=pField->put_Value(tValue);
		}
		else
		{
			hr=pFields->get_Item(_variant_t(tFldName),(struct Field **)&pField20);
			hr=pField20->put_Value(tValue);
		}
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	m_wFields[m_wfldCnt].propid=MAKELONG(CEVT_LPWSTR,tvPID.lVal);
	m_BStr[m_wfldCnt]=SysAllocString(tValue.bstrVal);
	m_wFields[m_wfldCnt].val.lpwstr=m_BStr[m_wfldCnt];
	m_wFields[m_wfldCnt].wLenData = 0;
	m_wFields[m_wfldCnt].wFlags = 0;
	m_wfldCnt++;
#endif
	return S_OK;
}


STDMETHODIMP CPCDMAccessDB::WriteRecord(long DBHandle)
{
#ifdef UNDER_CE
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		_variant_t	vaEmpty;
		HRESULT hr=m_RS->Update(vaEmpty,vaEmpty);
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if(!CeWriteRecordProps((HANDLE)DBHandle, m_curRec, m_wfldCnt, m_wFields) )
		return S_FALSE; 
	for (int i=0;i<m_wfldCnt;i++)
		SysFreeString(m_BStr[i]);	
	m_wfldCnt=0;
#endif

	return S_OK;
}

STDMETHODIMP CPCDMAccessDB::ReadRecord(long DBHandle, long *Count)
{
#ifdef UNDER_CE
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		Fields			*pFields;
		long tCnt;

		HRESULT hr=m_RS->get_Fields(&pFields);
		hr=pFields->get_Count(&tCnt);
		*Count=tCnt;
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
LPBYTE	pData=NULL;
DWORD	cbData=0;

	m_rfldCnt=0;
	if(!CeReadRecordProps((HANDLE)DBHandle, CEDB_ALLOWREALLOC, &m_rfldCnt,NULL,&pData,&cbData))
	{
		DWORD err=GetLastError();
		m_rFields=NULL;
		return S_FALSE; 
	}
	m_rFields=(CEPROPVAL*)pData;
	*Count=m_rfldCnt;
#endif
	return S_OK;
}


STDMETHODIMP CPCDMAccessDB::GetValue(VARIANT PID, VARIANT *Value)
{
#ifdef UNDER_CE
VARIANT		tvPID;

	VariantInit(Value);
	VariantInit(&tvPID);
	VariantChangeType(&tvPID,&PID,0,VT_I4);
//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
	if (m_useADO!=PCDMADO_NONE)
	{
		Fields			*pFields;
		Field			*pField;
		Field20			*pField20;
		long tCnt;
		HRESULT hr;
		TCHAR tFldName[10];

		VariantInit(Value);
		m_RS->get_Fields(&pFields);
		hr=pFields->get_Count(&tCnt);
		wsprintf(tFldName,TEXT("Fld%d"),tvPID.lVal);
		if (m_useADO==PCDMADO_V3)
		{
			hr=pFields->get_Item(_variant_t(tFldName),&pField);
			hr=pField->get_Value(Value);
		}
		else
		{
			hr=pFields->get_Item(_variant_t(tFldName),(struct Field **)&pField20);
			hr=pField20->get_Value(Value);
		}
		return hr;
	}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
CEPROPVAL	*Flds=NULL;

	if (m_rFields==NULL || m_rfldCnt==0) return S_FALSE; 
	for (int i=0;i<m_rfldCnt;i++)
	{
		if (HIWORD(m_rFields[i].propid)==tvPID.lVal)
		{
			Flds=&m_rFields[i];
			break;
		}
	}
	if (Flds==NULL) return S_FALSE;

	Value->vt=VT_BSTR;
	Value->bstrVal=SysAllocString((TCHAR*)Flds->val.lpwstr);
#endif
	return S_OK;
}

//<BOOK_ADDON STEP5 Chapter 8.4.2> *********************************
STDMETHODIMP CPCDMAccessDB::Execute(BSTR FileLocation, BSTR Command)
{
#ifdef UNDER_CE
	if (m_useADO!=PCDMADO_NONE)
	{
		HRESULT hr=m_RS->Open(_variant_t(Command),_variant_t(FileLocation),adOpenForwardOnly , adLockReadOnly , 1);
		return hr;
	}
#endif
	return S_OK;
}
//</BOOK_ADDON STEP5 Chapter 8.4.2> *********************************

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91小视频在线| 欧美日韩亚洲另类| 国内精品写真在线观看| 亚洲国产乱码最新视频| 亚洲一区二区三区四区中文字幕| 亚洲精品中文在线| 亚洲国产综合在线| 五月天久久比比资源色| 日本视频中文字幕一区二区三区| 免费久久精品视频| 国内精品久久久久影院色 | 色综合中文字幕国产| 色婷婷综合久久久| 6080国产精品一区二区| 精品日韩欧美在线| 欧美极品少妇xxxxⅹ高跟鞋| 中文字幕一区二区三区视频| 一区二区三区四区精品在线视频| 亚洲成人自拍网| 国产一区美女在线| 99久久精品国产毛片| 91精品综合久久久久久| 久久网站热最新地址| **性色生活片久久毛片| 五月激情丁香一区二区三区| 国产麻豆精品久久一二三| 91一区二区三区在线播放| 337p亚洲精品色噜噜噜| 国产日韩精品一区二区浪潮av| 国产精品成人一区二区三区夜夜夜| 亚洲理论在线观看| 蜜臀久久久久久久| av激情亚洲男人天堂| 日韩一区二区免费在线观看| 欧美国产日产图区| 日韩激情中文字幕| 99热这里都是精品| 欧美一区二区三区视频在线| 久久久久青草大香线综合精品| 一区二区三区四区在线| 久久99精品久久只有精品| 91婷婷韩国欧美一区二区| 欧美大胆一级视频| 亚洲夂夂婷婷色拍ww47| 国产麻豆成人精品| 欧美一区二区三区性视频| 日韩毛片精品高清免费| 国产精品18久久久久久久久 | 国内精品伊人久久久久影院对白| 91美女在线观看| 久久久久久久国产精品影院| 亚洲成人免费视频| 91麻豆国产福利在线观看| 久久久不卡网国产精品一区| 石原莉奈一区二区三区在线观看| www.av精品| 国产欧美一区二区三区在线看蜜臀| 午夜亚洲福利老司机| 91国偷自产一区二区开放时间| 久久久精品免费网站| 精品一区二区三区视频在线观看 | 99精品在线观看视频| 久久久高清一区二区三区| 另类小说图片综合网| 4hu四虎永久在线影院成人| 一区二区三区四区在线播放| 不卡的av中国片| 国产精品久久午夜| eeuss鲁片一区二区三区在线观看| 久久先锋影音av| 国产主播一区二区三区| 日韩精品一区二区在线观看| 美洲天堂一区二卡三卡四卡视频| 欧美日韩国产色站一区二区三区| 一区二区三区四区在线播放| 欧美午夜片在线观看| 亚洲国产一区二区三区青草影视 | 蜜桃久久精品一区二区| 欧美一区二区在线不卡| 日韩av不卡一区二区| 宅男在线国产精品| 看电影不卡的网站| 26uuu久久天堂性欧美| 激情五月激情综合网| 国产亚洲一二三区| av一区二区三区四区| 亚洲精品日韩综合观看成人91| 日本高清不卡在线观看| 亚洲综合色区另类av| 欧美日韩1区2区| 另类小说欧美激情| 欧美国产日产图区| 91成人免费电影| 婷婷夜色潮精品综合在线| 日韩欧美自拍偷拍| 国产91丝袜在线观看| 亚洲青青青在线视频| 在线不卡a资源高清| 国产精品一区在线| 亚洲精品国产精品乱码不99| 777xxx欧美| 国产成人久久精品77777最新版本| 亚洲欧洲www| 欧美高清hd18日本| 国产成人av一区| 亚洲国产综合视频在线观看| 欧美成人乱码一区二区三区| 波多野结衣精品在线| 婷婷开心激情综合| 国产精品无人区| 69堂亚洲精品首页| 成人自拍视频在线观看| 亚洲国产成人高清精品| 国产午夜精品理论片a级大结局| 在线免费av一区| 国产成人免费视频网站 | 日韩主播视频在线| 中文字幕乱码久久午夜不卡| 欧美日韩三级视频| 成人黄色av网站在线| 午夜不卡在线视频| 国产精品二三区| 久久久影视传媒| 欧美丰满美乳xxx高潮www| 成人妖精视频yjsp地址| 91国偷自产一区二区开放时间| 精品一区二区三区香蕉蜜桃| 一区二区成人在线视频| 中文在线一区二区| 337p日本欧洲亚洲大胆精品| 欧美精品第1页| 欧美日韩性生活| 色婷婷综合视频在线观看| proumb性欧美在线观看| 国产精品一区不卡| 蜜桃视频免费观看一区| 丝袜美腿亚洲综合| 亚洲国产成人porn| 亚洲色大成网站www久久九九| 国产日产欧美一区二区视频| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一区二区三区思思人| 欧美日韩一级片在线观看| 91成人国产精品| 欧洲av一区二区嗯嗯嗯啊| 94色蜜桃网一区二区三区| 99热精品一区二区| av电影在线观看完整版一区二区| 风间由美一区二区三区在线观看 | 日本三级韩国三级欧美三级| 亚洲va在线va天堂| 五月天丁香久久| 日韩av中文字幕一区二区三区| 午夜精品久久久久久久99樱桃| 亚洲一区二区三区四区的| 亚州成人在线电影| 视频一区二区不卡| 麻豆久久久久久| 国产精品1024久久| 懂色av一区二区夜夜嗨| 99久精品国产| 欧美制服丝袜第一页| 欧美日本一区二区在线观看| 91精品国产欧美一区二区18 | 欧美日韩成人高清| 91精品国产免费久久综合| 日韩欧美在线网站| 久久久国际精品| 欧美精品一区二区高清在线观看| 欧美成人aa大片| 欧美国产日韩一二三区| 亚洲色图20p| 奇米在线7777在线精品| 国产精品一级黄| 91色婷婷久久久久合中文| 欧美另类一区二区三区| 日韩免费观看2025年上映的电影 | 欧美日韩成人在线| 精品国产1区二区| 国产精品视频看| 日韩中文字幕亚洲一区二区va在线 | 精品无人码麻豆乱码1区2区| 国产精品1区2区| 欧美日韩中文一区| 亚洲综合成人在线| 国产在线精品一区二区夜色 | 国产日韩高清在线| 图片区日韩欧美亚洲| 国产高清不卡二三区| 欧美系列在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲成人自拍偷拍| zzijzzij亚洲日本少妇熟睡| 欧美精品 日韩| 自拍偷拍亚洲综合| 国产伦精品一区二区三区免费迷 | 丁香天五香天堂综合| 欧美日韩国产综合一区二区三区| 国产丝袜在线精品| 免费看黄色91|