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

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

?? tmman.c

?? PNX系列設備驅動 PNX系列設備驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*---------------------------------------------------------------------------- 
COPYRIGHT (c) 1997 by Philips Semiconductors

THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED AND COPIED IN 
ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH A LICENSE AND WITH THE 
INCLUSION OF THE THIS COPY RIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES 
OF THIS SOFTWARE MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER
PERSON. THE OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. 

THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT ANY PRIOR NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY Philips Semiconductor. 

PHILIPS ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF THIS SOFTWARE
ON PLATFORMS OTHER THAN THE ONE ON WHICH THIS SOFTWARE IS FURNISHED.
----------------------------------------------------------------------------*/
/*
	HISTORY
	970804	Tilakraj Roy	Created from vtmman sources for NT Workstation
*/

/*----------------------------------------------------------------------------
          SYSTEM INCLUDE FILES
----------------------------------------------------------------------------*/
#include "ntddk.h"
/*----------------------------------------------------------------------------
          DRIVER SPECIFIC INCLUDE FILES
----------------------------------------------------------------------------*/
#include "tmmanapi.h"
#include "tmmanlib.h"
#include "platform.h"

/*----------------------------------------------------------------------------
          GLOBAL DATA STRUCTURE INSTANSCIATION
----------------------------------------------------------------------------*/
GlobalObject *TMManGlobal;


/*----------------------------------------------------------------------------
          FUNCTION PROTOTYPES
----------------------------------------------------------------------------*/

NTSTATUS DriverEntry(
    IN PDRIVER_OBJECT pDriverObject,
    IN PUNICODE_STRING RegistryPath );

VOID DriverExit(
    IN PDRIVER_OBJECT pDriverObject );

NTSTATUS tmmanOpen(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp );

NTSTATUS tmmanClose(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp );

NTSTATUS tmmanDeviceControl(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp );

NTSTATUS tmmanRead(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp );

NTSTATUS tmmanWrite(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp );


BOOLEAN RegistryEnumerateKeyNameToDWORD( 
	HANDLE	RegistryHandle,
	ULONG   Index,
	PULONG	ValuePtr );


BOOLEAN RegistryReadDWORD ( 
	HANDLE	RegistryHandle, 
	PWCHAR	ValueName,
	PULONG	ValuePtr );

BOOLEAN 
InitTriMedia (
	halParameters* Config );

BOOLEAN
InitBridge ( 
	halParameters* Config );

/*----------------------------------------------------------------------------
          PAGE LOCKING
----------------------------------------------------------------------------*/

#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT,DriverEntry)
#pragma alloc_text(INIT,tmmanInit)
#endif

/*----------------------------------------------------------------------------
          FUNCTION DEFINITIONS
----------------------------------------------------------------------------*/

#define MAX_TMSUBSYSTEMID_ACCEPTED 10


