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

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

?? driver.cpp

?? windows下的通用wdm驅動程序樣本, 包含最常見的非PNP派遣函數和PNP派遣函數. 更復雜的驅動程序可以在這個版本上進行擴展.
?? CPP
字號:

#include "Driver.h"

/************************************************************************
* 函數名稱:DriverEntry
* 功能描述:初始化驅動程序,定位和申請硬件資源,創建內核對象
* 參數列表:
      pDriverObject:從I/O管理器中傳進來的驅動對象
      pRegistryPath:驅動程序在注冊表的中的路徑
* 返回 值:返回初始化驅動狀態
*************************************************************************/
#pragma INITCODE
extern "C" NTSTATUS DriverEntry (
			IN PDRIVER_OBJECT pDriverObject,
			IN PUNICODE_STRING pRegistryPath	) 
{
	KdPrint(("DriverA:Enter DriverEntry\n"));

	//注冊其他驅動調用函數入口
	pDriverObject->DriverUnload = HelloWDMUnload;
	pDriverObject->DriverExtension->AddDevice = HelloWDMAddDevice;
	for (int i = 0; i < arraysize(pDriverObject->MajorFunction); ++i)
		pDriverObject->MajorFunction[i] = HelloWDMDispatchAny;

	pDriverObject->MajorFunction[IRP_MJ_POWER] = HelloWDMPower;
	pDriverObject->MajorFunction[IRP_MJ_PNP] = HelloWDMPnp;



	KdPrint(("DriverA:Leave DriverEntry\n"));
	return STATUS_SUCCESS;
}

#pragma LOCKEDCODE
VOID OnTimerDpc( IN PKDPC pDpc,
					  IN PVOID pContext,
					  IN PVOID SysArg1,
					  IN PVOID SysArg2 ) 
{
	PDEVICE_OBJECT pDevObj = (PDEVICE_OBJECT)pContext;
	PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION)pDevObj->DeviceExtension;

	PIRP currentPendingIRP = pdx->currentPendingIRP;

	KdPrint(("DriverA:complete IRP_MJ_READ irp!\n"));

	//設置完成狀態為STATUS_CANCELLED
 	currentPendingIRP->IoStatus.Status = STATUS_SUCCESS;
 	currentPendingIRP->IoStatus.Information = 0;	// bytes xfered
 	IoCompleteRequest( currentPendingIRP, IO_NO_INCREMENT );
}

/************************************************************************
* 函數名稱:CreateDevice
* 功能描述:初始化設備對象
* 參數列表:
      pDriverObject:從I/O管理器中傳進來的驅動對象
      PhysicalDeviceObject:從I/O管理器中傳進來的物理設備對象
* 返回 值:返回初始化狀態
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS HelloWDMAddDevice(IN PDRIVER_OBJECT DriverObject,
                           IN PDEVICE_OBJECT PhysicalDeviceObject)
{
	PAGED_CODE();
	KdPrint(("DriverA:Enter AddDevice\n"));
	NTSTATUS status;
	PDEVICE_OBJECT fdo;
	
	//創建設備名稱
	UNICODE_STRING devName;
	RtlInitUnicodeString(&devName,L"\\Device\\MyDDKDeviceA");
	
	//創建設備
	status = IoCreateDevice(
						DriverObject,
						sizeof(DEVICE_EXTENSION),
						&(UNICODE_STRING)devName,
						FILE_DEVICE_UNKNOWN,
						0,
						TRUE,
						&fdo);
	if( !NT_SUCCESS(status))
		return status;

	PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION)fdo->DeviceExtension;

	pdx->fdo = fdo;
	pdx->NextStackDevice = IoAttachDeviceToDeviceStack(fdo, PhysicalDeviceObject);

	pdx->ustrDeviceName = devName;

//	KeInitializeTimer( &pdx->pollingTimer );

//	KeInitializeDpc( &pdx->pollingDPC,
//						OnTimerDpc,
//						(PVOID) fdo );

	//創建符號鏈接
	UNICODE_STRING symLinkName;
	RtlInitUnicodeString(&symLinkName,L"\\??\\DriverA");
	pdx->ustrSymLinkName = symLinkName;
	status = IoCreateSymbolicLink(&(UNICODE_STRING)symLinkName,&(UNICODE_STRING)devName);
	if( !NT_SUCCESS(status))
	{
		IoDeleteSymbolicLink(&pdx->ustrSymLinkName);
		status = IoCreateSymbolicLink(&symLinkName,&devName);
		if( !NT_SUCCESS(status))
		{
			return status;
		}
	}
	fdo->Flags |= DO_BUFFERED_IO | DO_POWER_PAGABLE;
	fdo->Flags &= ~DO_DEVICE_INITIALIZING;
	KdPrint(("DriverA:Leave AddDevice\n"));
	return STATUS_SUCCESS;
}

/************************************************************************
* 函數名稱:HelloDDKUnload
* 功能描述:負責驅動程序的卸載操作
* 參數列表:
      pDriverObject:驅動對象
* 返回 值:返回狀態
*************************************************************************/
#pragma PAGEDCODE
VOID HelloWDMUnload (IN PDRIVER_OBJECT pDriverObject) 
{
	PAGED_CODE();
	KdPrint(("DriverA:Enter DriverUnload\n"));
	KdPrint(("DriverA:Leave DriverUnload\n"));
}

