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

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

?? hardware.c

?? 一個類似與Windows環(huán)境下的softice的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************** * * Copyright (c) 2003 Gerhard W. Gruber * * PROJECT: pICE * $Source: /cvsroot/pice/pice/module/hardware.c,v $ * $Revision: 1.6 $ * $Date: 2004/02/17 23:07:36 $ * $Author: lightweave $ * $Name:  $ * * $Log: hardware.c,v $ * Revision 1.6  2004/02/17 23:07:36  lightweave * * Improved the DEBUG facillity and replaced the configuration handler with a * new code which now can read MS Windows INI style files. See CHANGES.txt for * more details. * Also added a macro which prevents compiling for kernels before 2.4.19. * * Revision 1.4  2003/06/18 22:00:22  lightweave * DEBUG and DEBUG_SERIAL added * * *****************************************************************************/static char *ident = "$Header: /cvsroot/pice/pice/module/hardware.c,v 1.6 2004/02/17 23:07:36 lightweave Exp $";/*++Copyright (c) 1998-2001 Klaus P. GerlicherModule Name:    hardware.cAbstract:	    output to consoleEnvironment:    Kernel mode onlyAuthor:    Klaus P. GerlicherRevision History:    04-Aug-1998:	created    15-Nov-2000:    general cleanup of source files    Copyright notice:  This file may be distributed under the terms of the GNU Public License.--*/////////////////////////////////////////////////////// INCLUDES////#include "remods.h"#include <asm/io.h>#include <linux/ctype.h>#include <asm/delay.h>#include "precomp.h"////////////////////////////////////////////////////// PROTOTYPES////////////////////////////////////////////////////////// DEFINES////////////////////////////////////////////////////////// GLOBALS////// flagging stuffBOOLEAN bCursorEnabled = FALSE;BOOLEAN bConsoleIsInitialized = FALSE;// terminal emulationETERMINALMODE eTerminalMode = TERMINAL_MODE_NONE;// window stuffWINDOW wWindow[4];// screen parameterULONG GLOBAL_SCREEN_WIDTH,GLOBAL_SCREEN_HEIGHT;// jump table to real output functionsOUTPUT_HANDLERS ohandlers;INPUT_HANDLERS ihandlers;// ring buffer stuffULONG ulInPos = 0,ulLastPos = 0;ULONG ulOldInPos = 0,ulOldDelta = 0;BOOLEAN bSuspendPrintRingBuffer = FALSE;struct _RING_BUFFER{	USHORT usForegroundColor;	USHORT usBackgroundColor;	char buffer[1024];} aBuffers[LINES_IN_BUFFER];char OneTempBuffer[sizeof(aBuffers[0].buffer)];// color of windows pane separation barsUSHORT usCaptionColor       = BLUE;USHORT usCaptionText        = WHITE;USHORT usForegroundColor    = LTGRAY;USHORT usBackgroundColor    = BLACK;USHORT usHiLiteColor        = WHITE;////////////////////////////////////////////////////// FUNCTIONS//////*************************************************************************// SuspendPrintRingBuffer()////*************************************************************************void SuspendPrintRingBuffer(BOOLEAN bSuspend){    //ENTER_FUNC();    bSuspendPrintRingBuffer = bSuspend;    //LEAVE_FUNC();}//*************************************************************************// EmptyRingBuffer()////*************************************************************************void EmptyRingBuffer(void){    //ENTER_FUNC();    ulLastPos = ulInPos = ulOldInPos = ulOldDelta = 0;	PICE_memset(aBuffers,0,sizeof(aBuffers));    //LEAVE_FUNC();}//*************************************************************************// LinesInRingBuffer()////*************************************************************************ULONG LinesInRingBuffer(void){    ULONG ulResult;    //ENTER_FUNC();    ulResult = (ulInPos-ulLastPos)%LINES_IN_BUFFER;    //LEAVE_FUNC();	return ulResult;}//*************************************************************************// CheckRingBuffer()////*************************************************************************void CheckRingBuffer(void){    //ENTER_FUNC();	PrintRingBuffer(wWindow[OUTPUT_WINDOW].cy-1);    //LEAVE_FUNC();}//*************************************************************************// AddToRingBuffer()////*************************************************************************BOOLEAN AddToRingBuffer(LPSTR p){   ULONG i,j,len;   BOOLEAN bHadReturn = FALSE;   //ENTER_FUNC();    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "checking if inside buffers (ulInpos = %u)\n", ulInPos);    if(ulInPos >= LINES_IN_BUFFER)    {		 DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "attempt to leave ring buffer\n");		 //LEAVE_FUNC();		 return FALSE;    }    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "checking input string\n");    j = PICE_strlen(p);    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "input string has %u chars\n",j);    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "getting length of string\n");    // size of current string    j = PICE_strlen(aBuffers[ulInPos].buffer);    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "length of current string = %u\n",j);    // start with ':' and current has ':' in front    if(aBuffers[ulInPos].buffer[0]==':' && *p==':')    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "colon case\n");        if(j==1)        {            //LEAVE_FUNC();            return FALSE;        }		aBuffers[ulInPos].buffer[j++]='\n';		aBuffers[ulInPos].buffer[j]=0;		ulInPos = (ulInPos+1)%LINES_IN_BUFFER;		// wrap around		if(ulInPos == ulLastPos)		{			ulLastPos = (ulLastPos+1)%LINES_IN_BUFFER;			PICE_memset(aBuffers[ulInPos].buffer,0,sizeof(aBuffers[0].buffer));		}        // reset to start of buffer		j = 0;        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "leaving colon case\n");    }    // it's an internal print ("pICE: ...")    else    if(aBuffers[ulInPos].buffer[0]==':' && PICE_strncmpi(p,"pICE:",5)==0)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "internal case\n");	if(j==1)	{	   PICE_memset(aBuffers[ulInPos].buffer,0,sizeof(aBuffers[0].buffer));	}	else	{	   aBuffers[ulInPos].buffer[j++]='\n';	   aBuffers[ulInPos].buffer[j]=0;	   ulInPos = (ulInPos+1)%LINES_IN_BUFFER;	   // wrap around	   if(ulInPos == ulLastPos)	   {	      ulLastPos = (ulLastPos+1)%LINES_IN_BUFFER;	      PICE_memset(aBuffers[ulInPos].buffer,0,sizeof(aBuffers[0].buffer));	   }	}        // reset to start of buffer	j = 0;        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "leaving internal case\n");    }    // it's a debug print and the current line is starting with ':'    else    if(aBuffers[ulInPos].buffer[0]==':' &&       ( (*p=='<' && isdigit(*(p+1)) && *(p+2)=='>') || bIsDebugPrint) )    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "kernel debug print\n");	if(j==1)	{	   PICE_memset(aBuffers[ulInPos].buffer,0,sizeof(aBuffers[0].buffer));	}	else	{	   aBuffers[ulInPos].buffer[j++]='\n';	   aBuffers[ulInPos].buffer[j]=0;	   ulInPos = (ulInPos+1)%LINES_IN_BUFFER;	   // wrap around	   if(ulInPos == ulLastPos)	   {	      ulLastPos = (ulLastPos+1)%LINES_IN_BUFFER;	      PICE_memset(aBuffers[ulInPos].buffer,0,sizeof(aBuffers[0].buffer));	   }	}        // reset to start of buffer	j = 0;        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "leaving kernel debug print\n");    }    // it's a debug print    else if(( (*p=='<' && isdigit(*(p+1)) && *(p+2)=='>') || bIsDebugPrint) )    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "debug print\n");        p += 3;        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "leaving debug print\n");    }    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "getting size of new string\n");    // size of new string    len = PICE_strlen(p);    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "size of new string = %u\n",len);    // if combined string length too big    // reduce to maximum    if( (len+j) > sizeof(aBuffers[0].buffer)-2 )    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "combine strings\n");        PICE_memcpy(OneTempBuffer,p,sizeof(aBuffers[0].buffer)-2);        p = OneTempBuffer;        // assume we end in NEWLINE        p[sizeof(aBuffers[0].buffer)-2]='\n';        p[sizeof(aBuffers[0].buffer)-1]=0;        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "leaving combine strings\n");    }    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "formatting string\n");	for(i=0;p[i]!=0;i++)	{		// newline		if(p[i]=='\n')		{			aBuffers[ulInPos].buffer[j++]='\n';			aBuffers[ulInPos].buffer[j]=0;			ulInPos = (ulInPos+1)%LINES_IN_BUFFER;			// wrap around			if(ulInPos == ulLastPos)			{				ulLastPos = (ulLastPos+1)%LINES_IN_BUFFER;				PICE_memset(aBuffers[ulInPos].buffer,0,sizeof(aBuffers[0].buffer));			}            // reset to start of buffer			j = 0;            // notify that we had a NEWLINE            bHadReturn = TRUE;		}		// backspace		else if(p[i]=='\b')		{			if(j!=0)			{				j--;				aBuffers[ulInPos].buffer[j] = 0;			}		}		// TAB		else if(p[i]=='\t')		{            // copy TAB			aBuffers[ulInPos].buffer[j++] = p[i];		}		else		{			if((UCHAR)p[i]<0x20 || (UCHAR)p[i]>0x7f)				p[i]=0x20;						aBuffers[ulInPos].buffer[j++] = p[i];		}	}    	// set colors on buffer line	aBuffers[ulInPos].usForegroundColor = usForegroundColor;	aBuffers[ulInPos].usBackgroundColor = usBackgroundColor;    //LEAVE_FUNC();    return bHadReturn;}//*************************************************************************// ReplaceRingBufferCurrent()////*************************************************************************void ReplaceRingBufferCurrent(LPSTR s){    //ENTER_FUNC();    if(ulInPos >= LINES_IN_BUFFER)    {       DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "attempt to leave ring buffer\n");       //LEAVE_FUNC();       return;    }    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "checking input string\n");    if(!PICE_strlen(s))    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "string is empty!\n");        //LEAVE_FUNC();        return;    }    PICE_memset(aBuffers[ulInPos].buffer,0,sizeof(aBuffers[0].buffer));    PICE_strcpy(aBuffers[ulInPos].buffer,s);    //LEAVE_FUNC();}//*************************************************************************// PrintRingBuffer()////*************************************************************************void PrintRingBuffer(ULONG ulLines){   ULONG ulDelta;   ULONG ulOutPos,i;    //ENTER_FUNC();   if(bSuspendPrintRingBuffer)   {      DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "suspended\n");      //LEAVE_FUNC();      return;   }   if(ulInPos == ulOldInPos )   {      DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "didn't move forward\n");      //LEAVE_FUNC();      return;   }	    ulOldInPos = ulInPos;    ulDelta = LinesInRingBuffer();        if(!ulDelta)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "no lines in ring buffer\n");        //LEAVE_FUNC();		return;    }    if(ulDelta<ulOldDelta)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "lines already output\n");        //LEAVE_FUNC();        return;    }    ulOldDelta = ulDelta;    if(ulDelta < ulLines)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "less lines than requested\n");	ulLines = ulDelta;    }	ulOutPos = (ulInPos-ulLines)%LINES_IN_BUFFER;    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "ulOutPos = %u\n",ulOutPos);    Home(OUTPUT_WINDOW);    ClrLines(wWindow[OUTPUT_WINDOW].y,ulLines);    i = ulLines;	while(ulLines--)	{		SetForegroundColor(aBuffers[ulOutPos].usForegroundColor);		SetBackgroundColor(aBuffers[ulOutPos].usBackgroundColor);		Print(OUTPUT_WINDOW_UNBUFFERED,aBuffers[ulOutPos].buffer);		ResetColor();		ulOutPos = (ulOutPos+1)%LINES_IN_BUFFER;	}    if(aBuffers[ulOutPos].buffer[0]==':')    {        ClrLines(wWindow[OUTPUT_WINDOW].y+i,1);		SetForegroundColor(aBuffers[ulOutPos].usForegroundColor);		SetBackgroundColor(aBuffers[ulOutPos].usBackgroundColor);		Print(OUTPUT_WINDOW_UNBUFFERED,aBuffers[ulOutPos].buffer);		ResetColor();    	wWindow[OUTPUT_WINDOW].usCurX = 1;    }    //LEAVE_FUNC();}//*************************************************************************// PrintRingBufferOffset()////*************************************************************************BOOLEAN PrintRingBufferOffset(ULONG ulLines,ULONG ulOffset){	ULONG ulLinesInRingBuffer;	ULONG ulOutPos;    //ENTER_FUNC();    ulLinesInRingBuffer = LinesInRingBuffer();    // no lines in ring buffer	if(!ulLinesInRingBuffer)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "ulLinesInRingBuffer is 0\n");        //LEAVE_FUNC();		return FALSE;    }    // more lines inc. offset to display than in ring buffer	if(ulLinesInRingBuffer < ulLines)    {        ulLines = ulLinesInRingBuffer;    }	if(ulLinesInRingBuffer < ulOffset+ulLines)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "ulLinesInRingBuffer < ulOffset+ulLines\n");        //LEAVE_FUNC();        return FALSE;    }    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "ulLinesInRingBuffer %u ulLines %u ulOffset %u\n",ulLinesInRingBuffer,ulLines,ulOffset);    ulOutPos = (ulInPos-ulOffset-ulLines)%LINES_IN_BUFFER;    DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "ulOutPos = %u\n",ulOutPos);    if(ulOutPos == ulInPos)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "ulOutPos == ulInPos\n");        //LEAVE_FUNC();        return FALSE;    }    // start to output upper left corner of window	Home(OUTPUT_WINDOW);    // while not end reached...    ClrLines(wWindow[OUTPUT_WINDOW].y,ulLines);	while(ulLines--)	{		SetForegroundColor(aBuffers[ulOutPos].usForegroundColor);		SetBackgroundColor(aBuffers[ulOutPos].usBackgroundColor);		Print(OUTPUT_WINDOW_UNBUFFERED,aBuffers[ulOutPos].buffer);		ResetColor();		ulOutPos = (ulOutPos+1)%LINES_IN_BUFFER;	}    if(aBuffers[ulInPos].buffer[0]==':')    {        ClrLines(wWindow[OUTPUT_WINDOW].y+wWindow[OUTPUT_WINDOW].cy-1,1);        wWindow[OUTPUT_WINDOW].usCurY = wWindow[OUTPUT_WINDOW].cy-1;		SetForegroundColor(aBuffers[ulInPos].usForegroundColor);		SetBackgroundColor(aBuffers[ulInPos].usBackgroundColor);		Print(OUTPUT_WINDOW_UNBUFFERED,aBuffers[ulInPos].buffer);		ResetColor();    	wWindow[OUTPUT_WINDOW].usCurX = strlen(aBuffers[ulInPos].buffer)+1;    }    //LEAVE_FUNC();    return TRUE;}//*************************************************************************// PrintRingBufferHome()////*************************************************************************BOOLEAN PrintRingBufferHome(ULONG ulLines){   ULONG ulDelta;   ULONG ulOutPos;    //ENTER_FUNC();    ulDelta = LinesInRingBuffer();    // no lines in ring buffer    if(!ulDelta)    {        DPRINT(PICE_DEBUG, DBT_HARDWARE, DBL_INFO, "no lines in ring buffer\n");        //LEAVE_FUNC();	return FALSE;    }    // more lines inc. offset to display than in ring buffer	if(ulDelta < ulLines)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日产国产高清一区二区三区 | 激情深爱一区二区| 国产精品久久网站| 久久精品欧美一区二区三区麻豆| 欧美一区二区三区在| 欧美日韩成人综合在线一区二区| 国产成人免费av在线| 亚洲超碰精品一区二区| 亚洲国产中文字幕| 亚洲人妖av一区二区| 91免费在线视频观看| 国产超碰在线一区| 国产制服丝袜一区| 天堂久久一区二区三区| 亚洲r级在线视频| 日韩高清一区在线| 国产一区二区导航在线播放| 国产麻豆91精品| 激情图片小说一区| proumb性欧美在线观看| 欧美色中文字幕| 日韩欧美一区二区视频| 国产欧美在线观看一区| 中文字幕欧美一区| 日韩精品每日更新| 成人永久看片免费视频天堂| av在线播放不卡| 欧美日韩成人在线一区| 日韩欧美你懂的| 国产精品美女久久久久久久久久久 | 午夜精品久久久| 另类的小说在线视频另类成人小视频在线| 日日摸夜夜添夜夜添精品视频| 国产一区三区三区| 欧美午夜片在线看| 亚洲国产精品av| 亚洲成人手机在线| 成人激情电影免费在线观看| 91蜜桃在线免费视频| 欧美一级免费观看| 亚洲日穴在线视频| 国产一区二区在线视频| 欧美视频在线播放| 国产精品日韩精品欧美在线| 日韩中文字幕不卡| 在线视频你懂得一区二区三区| 精品久久国产老人久久综合| 一区二区三区精品在线观看| 国内精品免费**视频| 欧美中文字幕不卡| 中文字幕一区三区| 国产乱码精品1区2区3区| 欧美高清性hdvideosex| 亚洲色图都市小说| 精品一区二区成人精品| 在线亚洲人成电影网站色www| 久久蜜桃av一区精品变态类天堂 | 国产夫妻精品视频| 日韩欧美色综合网站| 午夜成人在线视频| 在线观看欧美精品| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 日本高清免费不卡视频| 国产精品久久久久久久久免费桃花| 久久99精品一区二区三区 | 韩国成人福利片在线播放| 欧美精品色综合| 天天射综合影视| 在线亚洲一区观看| 亚洲另类色综合网站| 91天堂素人约啪| 亚洲国产精品成人久久综合一区| 紧缚捆绑精品一区二区| 91精品欧美一区二区三区综合在| 亚洲欧美日韩中文字幕一区二区三区 | 欧美人与禽zozo性伦| 一区二区在线观看免费| 欧美亚洲另类激情小说| 亚洲国产精品久久人人爱| 欧美制服丝袜第一页| 亚洲高清视频中文字幕| 欧美日韩一区二区电影| 亚洲超碰精品一区二区| 337p亚洲精品色噜噜狠狠| 天天色天天爱天天射综合| 91精品啪在线观看国产60岁| 奇米色一区二区| 26uuu精品一区二区在线观看| 国产精一品亚洲二区在线视频| 国产免费观看久久| 日本丰满少妇一区二区三区| 亚洲成人久久影院| 日韩三级高清在线| 国产美女在线观看一区| 亚洲国产精品av| 色88888久久久久久影院按摩 | 久久99在线观看| 国产视频在线观看一区二区三区 | 欧美日韩免费在线视频| 免费欧美在线视频| 国产精品久久久久桃色tv| 一本大道久久精品懂色aⅴ| 午夜电影一区二区三区| 久久久五月婷婷| 色视频成人在线观看免| 美洲天堂一区二卡三卡四卡视频 | 蜜臀精品一区二区三区在线观看| 久久久久国色av免费看影院| 99r国产精品| 麻豆国产精品一区二区三区| 欧美国产激情二区三区| 欧美区一区二区三区| 懂色av噜噜一区二区三区av| 亚洲午夜激情av| 国产欧美一区二区精品忘忧草| 色一情一伦一子一伦一区| 激情五月婷婷综合网| 亚洲福利一区二区三区| 中文欧美字幕免费| 日韩欧美美女一区二区三区| 91福利资源站| 国产999精品久久| 久久精品国产精品青草| 亚洲一区二区三区在线| 欧美韩国日本不卡| 日韩视频永久免费| 欧美影视一区在线| 99re热视频精品| 国产mv日韩mv欧美| 美女视频黄久久| 午夜视频一区在线观看| 亚洲桃色在线一区| 国产日韩欧美在线一区| 日韩欧美国产1| 欧美肥大bbwbbw高潮| 91成人免费在线视频| 成人福利视频在线| 国产91丝袜在线18| 国产成人精品免费| 激情文学综合插| 精品在线亚洲视频| 久久99国产精品免费网站| 舔着乳尖日韩一区| 午夜精品久久久久久久久久久| 久久综合久久综合九色| 欧美日韩黄色一区二区| 欧美丝袜丝交足nylons| 9i看片成人免费高清| www..com久久爱| 91香蕉国产在线观看软件| 成人一区二区视频| 成人app网站| av成人老司机| 91国偷自产一区二区使用方法| 92国产精品观看| 91黄色免费观看| 99精品久久久久久| 色哟哟国产精品| 欧美无砖砖区免费| 91麻豆精品国产91久久久更新时间| 欧美日本在线观看| 日韩免费一区二区| 久久精品欧美日韩| 亚洲人123区| 天天综合网天天综合色| 麻豆精品在线播放| 国产乱人伦偷精品视频免下载 | 国产日韩精品一区| 中文字幕一区二区三区四区不卡| 天堂资源在线中文精品| 久久成人18免费观看| 国产精品18久久久久久久久| 高清视频一区二区| 99免费精品在线| 欧美人与性动xxxx| 久久精品视频在线看| 成人欧美一区二区三区小说| 亚洲尤物视频在线| 久久激情五月激情| 91美女片黄在线观看| 在线播放中文字幕一区| 日本一区二区综合亚洲| 亚洲午夜久久久久久久久电影院 | 欧美一级黄色片| 中文字幕不卡的av| 亚洲国产精品一区二区www| 伦理电影国产精品| www.综合网.com| 日韩三级免费观看| 中文字幕一区三区| 奇米色777欧美一区二区| 99久久国产免费看| 日韩欧美国产午夜精品| 亚洲伦在线观看| 国产激情视频一区二区三区欧美| 欧美亚洲国产一区二区三区| 精品国产乱码久久| 午夜国产精品一区| 日本韩国视频一区二区| 欧美zozozo|