NTSTATUS DriverEntry(
    IN PDRIVER_OBJECT DriverObject,
    IN PUNICODE_STRING RegistryPath
)
{
	
	ULONG				TMSubSystemIDAccepted[MAX_TMSUBSYSTEMID_ACCEPTED];
	ULONG				ulTMSubSystemIDAcceptedCount;
	ULONG				Idx;
	NTSTATUS			NTStatus;
    UNICODE_STRING		UserDeviceNameString;
    UNICODE_STRING		KernelDeviceNameString;
	PDEVICE_OBJECT		DeviceObject;
    OBJECT_ATTRIBUTES	RegistryObjectAttributes;
	UNICODE_STRING		TMManRegistryPath;
	debugParameters		DebugParameters;
    ULONG				Disposition;


	RtlInitUnicodeString ( &UserDeviceNameString, L"\\DosDevices\\TMMAN" );
	RtlInitUnicodeString ( &KernelDeviceNameString, L"\\Device\\TriMedia" );

	DbgPrint ( "\nRegistryPath[%wZ]\n",
		RegistryPath );
	
	DbgPrint ( "UserName[%wZ]\n",
		&UserDeviceNameString );

	DbgPrint ( "KernelName[%wZ]\n",
		&KernelDeviceNameString );



	// Create the device object
    NTStatus = IoCreateDevice(
		 DriverObject,
		 sizeof (GlobalObject),
		 &KernelDeviceNameString,
		 FILE_DEVICE_UNKNOWN,
		 0,                        // No standard device characteristics
		 FALSE,                    // This isn't an exclusive device
		 &DeviceObject  );

    if ( ! NT_SUCCESS(NTStatus) )
    {
		DbgPrint ( "tmman:DriverEntryIoCreateDevice:FAIL[%x]\n", NTStatus );
		goto DriverEntryExit1;
	}

    // Create a link from our device name to a name in the Win32 namespace.
    NTStatus = IoCreateSymbolicLink ( 
		&UserDeviceNameString, 
		&KernelDeviceNameString);

    if ( ! NT_SUCCESS(NTStatus) )
    {
		DbgPrint ( "tmman:DriverEntry:IoCreateSymbolicLink:FAIL[%x]\n", NTStatus );
		goto DriverEntryExit2;
    }

    // set the io flags
    DeviceObject->Flags |= DO_BUFFERED_IO;

	TMManGlobal = (GlobalObject*)DeviceObject->DeviceExtension;

	// begin registry param reads here

	RtlInitUnicodeString ( &TMManRegistryPath , 
		L"\\REGISTRY\\Machine\\SOFTWARE\\PhilipsSemiconductors\\TriMedia\\TMMan" );

	DebugParameters.TraceBufferSize = constTMManHostTraceBufferSize;
	DebugParameters.LevelBitmap = constTMManHostTraceLeveBitmap;
	DebugParameters.Type = constTMManHostTraceType;
	TMManGlobal->TargetTraceBufferSize = constTMManTargetTraceBufferSize;
	TMManGlobal->TargetTraceLeveBitmap = constTMManTargetTraceLeveBitmap;
	TMManGlobal->TargetTraceType = constTMManTargetTraceType;
	TMManGlobal->MemorySize = constTMManMemorySize;
	TMManGlobal->MailboxCount = constTMManMailboxCount;
	TMManGlobal->ChannelCount = constTMManChannelCount;
	TMManGlobal->VIntrCount = constTMManVIntrCount;
	TMManGlobal->MessageCount = constTMManMessageCount;
	TMManGlobal->EventCount = constTMManEventCount;
	TMManGlobal->NameSpaceCount = constTMManNameSpaceCount;
	TMManGlobal->MemoryCount = constTMManMemoryCount;
	TMManGlobal->SGBufferCount = constTMManSGBufferCount;
	TMManGlobal->StreamCount = constTMManStreamCount;
	TMManGlobal->SpeculativeLoadFix = 0;
	TMManGlobal->PCIInterruptNumber = constTMMANTargetToHostIRQ;
	TMManGlobal->MMIOInterruptNumber = constTMMANHostToTargetIRQ;
	TMManGlobal->MapSDRAM = TRUE;

    InitializeObjectAttributes(
        &RegistryObjectAttributes,
        &TMManRegistryPath,           
        OBJ_CASE_INSENSITIVE,   
        NULL,                   
        NULL                    
        );

    NTStatus = ZwCreateKey(
		&TMManGlobal->RegistryHandle,
		KEY_WRITE,
		&RegistryObjectAttributes,
		0,                 
		NULL,              
		0,                 
		&Disposition);     

	if ( ! NT_SUCCESS ( NTStatus ) )
	{
		DbgPrint ( "tmman:ZwCreateKey(%wZ):FAIL[%x]\n", &TMManRegistryPath, NTStatus );
	}
	else
	{
		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"HostTraceBufferSize",
			&DebugParameters.TraceBufferSize );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"HostTraceLevelBitmap",
			&DebugParameters.LevelBitmap );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"HostTraceType",
			&DebugParameters.Type );


		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"TargetTraceBufferSize",
			&TMManGlobal->TargetTraceBufferSize );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"TargetTraceLevelBitmap",
			&TMManGlobal->TargetTraceLeveBitmap );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"TargetTraceType",
			&TMManGlobal->TargetTraceType );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"MemorySize",
			&TMManGlobal->MemorySize );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"MailboxCount",
			&TMManGlobal->MailboxCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"ChannelCount",
			&TMManGlobal->ChannelCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"VIntrCount",
			&TMManGlobal->VIntrCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"MessageCount",
			&TMManGlobal->MessageCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"EventCount",
			&TMManGlobal->EventCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"StreamCount",
			&TMManGlobal->StreamCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"NameSpaceCount",
			&TMManGlobal->NameSpaceCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"MemoryCount",
			&TMManGlobal->MemoryCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"SGBufferCount",
			&TMManGlobal->SGBufferCount );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"SpeculativeLoadFix",
			&TMManGlobal->SpeculativeLoadFix );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"PCIInterruptNumber",
			&TMManGlobal->PCIInterruptNumber );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"MMIOInterruptNumber",
			&TMManGlobal->MMIOInterruptNumber );

		RegistryReadDWORD (
			TMManGlobal->RegistryHandle,
			L"MapSDRAM",
			&TMManGlobal->MapSDRAM );


		

		NTStatus = ZwClose(
			TMManGlobal->RegistryHandle );
	}


	
	RtlInitUnicodeString ( &TMManRegistryPath , L"\\REGISTRY\\Machine\\SOFTWARE\\PhilipsSemiconductors\\TriMedia\\TMMan\\TMSubSystemID" );

	InitializeObjectAttributes(
        &RegistryObjectAttributes,
        &TMManRegistryPath,           
        OBJ_CASE_INSENSITIVE,   
        NULL,                   
        NULL                    
        );

    NTStatus = ZwCreateKey(
		&TMManGlobal->RegistryHandle,
		KEY_WRITE,
		&RegistryObjectAttributes,
		0,                 
		NULL,              
		0,                 
		&Disposition);     

	memSet( TMSubSystemIDAccepted, 0, sizeof(TMSubSystemIDAccepted));
	ulTMSubSystemIDAcceptedCount = 0;
	if ( ! NT_SUCCESS ( NTStatus ) )
	{
		DbgPrint ( "tmman:ZwCreateKey(%wZ):FAIL[%x]\n", &TMManRegistryPath, NTStatus );
	}
	else
	{
		// Read all SubSystemID
		NTSTATUS status;
		ULONG i = 0;
		ULONG ulValue;
	
		for( i = 0; i < MAX_TMSUBSYSTEMID_ACCEPTED; i++)
		{
		
			if(RegistryEnumerateKeyNameToDWORD( TMManGlobal->RegistryHandle, i, &ulValue ))
			{
				ulTMSubSystemIDAcceptedCount++;
				TMSubSystemIDAccepted[i] = ulValue;
				DbgPrint ( "\t SubVendorID: 0x%x\n", ulValue);
			}
			else
			{
				DbgPrint ( "\t SubVendorID exit: %d\n", i);
				break;
			}
		}
	}

	NTStatus = ZwClose( TMManGlobal->RegistryHandle );
	
	
	// end registry

	// initialize the debugging subsystem so that we can start dumping stuff
	debugInit ( &DebugParameters );

	// initialize the Global Object 
	TMManGlobal->DeviceObject = DeviceObject;

	TMManGlobal->DriverObject = DriverObject;

	TMManGlobal->DriverRegistryPath.Length = 0;

	TMManGlobal->DriverRegistryPath.Buffer = 
		ExAllocatePool ( PagedPool, RegistryPath->Length );
		
	if ( TMManGlobal->DriverRegistryPath.Buffer == NULL )
	{
		DPF(0,("tmman:DriverEntry:ExAllocatePool:RegistryPath:FAIL\n"));
		goto DriverEntryExit3;
	}

	TMManGlobal->DriverRegistryPath.MaximumLength = RegistryPath->Length;

	RtlCopyUnicodeString ( &TMManGlobal->DriverRegistryPath,  RegistryPath );

	TMManGlobal->BitFlags = 0;
	TMManGlobal->MaximumDevices = constTMMANMaximumDeviceCount;
	TMManGlobal->MaximumClients = constTMMANMaximumClientCount;
	TMManGlobal->DeviceCount = 0;
	TMManGlobal->ClientCount = 0;

	for ( Idx = 0 ; Idx < TMManGlobal->MaximumDevices ; Idx++ )
	{
			TMManGlobal->DeviceList[Idx] = NULL;
	}

	
	for ( Idx = 0 ; Idx < TMManGlobal->MaximumClients ; Idx++ )
	{
			TMManGlobal->ClientList[Idx] = NULL;
	}

    //Create dispatch points
	DriverObject->MajorFunction[IRP_MJ_CREATE]         = tmmanOpen;
	DriverObject->MajorFunction[IRP_MJ_CLOSE]          = tmmanClose;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = tmmanDeviceControl;
    DriverObject->DriverUnload                         = DriverExit;


	// enumerate all the PCI devices in the sytem that have a matching
	// device and vendor ID and call the tmman initializaiton routine
	// to allocate resources for the specifc device object

	// this function call the function tmmanInit with the halParameters
	// structures.
	
	
	pnpFindPCIDevices  ( constTMMANDECBridgeVendorID, constTMMANDECBridgeDeviceID, NULL );
	//check if user requested only specific SubSystemID
	pnpFindPCIDevices  ( constTMMANTM1000VendorID, constTMMANTM1000DeviceID, ulTMSubSystemIDAcceptedCount == 0 ? NULL : TMSubSystemIDAccepted );

	pnpFindPCIDevices  ( constTMMANTM2000VendorID, constTMMANTM2000DeviceID, NULL );
	//check if user requested only specific SubSystemID
	pnpFindPCIDevices  ( constTMMANTM1300VendorID, constTMMANTM1300DeviceID, ulTMSubSystemIDAcceptedCount == 0 ? NULL : TMSubSystemIDAccepted );
	

	// if we haven't found atleast one board to run on, then unload
	/*
	if ( TMManGlobal->DeviceCount  == 0 )
	{
		goto DriverEntryExit4;	
	}
	*/
	return STATUS_SUCCESS;