///////////////////////////////////////////////////////////////////////////////
#pragma LOCKEDCODE				// make no assumptions about pageability of dispatch fcns
NTSTATUS HelloWDMDispatchAny(IN PDEVICE_OBJECT fido, IN PIRP Irp)
{							// DispatchAny
	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);
#if DBG
	static char* irpname[] = 
	{
		"IRP_MJ_CREATE",
		"IRP_MJ_CREATE_NAMED_PIPE",
		"IRP_MJ_CLOSE",
		"IRP_MJ_READ",
		"IRP_MJ_WRITE",
		"IRP_MJ_QUERY_INFORMATION",
		"IRP_MJ_SET_INFORMATION",
		"IRP_MJ_QUERY_EA",
		"IRP_MJ_SET_EA",
		"IRP_MJ_FLUSH_BUFFERS",
		"IRP_MJ_QUERY_VOLUME_INFORMATION",
		"IRP_MJ_SET_VOLUME_INFORMATION",
		"IRP_MJ_DIRECTORY_CONTROL",
		"IRP_MJ_FILE_SYSTEM_CONTROL",
		"IRP_MJ_DEVICE_CONTROL",
		"IRP_MJ_INTERNAL_DEVICE_CONTROL",
		"IRP_MJ_SHUTDOWN",
		"IRP_MJ_LOCK_CONTROL",
		"IRP_MJ_CLEANUP",
		"IRP_MJ_CREATE_MAILSLOT",
		"IRP_MJ_QUERY_SECURITY",
		"IRP_MJ_SET_SECURITY",
		"IRP_MJ_POWER",
		"IRP_MJ_SYSTEM_CONTROL",
		"IRP_MJ_DEVICE_CHANGE",
		"IRP_MJ_QUERY_QUOTA",
		"IRP_MJ_SET_QUOTA",
		"IRP_MJ_PNP",
	};

	UCHAR type = stack->MajorFunction;
 	if (type >= arraysize(irpname))
 		KdPrint(("DriverA - Unknown IRP, major type %X\n", type));
 	else

		KdPrint(("DriverA - %s\n", irpname[type]));

#endif
	
	NTSTATUS status = STATUS_SUCCESS;

	// 完成IRP
	Irp->IoStatus.Status = status;
	Irp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( Irp, IO_NO_INCREMENT );

	return status;
}							// DispatchAny




/*
#pragma PAGEDCODE
NTSTATUS HelloWDMRead(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("DriverA:Enter A Read\n"));
	NTSTATUS status = STATUS_SUCCESS;

	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );

	KdPrint(("DriverA:Leave A Read\n"));
	return status;
}


#pragma PAGEDCODE
NTSTATUS HelloWDMDispatchRoutine(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("DriverA:Enter A DispatchRoutine\n"));
	NTSTATUS status = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	KdPrint(("DriverA:Leave A DispatchRoutine\n"));
	return status;
}

#pragma PAGEDCODE
NTSTATUS HelloWDMCreate(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("DriverA:Enter A Create\n"));
	NTSTATUS status = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	KdPrint(("DriverA:Leave A Create\n"));
	return status;
}

#pragma PAGEDCODE
NTSTATUS HelloWDMClose(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp) 
{
	KdPrint(("DriverA:Enter A Close\n"));
	NTSTATUS status = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = status;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );
	KdPrint(("DriverA:Leave A Close\n"));
	return status;
}

#pragma PAGEDCODE
NTSTATUS HelloWDMDeviceIOControl(IN PDEVICE_OBJECT pDevObj,
								 IN PIRP pIrp)
{
	KdPrint(("Enter DriverA DeviceIOControl\n"));
	NTSTATUS ntStatus = STATUS_SUCCESS;
	// 完成IRP
	pIrp->IoStatus.Status = ntStatus;
	pIrp->IoStatus.Information = 0;	// bytes xfered
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );

	KdPrint(("Leave DriverA DeviceIOControl\n"));
	return ntStatus;
}
*/















