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

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

?? dlgpgasyncrdwr.cpp

?? 1394測試程序
?? CPP
字號:
// DlgPgAsyncRdWr.cpp : implementation file
//

#include "stdafx.h"
#include "TestApp.h"
#include "DlgPgAsyncRdWr.h"
#include "ddx_ex.h"
//#include "DlgAllocateAddressRange.h"
//#include "NmDlgFileToAsync.h"
//#include "NmDlgAsyncToFile.h"
//#include "NmDlgAsyncSlave.h"
//#include "NmDlgRxSlave.h"
//#include "NmDlgTxSlave.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgPgAsyncRdWr dialog


CDlgPgAsyncRdWr::CDlgPgAsyncRdWr(CWnd* pParent /*=NULL*/)
	: CDialogPage(CDlgPgAsyncRdWr::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgPgAsyncRdWr)		
	m_bIncrement = FALSE;
	m_bPingOrNoStatus = FALSE;
	m_nReadOrWrite = 0;
	m_dwGenerationCount = 0;
	m_bGeneration = TRUE;
	m_dwDataSize = 1024;
	//}}AFX_DATA_INIT
}


void CDlgPgAsyncRdWr::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgPgAsyncRdWr)
	DDX_Control(pDX, IDC_STATIC_READ_WRITE, m_StaticReadOrWrite);
	DDX_Control(pDX, IDC_BUTTON_READ_WRITE, m_ButtonReadOrWrite);
	DDX_Control(pDX, IDC_CHECK_READ_WRITE, m_ButtonPingOrNoStatus);
	DDX_Check(pDX, IDC_CHECK_INCREMENT, m_bIncrement);
	DDX_Check(pDX, IDC_CHECK_READ_WRITE, m_bPingOrNoStatus);
	DDX_Radio(pDX, IDC_RADIO_READ, m_nReadOrWrite);
	DDX_Text(pDX, IDC_EDIT_ASYNC_GENERATION_COUNT, m_dwGenerationCount);
	DDV_MinMaxDWord(pDX, m_dwGenerationCount, 0, 1000);
	DDX_Check(pDX, IDC_CHECK_Generation, m_bGeneration);
	//}}AFX_DATA_MAP

	UINT nIDPrompt = IDS_STRING_INVALID_NUM;
	LPCTSTR format;

	// address offset
	format = _T("0x%X");

	DDX_TextEx(pDX, IDC_EDIT_READ_OFFHI, format, m_dwOffHi, nIDPrompt);
	DDX_TextEx(pDX, IDC_EDIT_READ_OFFLO, format, m_dwOffLo, nIDPrompt);
	
	// data size and block size
	format = _T("%d");

	DDX_TextEx(pDX, IDC_EDIT_READ_DATASIZE, format, m_dwDataSize, nIDPrompt);
	DDX_TextEx(pDX, IDC_EDIT_READ_BLOCKSIZE, format, m_dwBlockSize, nIDPrompt);

	// flags

	// data values for write
	format = _T("0x%02X ");
	nIDPrompt = IDS_STRING_INVALID_BUFFER;
	DDX_TextEx(pDX, IDC_EDIT_WRITE_DATA, format, m_Buffer, nIDPrompt);

}


BEGIN_MESSAGE_MAP(CDlgPgAsyncRdWr, CDialog)
	//{{AFX_MSG_MAP(CDlgPgAsyncRdWr)
	ON_BN_CLICKED(IDC_BUTTON_READ_WRITE, OnButtonReadWrite)
	ON_BN_CLICKED(IDC_RADIO_WRITE, OnRadioWrite)
	ON_BN_CLICKED(IDC_RADIO_READ, OnRadioRead)
	ON_BN_CLICKED(IDC_CHECK_Generation, OnCHECKGeneration)
	ON_BN_CLICKED(IDC_BUTTON_CONTINOUT_READ, OnButtonContinoutRead)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgPgAsyncRdWr message handlers