//DriverEntryExit4:
//	ExFreePool (TMManGlobal->DriverRegistryPath.Buffer  );

DriverEntryExit3:
	IoDeleteSymbolicLink ( &UserDeviceNameString );

DriverEntryExit2:
	IoDeleteDevice ( DeviceObject );

DriverEntryExit1:
	return STATUS_UNSUCCESSFUL;

}

VOID DriverExit (
    IN PDRIVER_OBJECT DriverObject )
{
	ULONG	Idx;
    UNICODE_STRING	UserDeviceNameString;
	RtlInitUnicodeString ( &UserDeviceNameString, L"\\DosDevices\\TMMAN" );
	
	for ( Idx = 0 ; Idx < TMManGlobal->DeviceCount ;
		Idx++ )
	{
		if ( TMManGlobal->DeviceList[Idx] )
		{
			tmmanExit ( Idx );
			TMManGlobal->DeviceList[Idx] = NULL;
		}
	}

	debugExit( );

	ExFreePool ( TMManGlobal->DriverRegistryPath.Buffer  );

	IoDeleteSymbolicLink ( &UserDeviceNameString );

	IoDeleteDevice ( TMManGlobal->DeviceObject );
}

//////////////////////////////////////////////////////////////////////////////
//
//	STANDARD ENTRY POINTS
//
//////////////////////////////////////////////////////////////////////////////