//Power code

#pragma PAGEDCODE
NTSTATUS HelloWDMPower(IN PDEVICE_OBJECT fdo,
							   IN PIRP Irp)
{
	PAGED_CODE();

	KdPrint(("DriverA:Enter HelloWDMDispatchPower\n"));

	NTSTATUS status = STATUS_SUCCESS;
	PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) fdo->DeviceExtension;
	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);

	static NTSTATUS (*fcntab[])(PDEVICE_EXTENSION pdx, PIRP Irp) = 
	{
		HandleWaitWake,			// IRP_MN_WAIT_WAKE
		HandlePowerSeq,			// IRP_MN_POWER_SEQUENCE
		HandleSetPower,			// IRP_MN_SET_POWER
		HandleQueryPower,		// IRP_MN_QUERY_POWER
	};

	ULONG fcn = stack->MinorFunction;
	if (fcn >= arraysize(fcntab))
	{						// 未知的子功能代碼
		status = DefaultPnpHandler(pdx, Irp); // some function we don't know about
		return status;
	}	

	status = (*fcntab[fcn])(pdx, Irp);
	KdPrint(("DriverA:Leave HelloWDMDispatchPower\n"));
	return status;

}

NTSTATUS HandleQueryPower( IN PDEVICE_EXTENSION pdx, IN PIRP Irp)
{
	KdPrint(("DriverA:Enter HandleQueryPower\n"));

	NTSTATUS ntStatus = STATUS_SUCCESS;

	IoCopyCurrentIrpStackLocationToNext(Irp);

	PoStartNextPowerIrp(Irp);

	ntStatus = PoCallDriver( pdx -> NextStackDevice, Irp);

	if(ntStatus == STATUS_PENDING)
	{
		IoMarkIrpPending(Irp);
	}

	KdPrint(("DriverA:Leave HandleQueryPower\n"));

	return ntStatus;
}

NTSTATUS HandleSetPower( IN PDEVICE_EXTENSION pdx, IN PIRP Irp)
{
	KdPrint(("DriverA:Enter HandleSetPower\n"));

	NTSTATUS ntStatus = STATUS_SUCCESS;
	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);

	switch(stack -> Parameters.Power.Type)
	{
		case SystemPowerState:
			switch(stack -> Parameters.Power.State.SystemState)
			{
				case PowerSystemWorking:
					//resume1:
					//goto resume1;
				break;

				case PowerSystemSleeping3:
				break;

				case PowerSystemHibernate:
				break;

				default:
				break;
			}
		break;

		case DevicePowerState:
		break;

		default:
		break;
	}

	PoStartNextPowerIrp(Irp);
	Irp->IoStatus.Status = STATUS_SUCCESS;
	IoCompleteRequest(Irp, IO_NO_INCREMENT);

	KdPrint(("DriverA:Leave HandleSetPower\n"));

	return STATUS_SUCCESS;

}

NTSTATUS HandleWaitWake( IN PDEVICE_EXTENSION pdx, IN PIRP Irp)
{
	KdPrint(("DriverA:Enter HandleWaitWake\n"));

	NTSTATUS ntStatus = STATUS_SUCCESS;

	KdPrint(("DriverA:Leave HandleWaitWake\n"));

	return ntStatus;
}

NTSTATUS HandlePowerSeq( IN PDEVICE_EXTENSION pdx, IN PIRP Irp)
{
	KdPrint(("DriverA:Enter HandlePowerSeq\n"));

	NTSTATUS ntStatus = STATUS_SUCCESS;

	KdPrint(("DriverA:Leave HandlePowerSeq\n"));

	return ntStatus;
}













//PNP code