BOOL CDlgPgAsyncRdWr::OnInitDialog() 
{
	CDialog::OnInitDialog();
	GetDlgItem(IDC_EDIT_WRITE_DATA)->EnableWindow(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgPgAsyncRdWr::OnButtonReadWrite() 
{
	DWORD Status;
	if ( 0 == m_nReadOrWrite )
	{
		ASYNC_READ      asyncRead;
		/*
		typedef struct _ASYNC_READ {    
			ULONG           bGetGeneration;
			IO_ADDRESS      DestinationAddress;
			ULONG           nNumberOfBytesToRead;
			ULONG           nBlockSize;
			ULONG           fulFlags;
			ULONG           ulGeneration;//32位,共四個字節
			UCHAR           Data[1];//UCHAR 8位,一個字節
		} ASYNC_READ, *PASYNC_READ;
		typedef struct _NODE_ADDRESS {
			USHORT      NA_Node_Number:6;    // Bits 10-15
			USHORT      NA_Bus_Number:10;    // Bits 0-9
		} NODE_ADDRESS, *PNODE_ADDRESS;

		typedef struct _ADDRESS_OFFSET {
			USHORT        Off_High;
			ULONG         Off_Low;
		} ADDRESS_OFFSET, *PADDRESS_OFFSET;

		typedef struct _IO_ADDRESS {
			NODE_ADDRESS        IA_Destination_ID;
			ADDRESS_OFFSET      IA_Destination_Offset;
		} IO_ADDRESS, *PIO_ADDRESS;
		*/
/*
		time_t ltimeLa;
		_tzset();
		time( &ltimeLa );
*/
		//得到用戶指定的值
		UpdateData(TRUE);
		if( m_bGeneration )
			asyncRead.bGetGeneration = TRUE;
		else asyncRead.bGetGeneration = FALSE;
		asyncRead.ulGeneration = m_dwGenerationCount;
		asyncRead.DestinationAddress.IA_Destination_Offset.Off_High = (USHORT)m_dwOffHi;
		asyncRead.DestinationAddress.IA_Destination_Offset.Off_Low = (ULONG)m_dwOffLo;
		asyncRead.nNumberOfBytesToRead = m_dwDataSize;
		asyncRead.nBlockSize = m_dwBlockSize;
		asyncRead.fulFlags = 0;
		if( m_bIncrement )
			asyncRead.fulFlags  |= ASYNC_FLAGS_NONINCREMENTING;
		if( m_bPingOrNoStatus )
			asyncRead.fulFlags |= ASYNC_FLAGS_PING;
	//	asyncRead.ulElapsedTime = 0;
		
		//開辟傳給驅動的存儲空間
		ULONG           ulBufferSize;
		PASYNC_READ     pAsyncRead = NULL;
	    
		ulBufferSize = sizeof(ASYNC_READ) + asyncRead.nNumberOfBytesToRead;//字節為單位
		pAsyncRead = (PASYNC_READ)LocalAlloc(LPTR, ulBufferSize);
		FillMemory(pAsyncRead, ulBufferSize, 0);//開辟的每一個字節都為零
		*pAsyncRead = asyncRead;
		
		LARGE_INTEGER  litmp ;
		LONGLONG  QPart1,QPart2 ;
		double  dfMinus, dfFreq, dfTim ;

		QueryPerformanceFrequency(&litmp) ; 
		 // 獲得計數器的時鐘頻率
		dfFreq = (double)litmp.QuadPart ;

		QueryPerformanceCounter(&litmp) ; 
		 // 獲得初始值
		QPart1 = litmp.QuadPart ;

		Status = g_CurrentDev.AsyncRead(pAsyncRead,ulBufferSize);

		QueryPerformanceCounter(&litmp) ; 
		 // 獲得中止值
		QPart2 = litmp.QuadPart ;

		dfMinus = (double)(QPart2 - QPart1) ;
		dfTim = dfMinus / dfFreq ;  
		// 獲得對應的時間值
		CString strTime;
		strTime.Format("%f秒 \r\n", dfTim);
		MessageBox(strTime);

		if ( Status == STATUS_SUCCESS ) 
		{
			//輸出讀入的數據			
			PrintOut("Read Data:"NL);

			ULONG ulElapsedTime = pAsyncRead->ulElapsedTime;
			CString str;
			str.Format("%d\n",ulElapsedTime);
			PrintOut(str.GetBufferSetLength( str.GetLength() ) );
			str.ReleaseBuffer();

			CString strOut;
			for (int i=0; i<(asyncRead.nNumberOfBytesToRead/sizeof(ULONG)); i++) 
			{
                PULONG ulTemp;
                ulTemp = (PULONG)&pAsyncRead->Data[i*sizeof(ULONG)];
				strOut.Format("Quadlet[0x%x] = 0x%x\r\n",i,(ULONG)*ulTemp);
                PrintOut(strOut.GetBufferSetLength( strOut.GetLength() ) );
				strOut.ReleaseBuffer();
            }
/*
			// write the results to output window
			PrintOut(NL"%d bytes successfully read:", BytesReturned);
			for (DWORD i=0; i<BytesReturned; i++) 
			{
				if ( (i % 4) == 0 ) {
					PrintOut(NL"  ");
				}
				PrintOut("0x%02X ", buf[i]);
			}

			CString str;
			str.Format(":%d",Err);		
			PrintOut( str.GetBufferSetLength( str.GetLength() ) );
			str.ReleaseBuffer();
			PrintOut(NL);
			*/
	 	}
		else 
		{
			Status = GetLastError();
			PrintOut(NL"AsyncRead failed"NL);
			PrintError(Status);
		}
		if( NULL != pAsyncRead )
			LocalFree(pAsyncRead);
/*			
		time_t ltimeLb;
		_tzset();
		time( &ltimeLb );

		double lLoadTime = ltimeLb - ltimeLa;	
		CString strLoadTime;
		strLoadTime.Format("%f秒 \r\n", lLoadTime);
		MessageBox(strLoadTime);*/
	}
	else if ( 1 == m_nReadOrWrite )
	{
		ASYNC_WRITE      asyncWrite;
		/*		
		typedef struct _ASYNC_WRITE {
			ULONG           bGetGeneration;
			IO_ADDRESS      DestinationAddress;
			ULONG           nNumberOfBytesToWrite;
			ULONG           nBlockSize;
			ULONG           fulFlags;
			ULONG           ulGeneration;
			UCHAR           Data[1];
		} ASYNC_WRITE, *PASYNC_WRITE;
		*/
		//得到用戶指定的值
		UpdateData(TRUE);
		if( m_bGeneration )
			asyncWrite.bGetGeneration = TRUE;
		else asyncWrite.bGetGeneration = FALSE;
		asyncWrite.DestinationAddress.IA_Destination_ID.NA_Bus_Number = 0x3FF;
		asyncWrite.DestinationAddress.IA_Destination_ID.NA_Node_Number = 0;
		asyncWrite.DestinationAddress.IA_Destination_Offset.Off_High = (USHORT)m_dwOffHi;
		asyncWrite.DestinationAddress.IA_Destination_Offset.Off_Low = (ULONG)m_dwOffLo;
		asyncWrite.nNumberOfBytesToWrite = m_dwDataSize;
		asyncWrite.nBlockSize = m_dwBlockSize;
		asyncWrite.fulFlags = 0;
		if( m_bIncrement )
			asyncWrite.fulFlags |= ASYNC_FLAGS_NONINCREMENTING;
		if( m_bPingOrNoStatus )
			asyncWrite.fulFlags |= ASYNC_FLAGS_PING;
		asyncWrite.ulGeneration = m_dwGenerationCount;
		
		//開辟傳給驅動的存儲空間
		PASYNC_WRITE     pAsyncWrite = NULL;
		ULONG           ulBufferSize;

		ulBufferSize = sizeof(ASYNC_WRITE) + asyncWrite.nNumberOfBytesToWrite;
		pAsyncWrite = (PASYNC_WRITE)LocalAlloc(LPTR, ulBufferSize);
		FillMemory(pAsyncWrite, ulBufferSize, 0);
		*pAsyncWrite = asyncWrite;
		//填充要寫的數據
		for (int i=0; i<asyncWrite.nNumberOfBytesToWrite/sizeof(ULONG); i++) 
		{
			CopyMemory((ULONG *)&pAsyncWrite->Data+i, (ULONG *)&i, sizeof(ULONG));
		}
/*		//輸出寫的數據
		for (i=0; i<(asyncWrite.nNumberOfBytesToWrite/sizeof(ULONG)); i++) 
		{
			PULONG ulTemp;

			ulTemp = (PULONG)&pAsyncWrite->Data[i*sizeof(ULONG)];
	  	}
*/
		LARGE_INTEGER  litmp ;
		LONGLONG  QPart1,QPart2 ;
		double  dfMinus, dfFreq, dfTim ;

		QueryPerformanceFrequency(&litmp) ; 
		 // 獲得計數器的時鐘頻率
		dfFreq = (double)litmp.QuadPart ;

		QueryPerformanceCounter(&litmp) ; 
		 // 獲得初始值
		QPart1 = litmp.QuadPart ;
		Status = g_CurrentDev.AsyncWrite(pAsyncWrite,ulBufferSize);
		
		QueryPerformanceCounter(&litmp) ; 
		 // 獲得中止值
		QPart2 = litmp.QuadPart ;

		dfMinus = (double)(QPart2 - QPart1) ;
		dfTim = dfMinus / dfFreq ;  
		// 獲得對應的時間值
		CString strTime;
		strTime.Format("%f秒 \r\n", dfTim);
		MessageBox(strTime);

		if ( Status == STATUS_SUCCESS ) 
		{
			PrintOut(NL"AsyncWrite Success!"NL);
		}
		else
		{
			Status = GetLastError();
			PrintOut(NL"AsyncWrite failed"NL);
			PrintError(Status);
		}
		if ( NULL != pAsyncWrite )
			LocalFree(pAsyncWrite);
	}
}

//WRITE 單選按鈕
void CDlgPgAsyncRdWr::OnRadioWrite() 
{	
	if( 1 == m_nReadOrWrite )
		return;	
	m_StaticReadOrWrite.SetWindowText("to Address Offset");
	m_ButtonPingOrNoStatus.SetWindowText("No Status");
	m_ButtonReadOrWrite.SetWindowText("Async Write");
	GetDlgItem(IDC_EDIT_WRITE_DATA)->EnableWindow(TRUE);
	m_nReadOrWrite = 1;
	UpdateData(FALSE);
}

//READ 單選按鈕
void CDlgPgAsyncRdWr::OnRadioRead() 
{
	if( 0 == m_nReadOrWrite )
		return;	
	m_StaticReadOrWrite.SetWindowText("from Address Offset");
	m_ButtonPingOrNoStatus.SetWindowText("Ping packet");
	m_ButtonReadOrWrite.SetWindowText("Async Read");
	GetDlgItem(IDC_EDIT_WRITE_DATA)->EnableWindow(FALSE);
	m_nReadOrWrite = 0;
	UpdateData(FALSE);
	
}

//使能m_dwGenerationCount
void CDlgPgAsyncRdWr::OnCHECKGeneration() 
{
	if( m_bGeneration )//以前為TRUE
	{
		m_bGeneration = FALSE;
		GetDlgItem(IDC_EDIT_ASYNC_GENERATION_COUNT)->EnableWindow(TRUE);
	}
	else//以前為FALSE
	{
		m_dwGenerationCount = 0;
		GetDlgItem(IDC_EDIT_ASYNC_GENERATION_COUNT)->EnableWindow(FALSE);
		m_bGeneration = TRUE;
	}
	UpdateData(FALSE);
}

void CDlgPgAsyncRdWr::OnButtonContinoutRead() 
{
	DWORD Status;
	if ( 0 == m_nReadOrWrite )
	{
		/*
		time_t ltimeLa;
		_tzset();
		time( &ltimeLa );*/
		BYTE data[100][1024];
//		for(int nTime = 0;nTime < 100;nTime++)
//		{
			ASYNC_READ      asyncRead;			

			//得到用戶指定的值
			UpdateData(TRUE);
			if( m_bGeneration )
				asyncRead.bGetGeneration = TRUE;
			else asyncRead.bGetGeneration = FALSE;
			asyncRead.ulGeneration = m_dwGenerationCount;
			asyncRead.DestinationAddress.IA_Destination_Offset.Off_High = (USHORT)m_dwOffHi;
			asyncRead.DestinationAddress.IA_Destination_Offset.Off_Low = (ULONG)m_dwOffLo;
			asyncRead.nNumberOfBytesToRead = m_dwDataSize;
			asyncRead.nBlockSize = m_dwBlockSize;
			asyncRead.fulFlags = 0;
			if( m_bIncrement )
				asyncRead.fulFlags  |= ASYNC_FLAGS_NONINCREMENTING;
			if( m_bPingOrNoStatus )
				asyncRead.fulFlags |= ASYNC_FLAGS_PING;			
			asyncRead.ulElapsedTime = 0;
			
			//開辟傳給驅動的存儲空間
			ULONG           ulBufferSize;
			PASYNC_READ     pAsyncRead = NULL;
			
			ulBufferSize = sizeof(ASYNC_READ) + asyncRead.nNumberOfBytesToRead;//字節為單位
			pAsyncRead = (PASYNC_READ)LocalAlloc(LPTR, ulBufferSize);
			FillMemory(pAsyncRead, ulBufferSize, 0);//開辟的每一個字節都為零
			*pAsyncRead = asyncRead;
			//////
			LARGE_INTEGER  litmp ;
			LONGLONG  QPart1,QPart2 ;
			double  dfMinus, dfFreq, dfTim ;

			QueryPerformanceFrequency(&litmp) ; 
			 // 獲得計數器的時鐘頻率
			dfFreq = (double)litmp.QuadPart ;

			QueryPerformanceCounter(&litmp) ; 
			 // 獲得初始值
			QPart1 = litmp.QuadPart ;
			///////////
			for( int nn=0;nn<100;nn++ )
			{
				Status = g_CurrentDev.AsyncRead(pAsyncRead,ulBufferSize);
/*
				if ( Status == STATUS_SUCCESS ) 
				{
					//輸出讀入的數據			
					PrintOut("Read Data:"NL);
					ULONG ulElapsedTime = pAsyncRead->ulElapsedTime;
					CString str;
					str.Format("%d次:%d\n",nn,ulElapsedTime);
					PrintOut(str.GetBufferSetLength( str.GetLength() ) );
					str.ReleaseBuffer();
					/*
					CString strOut;
					for (int i=0; i<(asyncRead.nNumberOfBytesToRead/sizeof(ULONG)); i++) 
					{
						PULONG ulTemp;
						ulTemp = (PULONG)&pAsyncRead->Data[i*sizeof(ULONG)];
	//					data[nTime][i*sizeof(ULONG)] = pAsyncRead->Data[i*sizeof(ULONG)];
	//					data[nTime][i*sizeof(ULONG)+1] = pAsyncRead->Data[i*sizeof(ULONG)+1];
	//					data[nTime][i*sizeof(ULONG)+2] = pAsyncRead->Data[i*sizeof(ULONG)+2];
	//					data[nTime][i*sizeof(ULONG)+3] = pAsyncRead->Data[i*sizeof(ULONG)+3];
						strOut.Format("Quadlet[0x%x] = 0x%x\r\n",i,(ULONG)*ulTemp);
						PrintOut(strOut.GetBufferSetLength( strOut.GetLength() ) );
						strOut.ReleaseBuffer();
					}*/			/*
				}
				else 
				{
					Status = GetLastError();
				}*/
			}

			QueryPerformanceCounter(&litmp) ; 
			 // 獲得中止值
			QPart2 = litmp.QuadPart ;

			dfMinus = (double)(QPart2 - QPart1) ;
			dfTim = dfMinus / dfFreq ;  
			// 獲得對應的時間值
			CString strTime;
			strTime.Format("%f秒 \r\n", dfTim);
			MessageBox(strTime);

			if( NULL != pAsyncRead )
				LocalFree(pAsyncRead);
//		}
		/*
		time_t ltimeLb;
		 _tzset();
		time( &ltimeLb );

		double lLoadTime = ltimeLb - ltimeLa;
		
		CString strLoadTime;
		strLoadTime.Format("%f秒 \r\n", lLoadTime);
		MessageBox(strLoadTime);*/
/*		PrintOut(strLoadTime.GetBufferSetLength( strLoadTime.GetLength() ) );
		strLoadTime.ReleaseBuffer();*/		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品久久久久影院一蜜桃| 国产欧美久久久精品影院| 午夜激情久久久| 在线观看免费一区| 午夜电影网一区| 日韩欧美电影一区| 国产乱码精品一区二区三区忘忧草| 久久色中文字幕| 成人精品视频一区二区三区| 自拍偷拍亚洲激情| 7777精品伊人久久久大香线蕉超级流畅| 日日摸夜夜添夜夜添国产精品| 欧美tickle裸体挠脚心vk| 国产激情一区二区三区桃花岛亚洲| 国产精品久久免费看| 在线观看日产精品| 精久久久久久久久久久| 中文幕一区二区三区久久蜜桃| 在线观看国产91| 老司机免费视频一区二区三区| 国产亚洲欧美色| 91福利精品视频| 精品一二三四在线| 亚洲视频免费观看| 精品少妇一区二区三区视频免付费 | 国产午夜精品一区二区| 97精品视频在线观看自产线路二| 亚洲sss视频在线视频| 欧美成人性福生活免费看| jvid福利写真一区二区三区| 亚洲一区二区三区美女| 久久精品一区蜜桃臀影院| 色视频成人在线观看免| 蓝色福利精品导航| 亚洲精品欧美激情| www国产精品av| 欧美揉bbbbb揉bbbbb| 国产激情一区二区三区四区| 亚洲韩国精品一区| 国产精品麻豆99久久久久久| 91精品国产欧美一区二区18| 97久久精品人人澡人人爽| 激情国产一区二区| 亚洲午夜av在线| 国产精品久久久久久久久久免费看 | 亚洲欧美影音先锋| 日韩免费高清电影| 色94色欧美sute亚洲线路二| 国产福利视频一区二区三区| 免费成人在线影院| 亚洲一级片在线观看| 中文字幕在线观看不卡| 欧美精品一区二区三区在线| 在线不卡a资源高清| 97国产一区二区| 国产不卡高清在线观看视频| 久久国产夜色精品鲁鲁99| 亚洲国产毛片aaaaa无费看| 国产女人水真多18毛片18精品视频 | **性色生活片久久毛片| 久久精品一区蜜桃臀影院| 日韩精品一区二区三区蜜臀| 欧美男人的天堂一二区| 91精品福利在线| 99在线视频精品| 成人av电影在线| 国产不卡一区视频| 久久国产综合精品| 久久精品国产精品亚洲综合| 免费一级片91| 日本va欧美va瓶| 美女爽到高潮91| 免费在线观看成人| 免费人成网站在线观看欧美高清| 天天色 色综合| 五月婷婷另类国产| 青草av.久久免费一区| 午夜日韩在线观看| 日韩在线一区二区| 蓝色福利精品导航| 国产另类ts人妖一区二区| 国产一区二区福利| 成人av资源下载| 91免费视频大全| 欧美熟乱第一页| 7777精品伊人久久久大香线蕉最新版| 欧美精品乱码久久久久久| 欧美老肥妇做.爰bbww| 在线播放日韩导航| 日韩一级精品视频在线观看| 久久综合色天天久久综合图片| 久久免费的精品国产v∧| 亚洲国产精品ⅴa在线观看| 中文字幕中文字幕一区二区| 亚洲欧美日韩久久| 日韩在线播放一区二区| 久久不见久久见中文字幕免费| 国产又粗又猛又爽又黄91精品| 成人一区二区三区中文字幕| 91丝袜国产在线播放| 欧美三级中文字| 精品av综合导航| 国产精品免费久久久久| 亚洲亚洲人成综合网络| 免费成人在线视频观看| 成人中文字幕在线| 欧美亚日韩国产aⅴ精品中极品| 日韩一区二区三| 国产日韩欧美精品在线| 亚洲最新视频在线观看| 日韩高清一区在线| 成人黄色一级视频| 欧美日韩成人在线一区| 国产女人水真多18毛片18精品视频| 一区二区高清视频在线观看| 男男gaygay亚洲| 9i看片成人免费高清| 欧美日韩二区三区| 欧美国产精品久久| 性久久久久久久久久久久 | 国产99久久久国产精品| 91精品办公室少妇高潮对白| 欧美xxxx老人做受| 一区二区三区欧美日| 国产精品一区2区| 欧美日韩一区二区电影| 国产精品蜜臀在线观看| 老司机一区二区| 在线观看91精品国产入口| 久久精品在这里| 蜜桃一区二区三区在线| 色天天综合色天天久久| 国产清纯白嫩初高生在线观看91| 亚洲图片一区二区| 99国产精品久久| 久久久久久免费网| 奇米影视一区二区三区小说| 在线一区二区视频| 国产精品视频观看| 国产在线不卡一卡二卡三卡四卡| 欧美日韩精品一区二区三区| 日韩码欧中文字| 国产成人av电影在线| 精品久久国产97色综合| 日本午夜一区二区| 欧美视频自拍偷拍| 一区二区三区在线不卡| 成人av电影免费在线播放| 久久色.com| 老司机午夜精品| 91精品久久久久久蜜臀| 亚洲电影中文字幕在线观看| 色婷婷国产精品久久包臀| 国产精品久久久久aaaa樱花| 国产jizzjizz一区二区| 欧美刺激脚交jootjob| 日本中文一区二区三区| 欧美日韩在线播放三区| 夜夜嗨av一区二区三区四季av| 成人美女视频在线观看| 欧美国产日本韩| 国产mv日韩mv欧美| 国产欧美综合在线| 韩国三级中文字幕hd久久精品| 日韩欧美自拍偷拍| 免费的国产精品| 欧美精品一区二区三区在线播放 | 久久午夜电影网| 国产一区二区女| 久久久久97国产精华液好用吗| 精品一区二区在线免费观看| 日韩久久免费av| 国产在线不卡一区| 国产农村妇女毛片精品久久麻豆 | 精品三级在线观看| 国产一区二区三区免费观看| 国产视频一区在线播放| 成人福利视频在线| 亚洲三级理论片| 欧美午夜电影一区| 日韩二区三区在线观看| 日韩三级在线免费观看| 国产一区二区三区久久悠悠色av| 久久久久亚洲蜜桃| fc2成人免费人成在线观看播放| 国产精品毛片无遮挡高清| 91蜜桃婷婷狠狠久久综合9色| 一区二区免费在线| 欧美一区二区三区的| 韩国v欧美v亚洲v日本v| 中文字幕在线一区| 欧美综合一区二区| 蜜乳av一区二区| 国产精品麻豆视频| 欧美亚洲高清一区| 久久国产精品99久久久久久老狼| 中文字幕精品一区二区精品绿巨人 | 久久蜜桃av一区精品变态类天堂| 丰满亚洲少妇av| 亚洲一区二区四区蜜桃|