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

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

?? driver.cpp

?? windows ce 50 drive program
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************** *  * $Id: driver.cpp,v 1.1.1.1 2004/12/08 08:38:43 hychu Exp $ * * File: Main.cpp * * Copyright (c) 2000-2002 Davicom Inc.  All rights reserved. * ********************************************************************************/#include	"common.h"#include	"driver.h"#include	"device.h"#if	defined(PERF_TEST)#include	<winbase.h>ULONG	fnCallback(	PVOID	pVoid){	NIC_DRIVER_OBJECT * pobj;		pobj = (NIC_DRIVER_OBJECT*)pVoid;		// Set to highest priority	// BOOL ret;	// ret = CeSetThreadPriority(GetCurrentThread(), 0);	// wait 2 seconds...	NdisMSleep(2*1000*1000);		// one forever loop to trigger device interrupt handler	// period: 1 mS	for(;;)	{		pobj->m_pLower->DeviceInterruptEventHandler(0);		NdisMSleep(1000);	}		return 0;}	void	SpawnPerfThread(	PVOID	pVoid){	HANDLE	h;		h = CreateThread(		0,0,		fnCallback,		pVoid,		0,0);			}#endif#if	defined(DM9601)/* * About the wrapper handle and the intermediate handle... * The wrapper handle, obtained from NDIS, is the original of the driver. * Without this wrapper handle, we cannot do anything. * Unfortunately, we cannot get sufficient argument from USB loader to * ask one wrapper handle. * Current alternative is, to put this driver into NDIS registry as * it is a 'static' driver, thus, we can get the wrapper handle. * This wrapper handle should not be cleared even the USB device is plug'd * out. Or we cannot restart the NDIS function anymore. * */NDIS_HANDLE		ghNdisIntermediateHandle=NULL;UNICODE_STRING	guniRegistryPath;int	gnInstance=0;USB_HANDLE 			ghDevice;LPCUSB_FUNCS		glpUsbFuncs;LPCUSB_DEVICE		glpUsbDevice;LPCUSB_INTERFACE 	glpInterface;class USB_NIC_DRIVER : public NIC_DRIVER_OBJECT{public:	USB_NIC_DRIVER::USB_NIC_DRIVER(		NDIS_HANDLE 			MiniportHandle, 		NDIS_HANDLE 			WrapperConfigHandle,		USB_HANDLE 				hDevice, 		LPCUSB_FUNCS			lpUsbFuncs, 		LPCUSB_DEVICE			lpUsbDevice,		LPCUSB_INTERFACE 		lpInterface)		: NIC_DRIVER_OBJECT(MiniportHandle,WrapperConfigHandle)	{		m_usbHandle = hDevice;		m_usbpFuncs = lpUsbFuncs;		m_usbpDevice = lpUsbDevice;		m_usbpInterface = lpInterface;	}	USB_NIC_DRIVER::~USB_NIC_DRIVER(void)	{		PUTS(("usb deconstructor.\n"));	}		virtual void EDriverInitialize(		OUT PNDIS_STATUS OpenErrorStatus,		OUT PUINT SelectedMediaIndex, 		IN PNDIS_MEDIUM MediaArray, 		IN UINT MediaArraySize);	virtual	void DriverOnUsbNotify(U32);	public:	USB_HANDLE 			m_usbHandle;	LPCUSB_DEVICE		m_usbpDevice;	LPCUSB_FUNCS		m_usbpFuncs;	LPCUSB_INTERFACE 	m_usbpInterface;};void USB_NIC_DRIVER::EDriverInitialize(	OUT PNDIS_STATUS OpenErrorStatus,	OUT PUINT SelectedMediaIndex, 	IN PNDIS_MEDIUM MediaArray, 	IN UINT MediaArraySize){	m_pLower = DeviceEntry(this,NULL);		m_pLower->EDeviceSetUsbParameters(		m_usbHandle,m_usbpFuncs,m_usbpInterface);	NIC_DRIVER_OBJECT::EDriverInitialize(		OpenErrorStatus,		SelectedMediaIndex, 		MediaArray, 		MediaArraySize);		m_pLower->DeviceInitializeTimer();}void USB_NIC_DRIVER::DriverOnUsbNotify(	U32		uCode){	NdisIMDeInitializeDeviceInstance(m_NdisHandle);}extern "C" BOOL WINAPI	USBNotificationRoutine(	LPVOID	lpNotifyParam,	DWORD	dwCode,	LPDWORD	pdw1,	LPDWORD	pdw2,	LPDWORD	pdw3,	LPDWORD	pdw4){	((USB_NIC_DRIVER*)lpNotifyParam)->DriverOnUsbNotify(dwCode);		gnInstance--;	return TRUE;}#endif	/**************************************************************************************** * * Driver-wide global data declaration * ****************************************************************************************/NDIS_OID gszNICSupportedOid[] = {		OID_GEN_SUPPORTED_LIST,        OID_GEN_HARDWARE_STATUS,        OID_GEN_MEDIA_SUPPORTED,        OID_GEN_MEDIA_IN_USE,        OID_GEN_MEDIA_CONNECT_STATUS,        OID_GEN_MAXIMUM_SEND_PACKETS,        OID_GEN_VENDOR_DRIVER_VERSION,        OID_GEN_MAXIMUM_LOOKAHEAD,        OID_GEN_MAXIMUM_FRAME_SIZE,        OID_GEN_MAXIMUM_TOTAL_SIZE,        OID_GEN_MAC_OPTIONS,        OID_GEN_PROTOCOL_OPTIONS,        OID_GEN_LINK_SPEED,        OID_GEN_TRANSMIT_BUFFER_SPACE,        OID_GEN_RECEIVE_BUFFER_SPACE,        OID_GEN_TRANSMIT_BLOCK_SIZE,        OID_GEN_RECEIVE_BLOCK_SIZE,        OID_GEN_VENDOR_ID,        OID_GEN_VENDOR_DESCRIPTION,        OID_GEN_CURRENT_PACKET_FILTER,        OID_GEN_CURRENT_LOOKAHEAD,        OID_GEN_DRIVER_VERSION,        OID_GEN_XMIT_OK,        OID_GEN_RCV_OK,        OID_GEN_XMIT_ERROR,        OID_GEN_RCV_ERROR,        OID_GEN_RCV_NO_BUFFER,        OID_GEN_RCV_CRC_ERROR,        OID_802_3_PERMANENT_ADDRESS,        OID_802_3_CURRENT_ADDRESS,        OID_802_3_MULTICAST_LIST,        OID_802_3_MAXIMUM_LIST_SIZE,        OID_802_3_RCV_ERROR_ALIGNMENT,        OID_802_3_XMIT_ONE_COLLISION,        OID_802_3_XMIT_MORE_COLLISIONS,        OID_802_3_XMIT_DEFERRED,        OID_802_3_XMIT_MAX_COLLISIONS,        OID_802_3_XMIT_UNDERRUN,        OID_802_3_XMIT_HEARTBEAT_FAILURE,        OID_802_3_XMIT_TIMES_CRS_LOST,        OID_802_3_XMIT_LATE_COLLISIONS,    };/******************************************************************************************** * * NIC_DRIVER_OBJECT Implementation * ********************************************************************************************/void NIC_DRIVER_OBJECT::DriverStart(void){#if	defined(PERF_TEST)	RETAILMSG(TRUE,(		TEXT("DriverStart, <tx=%d(%d)>\n")		,		m_pLower->m_szConfigures[CID_TXBUFFER_NUMBER],		m_TQueue.Size()		));#endif	m_pLower->DeviceStart();#if	!defined(PERF_TEST)	return;#else	// of PERF_TEST#error no perf mode	PCQUEUE_GEN_HEADER	pobj;		PU8		pcurr;	PU16	pshort;#if	defined(PERF_TX_MODE)	int		loop;	for(loop=0;(pobj = m_TQueue.Dequeue());loop++)	{		pcurr = (PU8)CQueueGetUserPointer(pobj);		memset((void*)pcurr,0xff,pobj->nLength=ETH_MAX_FRAME_SIZE);				pshort=(PU16)pcurr;		*(pshort+0) = MAKE_WORD(0x91,0x02);		*(pshort+1) = MAKE_WORD(0xCE,0xCE);		*(pshort+2) = MAKE_WORD(0xCE,0xCE);		*(long*)(pshort+6) = loop;		m_pLower->DeviceSend(pobj);	} // of sending loop		RETAILMSG(TRUE,(TEXT("TX_MODE:end of submission")));	#endif	// of PERF_TX_MODE	SpawnPerfThread((PVOID)this);#endif	// of PERF_TEST}void NIC_DRIVER_OBJECT::EDriverInitialize(		OUT PNDIS_STATUS OpenErrorStatus,		OUT PUINT SelectedMediaIndex, 		IN PNDIS_MEDIUM MediaArray, 		IN UINT MediaArraySize){		m_uRecentInterruptStatus = 0;		if(!m_pLower)		m_pLower = DeviceEntry(this,NULL);			if(!m_pLower)			THROW((ERR_STRING("Error in creating device")));		UINT		i;	NDIS_STATUS		status;	NDIS_HANDLE		hconfig;	// Determinate media type	for(i=0; i<MediaArraySize; i++) 		if(MediaArray[i] == NdisMedium802_3)	break;    if (i == MediaArraySize)     	THROW((ERR_STRING("Unsupported media"),NDIS_STATUS_UNSUPPORTED_MEDIA));			*SelectedMediaIndex = i;	// Read registry configurations	NdisOpenConfiguration(		&status,		&hconfig,		m_NdisWrapper);	if(status != NDIS_STATUS_SUCCESS) 		THROW((ERR_STRING("Error in opening configuration"),status));	C_Exception	*pexp;		TRY	{		m_pLower->DeviceSetDefaultSettings();		m_pLower->DeviceSetEepromFormat();			m_pLower->DeviceRetriveConfigurations(hconfig);		m_pLower->EDeviceValidateConfigurations();		FI;	}	CATCH(pexp)	{		pexp->PrintErrorMessage();		CLEAN(pexp);		NdisCloseConfiguration(hconfig);		THROW((ERR_STRING("*** Error in retriving configurations.\n")));	}	NdisCloseConfiguration(hconfig);	m_pLower->DeviceRegisterAdapter();		/* init tx buffers */	U32		m,uaddr;	if(!(uaddr = (U32)malloc(sizeof(DATA_BLOCK)*		(m=m_pLower->m_szConfigures[CID_TXBUFFER_NUMBER]*2)))) 		THROW((ERR_STRING("Insufficient memory")));	for(;m--;uaddr+=sizeof(DATA_BLOCK))		m_TQueue.Enqueue((PCQUEUE_GEN_HEADER)uaddr);	TRY	{		m_pLower->EDeviceRegisterIoSpace();		m_pLower->EDeviceLoadEeprom();		m_pLower->EDeviceInitialize(m_pLower->m_nResetCounts=0);		m_pLower->EDeviceRegisterInterrupt();				FI;	}	CATCH(pexp)	{		pexp->PrintErrorMessage();		CLEAN(pexp);		THROW((ERR_STRING("Device error")));	}		m_pLower->DeviceOnSetupFilter(0);}PVOID NIC_DRIVER_OBJECT::DriverBindAddress(	U32		uPhysicalAddress,	U32		uLength){	void	*pvoid;	// allocate memory for the work space	    if(!(pvoid = VirtualAlloc(		NULL, 		uLength,		MEM_RESERVE, 		PAGE_NOACCESS))) return NULL;	/* binding this virtual addr to physical location */	VirtualCopy(		pvoid,		(PVOID)uPhysicalAddress,		uLength,		PAGE_READWRITE | PAGE_NOCACHE);	return pvoid;}void	NIC_DRIVER_OBJECT::DriverIndication(	U32		uIndication){	switch (uIndication)	{		case NIC_IND_TX_IDLE:			if(m_bOutofResources)			{				m_bOutofResources = 0;				NdisMSendResourcesAvailable(m_NdisHandle);			}			break;					case AID_ERROR:		case AID_LARGE_INCOME_PACKET:			m_bSystemHang = 1;		default:			break;	} // of switch	}void NIC_DRIVER_OBJECT::DriverIsr(		OUT PBOOLEAN InterruptRecognized, 		OUT PBOOLEAN QueueInterrupt)		{	PERF_PROBE_ON(PROBE_ISR);#ifdef	PERFORMANCE_LOG	if(!_gnPerfLogPos)	{		DumpPerfmanceLogs();		BREAK;	}#endif	m_pLower->DeviceDisableInterrupt();	U32	intstat;	if(!(intstat = m_pLower->DeviceGetInterruptStatus()))	{		*InterruptRecognized =		*QueueInterrupt = FALSE;		m_pLower->DeviceEnableInterrupt();		PERF_PROBE_OFF(PROBE_ISR);		return;	}	/* clear it immediately */	m_pLower->DeviceSetInterruptStatus(		m_uRecentInterruptStatus = intstat);			*InterruptRecognized = TRUE;	*QueueInterrupt = TRUE;#ifdef	IMPL_DEVICE_ISR	m_pLower->DeviceIsr(intstat);#endif	PERF_PROBE_OFF(PROBE_ISR);}void	NIC_DRIVER_OBJECT::DriverInterruptHandler(void){		PERF_PROBE_ON(PROBE_HANLDER);		m_pLower->DeviceInterruptEventHandler(m_uRecentInterruptStatus);	m_pLower->DeviceEnableInterrupt();		PERF_PROBE_OFF(PROBE_HANLDER);}#define	HANDLE_QUERY(event,ptr,len)	\	case event: if(InfoBufferLength < (*BytesNeeded=len)) \		{ status = NDIS_STATUS_INVALID_LENGTH; break; }	\	panswer = (void*)(ptr); *BytesWritten = len; break;NDIS_STATUS NIC_DRIVER_OBJECT::DriverQueryInformation(		IN NDIS_OID		Oid,		IN PVOID		InfoBuffer, 		IN ULONG		InfoBufferLength, 		OUT PULONG		BytesWritten,		OUT PULONG		BytesNeeded){	NDIS_STATUS	status = NDIS_STATUS_SUCCESS;		PVOID	panswer;	U8		szbuffer[32];	U32		tmp32;		// pass to lower object, to see if it can handle this query,	// if it can, return TRUE and set status.	if(m_pLower->DeviceQueryInformation(		&status,		Oid,		InfoBuffer,		InfoBufferLength,		BytesWritten,		BytesNeeded)) return status;			switch (Oid) {		HANDLE_QUERY( OID_GEN_SUPPORTED_LIST,			&gszNICSupportedOid,sizeof(gszNICSupportedOid));					HANDLE_QUERY( OID_GEN_HARDWARE_STATUS,			&m_pLower->m_szCurrentSettings[SID_HW_STATUS],sizeof(U32));					HANDLE_QUERY( OID_GEN_MEDIA_IN_USE,			&m_pLower->m_szCurrentSettings[SID_MEDIA_IN_USE],sizeof(U32));		HANDLE_QUERY( OID_GEN_MEDIA_SUPPORTED,			&m_pLower->m_szCurrentSettings[SID_MEDIA_SUPPORTED],sizeof(U32));					HANDLE_QUERY( OID_GEN_MEDIA_CONNECT_STATUS,			&m_pLower->m_szCurrentSettings[SID_MEDIA_CONNECTION_STATUS],sizeof(U32));		HANDLE_QUERY( OID_GEN_MAXIMUM_LOOKAHEAD,			&m_pLower->m_szCurrentSettings[SID_MAXIMUM_LOOKAHEAD],sizeof(U32));		HANDLE_QUERY( OID_GEN_MAXIMUM_FRAME_SIZE, 			&m_pLower->m_szCurrentSettings[SID_MAXIMUM_FRAME_SIZE],sizeof(U32));       		HANDLE_QUERY( OID_GEN_MAXIMUM_TOTAL_SIZE, 			&m_pLower->m_szCurrentSettings[SID_MAXIMUM_TOTAL_SIZE],sizeof(U32));        		HANDLE_QUERY( OID_GEN_MAXIMUM_SEND_PACKETS, 			&m_pLower->m_szCurrentSettings[SID_MAXIMUM_SEND_PACKETS],sizeof(U32));        		HANDLE_QUERY( OID_GEN_LINK_SPEED, 			&m_pLower->m_szCurrentSettings[SID_LINK_SPEED],sizeof(U32));		HANDLE_QUERY( OID_GEN_XMIT_OK,			&m_pLower->m_szStatistics[TID_GEN_XMIT_OK],sizeof(U32));		HANDLE_QUERY( OID_GEN_RCV_OK,			&m_pLower->m_szStatistics[TID_GEN_RCV_OK],sizeof(U32));		HANDLE_QUERY( OID_GEN_XMIT_ERROR,			&m_pLower->m_szStatistics[TID_GEN_XMIT_ERROR],sizeof(U32));		HANDLE_QUERY( OID_GEN_RCV_ERROR,			&m_pLower->m_szStatistics[TID_GEN_RCV_ERROR],sizeof(U32));		HANDLE_QUERY( OID_GEN_RCV_NO_BUFFER,			&m_pLower->m_szStatistics[TID_GEN_RCV_NO_BUFFER],sizeof(U32));		HANDLE_QUERY( OID_GEN_RCV_CRC_ERROR,			&m_pLower->m_szStatistics[TID_GEN_RCV_CRC_ERROR],sizeof(U32));		HANDLE_QUERY( OID_802_3_RCV_ERROR_ALIGNMENT,			&m_pLower->m_szStatistics[TID_802_3_RCV_ERROR_ALIGNMENT],sizeof(U32));			        HANDLE_QUERY( OID_802_3_RCV_OVERRUN,			&m_pLower->m_szStatistics[TID_802_3_RCV_OVERRUN],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_ONE_COLLISION,			&m_pLower->m_szStatistics[TID_802_3_XMIT_ONE_COLLISION],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_MORE_COLLISIONS,			&m_pLower->m_szStatistics[TID_802_3_XMIT_MORE_COLLISIONS],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_DEFERRED,			&m_pLower->m_szStatistics[TID_802_3_XMIT_DEFERRED],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_MAX_COLLISIONS,			&m_pLower->m_szStatistics[TID_802_3_XMIT_MAX_COLLISIONS],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_UNDERRUN,			&m_pLower->m_szStatistics[TID_802_3_XMIT_UNDERRUN],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_HEARTBEAT_FAILURE,			&m_pLower->m_szStatistics[TID_802_3_XMIT_HEARTBEAT_FAILURE],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_TIMES_CRS_LOST,			&m_pLower->m_szStatistics[TID_802_3_XMIT_TIMES_CRS_LOST],sizeof(U32));		HANDLE_QUERY( OID_802_3_XMIT_LATE_COLLISIONS,			&m_pLower->m_szStatistics[TID_802_3_XMIT_LATE_COLLISIONS],sizeof(U32));		HANDLE_QUERY( OID_GEN_MAC_OPTIONS, 			&m_pLower->m_szCurrentSettings[SID_GEN_MAC_OPTIONS],sizeof(U32));		HANDLE_QUERY( OID_802_3_PERMANENT_ADDRESS,			m_pLower->DeviceMacAddress(&szbuffer[0]),ETH_ADDRESS_LENGTH);		HANDLE_QUERY( OID_802_3_CURRENT_ADDRESS,			m_pLower->DeviceMacAddress(&szbuffer[0]),ETH_ADDRESS_LENGTH);		HANDLE_QUERY( OID_802_3_MAXIMUM_LIST_SIZE, 			&m_pLower->m_szCurrentSettings[SID_802_3_MAXIMUM_LIST_SIZE],sizeof(U32));    		HANDLE_QUERY( OID_802_3_MULTICAST_LIST, 			&m_pLower->m_szMulticastList[0][0], 			m_pLower->m_nMulticasts*ETH_ADDRESS_LENGTH);		HANDLE_QUERY( OID_GEN_CURRENT_PACKET_FILTER, 			&m_pLower->m_szCurrentSettings[SID_GEN_CURRENT_PACKET_FILTER],sizeof(U32));		HANDLE_QUERY( OID_GEN_TRANSMIT_BUFFER_SPACE, 			&m_pLower->m_szCurrentSettings[SID_GEN_TRANSMIT_BUFFER_SPACE],sizeof(U32));		HANDLE_QUERY( OID_GEN_RECEIVE_BUFFER_SPACE, 			&m_pLower->m_szCurrentSettings[SID_GEN_RECEIVE_BUFFER_SPACE],sizeof(U32));		HANDLE_QUERY( OID_GEN_TRANSMIT_BLOCK_SIZE, 			&m_pLower->m_szCurrentSettings[SID_GEN_TRANSMIT_BLOCK_SIZE],sizeof(U32));		HANDLE_QUERY( OID_GEN_RECEIVE_BLOCK_SIZE, 			&m_pLower->m_szCurrentSettings[SID_GEN_RECEIVE_BLOCK_SIZE],sizeof(U32));				HANDLE_QUERY( OID_GEN_VENDOR_ID, 			(tmp32=(U32)m_pLower->DeviceVendorID(),&tmp32),sizeof(U32));				HANDLE_QUERY( OID_GEN_VENDOR_DESCRIPTION, 			VENDOR_DESC,strlen(VENDOR_DESC));				HANDLE_QUERY( OID_GEN_CURRENT_LOOKAHEAD, 			&m_pLower->m_szCurrentSettings[SID_GEN_CURRENT_LOOKAHEAD],sizeof(U32));		HANDLE_QUERY( OID_GEN_DRIVER_VERSION, 			&m_pLower->m_szCurrentSettings[SID_GEN_DRIVER_VERSION],sizeof(U32));		HANDLE_QUERY( OID_GEN_VENDOR_DRIVER_VERSION, 			&m_pLower->m_szCurrentSettings[SID_GEN_VENDOR_DRIVER_VERSION],sizeof(U32));		HANDLE_QUERY( OID_GEN_PROTOCOL_OPTIONS, 			&m_pLower->m_szCurrentSettings[SID_GEN_PROTOCOL_OPTIONS],sizeof(U32));					default:			status = NDIS_STATUS_INVALID_OID;			break;	} // of switch	if(status == NDIS_STATUS_SUCCESS)	{		NdisMoveMemory(InfoBuffer,panswer,*BytesWritten);	}	return status;}#define	HANDLE_SET(event,len)	\	case event: if(InfoBufferLength < (*BytesNeeded=len)) \		{ status = NDIS_STATUS_INVALID_LENGTH; break; }	\		*BytesRead = len; HANDLE_SET_##event(); break;#define	HANDLE_SET_OID_GEN_CURRENT_PACKET_FILTER()	\	m_pLower->DeviceOnSetupFilter(*(U32*)InfoBuffer)	NDIS_STATUS NIC_DRIVER_OBJECT::DriverSetInformation(	IN NDIS_OID		Oid,	IN PVOID		InfoBuffer, 	IN ULONG		InfoBufferLength, 	OUT PULONG		BytesRead,	OUT PULONG		BytesNeeded){	NDIS_STATUS	status = NDIS_STATUS_SUCCESS;	// pass to lower object, to see if it can handle this request,	// if it can, return TRUE and set status.	if(m_pLower->DeviceSetInformation(		&status,		Oid,		InfoBuffer,		InfoBufferLength,		BytesRead,		BytesNeeded)) return status;	switch (Oid)	{		HANDLE_SET( OID_GEN_CURRENT_PACKET_FILTER,sizeof(U32));				case OID_802_3_MULTICAST_LIST:			NdisMoveMemory(				&m_pLower->m_szMulticastList[0][0],				InfoBuffer,				InfoBufferLength);			m_pLower->m_nMulticasts = 				InfoBufferLength / ETH_ADDRESS_LENGTH;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
93久久精品日日躁夜夜躁欧美| 毛片av一区二区三区| 91网页版在线| 综合激情成人伊人| 欧美日韩综合不卡| 日本视频在线一区| 久久综合狠狠综合久久激情| 国产一区二区不卡| 成人免费在线观看入口| 一本色道a无线码一区v| 亚洲高清视频中文字幕| 日韩一区二区三| 激情久久久久久久久久久久久久久久| 久久久久国产精品麻豆ai换脸| 播五月开心婷婷综合| 亚洲欧美日韩国产手机在线| 在线观看av不卡| 久久99久久99| 日韩毛片精品高清免费| 91麻豆精品久久久久蜜臀| 国产精品中文字幕日韩精品| 1区2区3区精品视频| 欧美日韩精品一区二区在线播放| 美女在线视频一区| 国产精品福利影院| 91精品欧美久久久久久动漫 | 日本久久一区二区三区| 日韩激情在线观看| 国产精品色呦呦| 欧美精品乱码久久久久久按摩 | 国产中文字幕一区| 亚洲乱码一区二区三区在线观看| 91精品国产综合久久国产大片| 国产露脸91国语对白| 亚洲一区在线电影| 国产欧美一区二区三区沐欲| 欧美午夜理伦三级在线观看| 国内国产精品久久| 亚洲444eee在线观看| 中文一区二区完整视频在线观看| 欧美影视一区二区三区| 国产电影精品久久禁18| 日韩电影在线一区| 亚洲男女毛片无遮挡| 久久嫩草精品久久久精品| 欧美精品自拍偷拍| 色伊人久久综合中文字幕| 精品亚洲成a人| 性久久久久久久久| 一区二区三区中文字幕在线观看| 久久久亚洲综合| 日韩欧美色综合网站| 欧美优质美女网站| 色综合激情五月| 国产成人av影院| 国内精品第一页| 蜜臀91精品一区二区三区| 亚洲6080在线| 亚洲成人www| 亚洲一区二区3| 国产精品乱码一区二区三区软件 | 亚洲一区二区三区中文字幕在线 | 精品国产乱码久久久久久闺蜜 | 亚洲女同ⅹxx女同tv| 国产欧美一区视频| 久久久久高清精品| 精品成人一区二区三区| 日韩精品中文字幕一区二区三区| 欧美精品黑人性xxxx| 精品视频1区2区3区| 日本高清无吗v一区| 色综合久久久网| 一本久久a久久免费精品不卡| 99久久免费国产| av一区二区三区在线| 97精品视频在线观看自产线路二| 不卡av在线网| 色综合天天综合| 色婷婷久久久综合中文字幕| 91国产精品成人| 欧美在线观看禁18| 3d动漫精品啪啪一区二区竹菊| 欧美日韩精品免费观看视频| 欧美在线短视频| 在线播放/欧美激情| 日韩一区二区中文字幕| 欧美成人乱码一区二区三区| 欧美成人vr18sexvr| 精品成人一区二区三区| 国产精品色噜噜| 一区二区三区成人在线视频| 亚洲在线一区二区三区| 午夜视频在线观看一区二区 | 国产九色精品成人porny| 国产成人精品一区二区三区四区 | 亚洲精品视频免费看| 亚洲卡通动漫在线| 亚洲大片一区二区三区| 蜜桃视频在线观看一区| 国产成人av网站| 91久久一区二区| 91精品国产综合久久蜜臀| xvideos.蜜桃一区二区| 成人免费一区二区三区视频| 亚洲电影一区二区| 久久精品噜噜噜成人av农村| 成人午夜在线免费| 欧美系列亚洲系列| 日韩欧美国产高清| 亚洲欧洲国产专区| 日韩精品亚洲专区| 成人国产免费视频| 欧美一区日本一区韩国一区| 久久精品一区二区三区四区| 亚洲永久免费视频| 激情图片小说一区| 欧美在线综合视频| 国产欧美精品区一区二区三区| 亚洲综合偷拍欧美一区色| 免费的国产精品| 99久久综合狠狠综合久久| 91麻豆精品国产91久久久久久 | 午夜精品视频在线观看| 国产成人精品亚洲午夜麻豆| 欧美性生活大片视频| 久久久777精品电影网影网| 一区二区欧美国产| 国产99精品视频| 91精品国产91热久久久做人人| 国产精品青草久久| 国产在线播放一区二区三区| 欧美视频一区在线观看| 国产精品久久久久婷婷二区次| 秋霞国产午夜精品免费视频| 99久久er热在这里只有精品15| 日韩午夜在线观看视频| 亚洲综合激情网| 成人高清免费观看| 精品国产乱码久久久久久图片| 亚洲国产另类av| 国产91色综合久久免费分享| 日韩欧美视频在线| 性做久久久久久久久| 色婷婷香蕉在线一区二区| 国产欧美一区二区精品性| 美国毛片一区二区三区| 欧美日产在线观看| 亚洲国产精品天堂| 91网站最新地址| 国产精品美女久久久久aⅴ国产馆| 精品午夜久久福利影院 | 欧美无砖专区一中文字| 亚洲天堂久久久久久久| 粉嫩aⅴ一区二区三区四区五区| 欧美电影精品一区二区| 日韩av高清在线观看| 欧美酷刑日本凌虐凌虐| 夜夜操天天操亚洲| 91性感美女视频| 亚洲女人小视频在线观看| 91欧美激情一区二区三区成人| 国产精品热久久久久夜色精品三区| 精品午夜一区二区三区在线观看| 欧美一区二区三区日韩| 日本成人中文字幕| 日韩免费电影一区| 极品美女销魂一区二区三区| 日韩视频一区二区三区在线播放| 日日夜夜精品视频天天综合网| 欧美人体做爰大胆视频| 三级不卡在线观看| 欧美成人一区二区三区片免费| 激情六月婷婷久久| 国产欧美精品一区| 91免费国产在线| 亚洲自拍偷拍九九九| 欧美日韩精品一区二区三区四区 | 亚洲制服欧美中文字幕中文字幕| 91久久久免费一区二区| 亚洲午夜久久久久久久久电影网 | 91激情五月电影| 亚洲成人av一区二区三区| 69成人精品免费视频| 精东粉嫩av免费一区二区三区| 精品99一区二区| 成人毛片老司机大片| 亚洲一区二区三区小说| 欧美日韩国产另类不卡| 久久成人免费网站| 中文字幕乱码日本亚洲一区二区 | 日韩制服丝袜先锋影音| 日韩一级片在线播放| 国产精品99久久久久久久女警| 国产精品国产馆在线真实露脸| 91久久国产最好的精华液| 免费成人小视频| 中国av一区二区三区| 欧美日韩五月天| 国产精品18久久久久久久久| 亚洲天堂免费在线观看视频|