Pointer	tmmanInit ( 
	UInt32 DSPNumber, 
	Pointer Configuration )
{

	halParameters*				HalParameters = (halParameters*)Configuration;
	channelManagerParameters	ChannelParameters;
	vintrManagerParameters		VIntrParameters;
	eventManagerParameters		EventParameters;
	messageManagerParameters	MessageParameters;
	memoryManagerParameters		MemoryParameters;
	namespaceManagerParameters	NameSpaceParameters;
	sgbufferManagerParameters	SGBufferParameters;

	UInt32						TMManControlSize;
	UInt32						HalControlSize;
	UInt32						NameSpaceControlSize;
	UInt32						MemoryControlSize;

	NTSTATUS					NTStatus;
	TMStatus					Status;
	PHYSICAL_ADDRESS			HighestPhysicalAddress;
	TMManDeviceObject*			TMManDevice;

	HANDLE						RegistryHandle;
	OBJECT_ATTRIBUTES			RegistryObjectAttributes;
	ULONG						Disposition;
	CHAR						TMManRegistryPathCHAR[100];
	UNICODE_STRING				TMManRegistryPath;
	ANSI_STRING					TMManRegistryPathANSI;



	
	// all this has to be done on a device specific basis

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91高清视频在线| 中文字幕日韩一区二区| 国产欧美中文在线| 亚洲成人精品在线观看| 成人av资源站| 精品人在线二区三区| 亚洲一区自拍偷拍| 波多野结衣精品在线| 欧美va在线播放| 亚洲1区2区3区视频| 99热精品一区二区| 国产亚洲欧洲997久久综合| 美脚の诱脚舐め脚责91| 在线免费一区三区| 亚洲人成在线播放网站岛国| 国产成人免费在线| 欧美v国产在线一区二区三区| 亚洲成人高清在线| 色一情一伦一子一伦一区| 国产精品人成在线观看免费 | 国产传媒久久文化传媒| 91精品欧美综合在线观看最新| 亚洲综合在线视频| av影院午夜一区| 国产精品国产三级国产普通话蜜臀| 国内外成人在线视频| 精品久久久久av影院| 五月婷婷欧美视频| 欧美视频你懂的| 亚洲国产va精品久久久不卡综合| 一本色道亚洲精品aⅴ| 国产精品电影一区二区三区| eeuss国产一区二区三区| 国产欧美日韩精品一区| 成人性生交大片免费看视频在线| 久久久综合视频| 成人一区二区三区视频在线观看| 欧美国产乱子伦 | 欧美一区二区在线不卡| 亚洲国产精品一区二区尤物区| 色菇凉天天综合网| 偷拍一区二区三区| 日韩欧美三级在线| 国内精品视频666| 日韩欧美一区二区免费| 国精品**一区二区三区在线蜜桃| 久久亚洲捆绑美女| 成人黄色电影在线| 亚洲欧美精品午睡沙发| 欧美日韩在线播放三区| 美国三级日本三级久久99| 精品国产露脸精彩对白 | 国产欧美综合在线| 99精品视频一区二区三区| 亚洲国产成人av好男人在线观看| 在线观看91av| 国产精品一级二级三级| 亚洲欧美一区二区不卡| 91精品国产综合久久精品麻豆 | a美女胸又www黄视频久久| 亚洲精品一二三区| 日韩色视频在线观看| 成人精品小蝌蚪| 一区二区三区精密机械公司| 欧美精选一区二区| 国产精品综合二区| 亚洲国产美国国产综合一区二区| 欧美一级国产精品| 成人一二三区视频| 日日骚欧美日韩| 中文天堂在线一区| 日韩亚洲欧美高清| 91色.com| 国产精品影视在线观看| 亚洲成人免费影院| 国产精品福利影院| 日韩欧美在线一区二区三区| 99久久精品免费| 捆绑调教美女网站视频一区| 亚洲人成人一区二区在线观看| 日韩女优av电影在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 免费成人av在线播放| 亚洲精品免费视频| 久久精品欧美日韩精品| 51久久夜色精品国产麻豆| 91一区二区在线| 国产成人av一区二区| 蜜桃传媒麻豆第一区在线观看| 亚洲黄色在线视频| 国产欧美精品区一区二区三区 | 亚洲r级在线视频| 亚洲视频一区在线| 中文字幕乱码日本亚洲一区二区| 欧美一区二区视频观看视频| 色婷婷综合五月| 成a人片国产精品| 国产精品一区二区三区四区| 免费观看30秒视频久久| 亚洲a一区二区| 亚洲成在线观看| 一区二区三区不卡在线观看| 亚洲视频香蕉人妖| 最新日韩av在线| 国产精品每日更新在线播放网址| 欧美tk—视频vk| 日韩欧美国产午夜精品| 欧美一级黄色片| 日韩一级大片在线| 日韩欧美另类在线| 精品久久人人做人人爱| 精品久久国产字幕高潮| 精品av久久707| 亚洲精品一区二区三区在线观看| 日韩一级成人av| 精品国产乱码久久久久久老虎 | 国产在线不卡一区| 国产精品99久久久久久似苏梦涵 | 欧美三级资源在线| 欧美手机在线视频| 69av一区二区三区| 欧美一区二区三区视频免费播放 | 777xxx欧美| 欧美久久久久久蜜桃| 在线观看91av| 久久蜜桃香蕉精品一区二区三区| 久久精品视频一区二区| 国产精品视频一二三区| 日韩理论片网站| 亚洲动漫第一页| 琪琪久久久久日韩精品| 国产高清在线观看免费不卡| 成人黄色电影在线| 欧美日韩精品一区二区天天拍小说| 日韩一区二区三区高清免费看看| 精品毛片乱码1区2区3区| 久久精品欧美一区二区三区不卡| 中文字幕一区二区三区蜜月 | 欧美高清dvd| 久久精品水蜜桃av综合天堂| 亚洲人被黑人高潮完整版| 天堂在线一区二区| 精品一区二区三区的国产在线播放 | 成人深夜在线观看| 91黄色激情网站| 精品蜜桃在线看| 亚洲日本va在线观看| 婷婷成人综合网| 国产九九视频一区二区三区| 91看片淫黄大片一级在线观看| 8x8x8国产精品| 国产精品午夜在线| 日日噜噜夜夜狠狠视频欧美人| 处破女av一区二区| 欧美日韩免费电影| 中文字幕 久热精品 视频在线| 亚洲综合小说图片| 国精产品一区一区三区mba视频| 99精品视频一区| 欧美xfplay| 亚洲国产成人av好男人在线观看| 国产精品综合久久| 欧美日韩一本到| 亚洲欧洲韩国日本视频| 美脚の诱脚舐め脚责91| 在线观看一区二区视频| 国产欧美精品一区aⅴ影院 | www.视频一区| 日韩一区二区免费在线观看| 亚洲精品自拍动漫在线| 国产高清精品网站| 欧美一区二区女人| 亚洲图片一区二区| caoporen国产精品视频| 久久久久国产免费免费| 全国精品久久少妇| 欧美日韩在线直播| 一区二区三区四区精品在线视频| 高清beeg欧美| 欧美精品一区二区高清在线观看 | 一区二区三区日本| 成人av午夜电影| 久久精品夜色噜噜亚洲aⅴ| 全国精品久久少妇| 欧美日韩精品一区视频| 亚洲福利视频导航| 色婷婷精品大在线视频| 椎名由奈av一区二区三区| 福利电影一区二区三区| 久久久久久久久伊人| 久久机这里只有精品| 日韩一区国产二区欧美三区| 日韩中文字幕区一区有砖一区| 91国偷自产一区二区三区观看 | 极品瑜伽女神91| 日韩美女主播在线视频一区二区三区| 一区二区三区四区亚洲| 91片在线免费观看| 亚洲在线视频一区| 欧美视频三区在线播放|