/************************************************************************
* 函數名稱:DefaultPnpHandler
* 功能描述:對PNP IRP進行缺省處理
* 參數列表:
      pdx:設備對象的擴展
      Irp:從IO請求包
* 返回 值:返回狀態
*************************************************************************/ 
#pragma PAGEDCODE
NTSTATUS DefaultPnpHandler(PDEVICE_EXTENSION pdx, PIRP Irp)
{
	PAGED_CODE();
	KdPrint(("DriverA:Enter DefaultPnpHandler\n"));
	IoSkipCurrentIrpStackLocation(Irp);
	KdPrint(("DriverA:Leave DefaultPnpHandler\n"));
	return IoCallDriver(pdx->NextStackDevice, Irp);
}

/************************************************************************
* 函數名稱:HandleRemoveDevice
* 功能描述:對IRP_MN_REMOVE_DEVICE IRP進行處理
* 參數列表:
      fdo:功能設備對象
      Irp:從IO請求包
* 返回 值:返回狀態
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS HandleRemoveDevice(PDEVICE_EXTENSION pdx, PIRP Irp)
{
	PAGED_CODE();
	KdPrint(("DriverA:Enter HandleRemoveDevice\n"));

	Irp->IoStatus.Status = STATUS_SUCCESS;
	NTSTATUS status = STATUS_SUCCESS;
//	NTSTATUS status = DefaultPnpHandler(pdx, Irp);
	IoDeleteSymbolicLink(&(UNICODE_STRING)pdx->ustrSymLinkName);

    //調用IoDetachDevice()把fdo從設備棧中脫開:
    if (pdx->NextStackDevice)
        IoDetachDevice(pdx->NextStackDevice);
	
    //刪除fdo:
    IoDeleteDevice(pdx->fdo);
	KdPrint(("DriverA:Leave HandleRemoveDevice\n"));
	return status;
}

/************************************************************************
* 函數名稱:HelloWDMPnp
* 功能描述:對即插即用IRP進行處理
* 參數列表:
      fdo:功能設備對象
      Irp:從IO請求包
* 返回 值:返回狀態
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS HelloWDMPnp(IN PDEVICE_OBJECT fdo,
                        IN PIRP Irp)
{
	PAGED_CODE();

	KdPrint(("DriverA:Enter Pnp\n"));
	NTSTATUS status = STATUS_SUCCESS;
	PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) fdo->DeviceExtension;
	PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp);
	static NTSTATUS (*fcntab[])(PDEVICE_EXTENSION pdx, PIRP Irp) = 
	{
		DefaultPnpHandler,		// IRP_MN_START_DEVICE
		DefaultPnpHandler,		// IRP_MN_QUERY_REMOVE_DEVICE
		HandleRemoveDevice,		// IRP_MN_REMOVE_DEVICE
		DefaultPnpHandler,		// IRP_MN_CANCEL_REMOVE_DEVICE
		DefaultPnpHandler,		// IRP_MN_STOP_DEVICE
		DefaultPnpHandler,		// IRP_MN_QUERY_STOP_DEVICE
		DefaultPnpHandler,		// IRP_MN_CANCEL_STOP_DEVICE
		DefaultPnpHandler,		// IRP_MN_QUERY_DEVICE_RELATIONS
		DefaultPnpHandler,		// IRP_MN_QUERY_INTERFACE
		DefaultPnpHandler,		// IRP_MN_QUERY_CAPABILITIES
		DefaultPnpHandler,		// IRP_MN_QUERY_RESOURCES
		DefaultPnpHandler,		// IRP_MN_QUERY_RESOURCE_REQUIREMENTS
		DefaultPnpHandler,		// IRP_MN_QUERY_DEVICE_TEXT
		DefaultPnpHandler,		// IRP_MN_FILTER_RESOURCE_REQUIREMENTS
		DefaultPnpHandler,		// 
		DefaultPnpHandler,		// IRP_MN_READ_CONFIG
		DefaultPnpHandler,		// IRP_MN_WRITE_CONFIG
		DefaultPnpHandler,		// IRP_MN_EJECT
		DefaultPnpHandler,		// IRP_MN_SET_LOCK
		DefaultPnpHandler,		// IRP_MN_QUERY_ID
		DefaultPnpHandler,		// IRP_MN_QUERY_PNP_DEVICE_STATE
		DefaultPnpHandler,		// IRP_MN_QUERY_BUS_INFORMATION
		DefaultPnpHandler,		// IRP_MN_DEVICE_USAGE_NOTIFICATION
		DefaultPnpHandler,		// IRP_MN_SURPRISE_REMOVAL
	};

	ULONG fcn = stack->MinorFunction;
	if (fcn >= arraysize(fcntab))
	{						// unknown function
		status = DefaultPnpHandler(pdx, Irp); // some function we don't know about
		return status;
	}						// unknown function

#if DBG
	static char* fcnname[] = 
	{
		"IRP_MN_START_DEVICE",
		"IRP_MN_QUERY_REMOVE_DEVICE",
		"IRP_MN_REMOVE_DEVICE",
		"IRP_MN_CANCEL_REMOVE_DEVICE",
		"IRP_MN_STOP_DEVICE",
		"IRP_MN_QUERY_STOP_DEVICE",
		"IRP_MN_CANCEL_STOP_DEVICE",
		"IRP_MN_QUERY_DEVICE_RELATIONS",
		"IRP_MN_QUERY_INTERFACE",
		"IRP_MN_QUERY_CAPABILITIES",
		"IRP_MN_QUERY_RESOURCES",
		"IRP_MN_QUERY_RESOURCE_REQUIREMENTS",
		"IRP_MN_QUERY_DEVICE_TEXT",
		"IRP_MN_FILTER_RESOURCE_REQUIREMENTS",
		"",
		"IRP_MN_READ_CONFIG",
		"IRP_MN_WRITE_CONFIG",
		"IRP_MN_EJECT",
		"IRP_MN_SET_LOCK",
		"IRP_MN_QUERY_ID",
		"IRP_MN_QUERY_PNP_DEVICE_STATE",
		"IRP_MN_QUERY_BUS_INFORMATION",
		"IRP_MN_DEVICE_USAGE_NOTIFICATION",
		"IRP_MN_SURPRISE_REMOVAL",
	};

	KdPrint(("PNP Request (%s)\n", fcnname[fcn]));
#endif // DBG

	status = (*fcntab[fcn])(pdx, Irp);
	KdPrint(("DriverA:Leave Pnp\n"));
	return status;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人一级片| 色老汉一区二区三区| 91麻豆swag| 日韩免费福利电影在线观看| 欧美国产视频在线| 免费看日韩精品| 日本精品一区二区三区四区的功能| 精品免费视频一区二区| 亚洲大片精品永久免费| 99久久婷婷国产综合精品电影| 日韩午夜精品电影| 性做久久久久久| 欧美中文字幕一区二区三区亚洲| 国产欧美综合色| 国产精品自在在线| 精品久久久三级丝袜| 美腿丝袜在线亚洲一区| 欧美日本一区二区| 香蕉成人伊视频在线观看| 在线免费观看不卡av| 日韩理论片一区二区| 成人污污视频在线观看| 久久综合色之久久综合| 国精产品一区一区三区mba视频| 欧美日韩国产精品成人| 亚洲国产一二三| 欧亚洲嫩模精品一区三区| 亚洲精品日韩专区silk| 一本到一区二区三区| 亚洲精选一二三| 91久久久免费一区二区| 亚洲综合无码一区二区| 色噜噜狠狠一区二区三区果冻| 亚洲欧美aⅴ...| 在线免费观看视频一区| 午夜欧美视频在线观看| 欧美区视频在线观看| 亚洲免费av网站| 亚洲男人的天堂一区二区| 91在线看国产| 一区二区日韩av| 欧美一级日韩不卡播放免费| 免播放器亚洲一区| 日韩女优视频免费观看| 国产精品一区久久久久| 国产精品免费视频观看| 91浏览器在线视频| 亚洲国产综合91精品麻豆| 在线综合视频播放| 激情综合五月天| 中文字幕一区二区三区在线播放| 99精品久久99久久久久| 亚洲午夜久久久久久久久电影院 | 午夜欧美视频在线观看| 777奇米成人网| 国产九色精品成人porny| 国产精品久久三区| 欧美色图激情小说| 韩国精品主播一区二区在线观看| 亚洲国产精品99久久久久久久久| 成人av电影在线观看| 午夜久久久久久久久久一区二区| 精品国产伦理网| 一本色道a无线码一区v| 免费在线成人网| 国产精品久久久久久久久免费桃花 | 国产精品久久久一区麻豆最新章节| 91无套直看片红桃| 麻豆精品一区二区综合av| 欧美国产精品专区| 制服丝袜亚洲网站| 不卡的av电影| 久久精品免费观看| 一区二区三区视频在线看| 精品欧美乱码久久久久久| 91麻豆国产精品久久| 久久se这里有精品| 亚洲精品成人精品456| 久久嫩草精品久久久久| 欧美视频自拍偷拍| 91在线精品秘密一区二区| 久草这里只有精品视频| 亚洲在线视频一区| 中文字幕一区二区三区在线不卡| 精品福利一二区| 欧美日韩综合一区| 99久久婷婷国产精品综合| 国产一区999| 日本aⅴ亚洲精品中文乱码| 中文字幕色av一区二区三区| 精品少妇一区二区三区在线视频| 欧美色网一区二区| 色哦色哦哦色天天综合| 国产成人精品综合在线观看 | 成人av午夜电影| 国产综合色在线| 蜜臀av一区二区在线观看| 亚洲成人av一区二区| 亚洲欧美激情小说另类| 亚洲欧洲日韩一区二区三区| 久久久久久久性| 精品国产乱子伦一区| 精品美女被调教视频大全网站| 91精品国产一区二区三区蜜臀 | 精品国产露脸精彩对白 | 色综合天天综合狠狠| 国产精品白丝jk黑袜喷水| 欧美a级一区二区| 日韩精品一区第一页| 亚洲成av人综合在线观看| 一区二区三区四区av| 一区二区三区日韩欧美| 亚洲精品久久嫩草网站秘色| 日韩毛片视频在线看| 自拍偷自拍亚洲精品播放| 国产精品国产三级国产| 国产精品青草综合久久久久99| 国产欧美一区二区精品仙草咪| 亚洲精品在线电影| 国产人成亚洲第一网站在线播放| 久久久精品人体av艺术| 国产精品进线69影院| 中文字幕一区二区在线观看| 18欧美乱大交hd1984| 亚洲免费av观看| 亚洲国产一区二区三区| 日韩福利视频网| 韩国v欧美v亚洲v日本v| 成人中文字幕合集| 91蝌蚪porny| 欧美精品丝袜久久久中文字幕| 51午夜精品国产| 国产午夜精品在线观看| 日韩伦理电影网| 日韩av成人高清| 国产电影一区在线| 色天使色偷偷av一区二区| 欧美日韩视频一区二区| 精品国产乱码久久久久久夜甘婷婷 | 国产精品久久综合| 亚洲自拍偷拍综合| 日本中文字幕一区二区视频 | 日本欧美加勒比视频| 7777精品伊人久久久大香线蕉的 | 国产视频视频一区| 最新热久久免费视频| 欧美在线免费播放| 精品一区二区影视| av在线综合网| 国产欧美一区二区三区沐欲 | 亚洲高清在线视频| 91免费看`日韩一区二区| 欧美经典三级视频一区二区三区| 久久精品国产亚洲5555| 欧美一区二区三区电影| 亚洲成人一区在线| 精品视频全国免费看| 亚洲裸体xxx| 色婷婷亚洲一区二区三区| 国产精品久久久久aaaa| 波多野结衣视频一区| 中文字幕乱码久久午夜不卡| 国产一区二区三区免费看| 欧美tk丨vk视频| 九色|91porny| 久久亚洲精精品中文字幕早川悠里 | 欧美成人精精品一区二区频| 午夜成人免费电影| 这里只有精品视频在线观看| 青青草成人在线观看| 正在播放一区二区| 久久99这里只有精品| 久久免费午夜影院| 成人高清av在线| 亚洲视频一区在线观看| 欧美午夜理伦三级在线观看| 亚洲国产另类av| 欧美另类一区二区三区| 蜜桃av一区二区在线观看| 久久亚洲捆绑美女| 99视频在线观看一区三区| 最新热久久免费视频| 欧美日韩在线亚洲一区蜜芽| 偷拍一区二区三区四区| 精品国产乱码久久久久久夜甘婷婷 | 欧美性猛片xxxx免费看久爱| 亚洲一卡二卡三卡四卡五卡| 欧美老女人在线| 蜜桃一区二区三区四区| 国产丝袜美腿一区二区三区| 成人av资源在线| 亚洲综合激情小说| 欧美一区二区三区白人| 国产一区 二区| 一区二区三区免费在线观看| 欧美猛男超大videosgay| 国产毛片精品国产一区二区三区| 中文字幕一区二区视频| 欧美精品久久久久久久多人混战 | youjizz久久|