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

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

?? smsc100fd.c

?? smsc公司的網(wǎng)絡(luò)芯片smsc100fd的wince源碼。
?? C
?? 第 1 頁 / 共 5 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/****************************************************************
 *																*
 * SMSC100FD Ethernet Driver for Windows CE.					*
 *																*
 ****************************************************************/
#include <ndis.h>
#include "Smsc100Fd.h"
#include <Smsc100FdCommon.h>
#include <winreg.h>
#include <nkintr.h>


int glbl_tmp;

//static unsigned pVirtualRegisterBase;
//static unsigned uMultiplier;
//
// Read and Write word macros for accessing the SMSC100FD Registers
//
_inline UINT16 ReadWord(PSMSC100FD_ADAPTER pAdapter,UINT wOffset) 
{
    USHORT usData;
    NdisReadRegisterUshort(
        (PUSHORT)((pAdapter->pVirtualRegisterBase) + (wOffset*pAdapter->uMultiplier)),
        &usData);
    return usData;
}
    
_inline DWORD ReadDWord(PSMSC100FD_ADAPTER pAdapter,UINT wOffset) 
{
    DWORD dwData;
    NdisReadRegisterUlong(
        (PULONG)((pAdapter->pVirtualRegisterBase) + (wOffset*pAdapter->uMultiplier)),
        &dwData);
    return dwData;
};

_inline void WriteWord(PSMSC100FD_ADAPTER pAdapter,UINT wOffset, UINT16 Value) 
{
    NdisWriteRegisterUshort(
        (PUSHORT)((pAdapter->pVirtualRegisterBase) + (wOffset*pAdapter->uMultiplier)),
        Value);
}

#define SelectBank(x,Bank) WriteWord (x,BANK_SELECT, Bank)
void	printregs(IN PSMSC100FD_ADAPTER pAdapter);


//
// The global Miniport driver block.
//
DRIVER_BLOCK gSmsc100FdMiniportBlock = {0};

#if DBG
DBGPARAM dpCurSettings = {
    TEXT("Smsc100Fd"), {
    TEXT("Errors"),TEXT("Warnings"),TEXT("Functions"),TEXT("Init"),
    TEXT("Interrupts"),TEXT("Receives"),TEXT("Transmits"),TEXT("Link"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined") },
	ZONE_INIT_MASK | ZONE_ERROR_MASK
	};
#endif

// Values for [HKEY_LOCAL_MACHINE\Comm\SMSC100FD]
REG_VALUE_DESCR CommSmsc100FdKeyValues[] = {
	{(TEXT ("DisplayName")),		REG_SZ,			(PBYTE)(TEXT ("SMSC100FD Ethernet Driver"))},
	{(TEXT ("Group")),				REG_SZ,			(PBYTE)(TEXT ("NDIS"))},
	{(TEXT ("ImagePath")),			REG_SZ,			(PBYTE)(TEXT ("Smsc100Fd.dll"))},
	{NULL,							0,				NULL}};

// Values for [HKEY_LOCAL_MACHINE\Comm\SMSC100FD\Linkage]
REG_VALUE_DESCR CommSmsc100FdLinkageKeyValues[] = {
	{(TEXT ("Route")),				REG_MULTI_SZ,	(PBYTE)(TEXT ("SMSC100FD1"))},
	{NULL,							0,				NULL}};

// Values for [HKEY_LOCAL_MACHINE\Comm\SMSC100FD1]
REG_VALUE_DESCR CommSmsc100Fd1KeyValues[] = {
	{(TEXT ("DisplayName")),		REG_SZ,			(PBYTE)(TEXT ("SMSC100FD Ethernet Driver"))},
	{(TEXT ("Group")),				REG_SZ,			(PBYTE)(TEXT ("NDIS"))},
	{(TEXT ("ImagePath")),			REG_SZ,			(PBYTE)(TEXT ("Smsc100Fd.dll"))},
	{NULL,							0,				NULL}};

// Values for [HKEY_LOCAL_MACHINE\Comm\SMSC100FD1\Parms]
REG_VALUE_DESCR CommSmsc100Fd1ParmsKeyValues[] = {
	{(TEXT ("BusNumber")),			REG_SZ,			(PBYTE)(TEXT ("SMSC100FD Ethernet Driver"))},
	{(TEXT ("BusType")),			REG_SZ,			(PBYTE)(TEXT ("NDIS"))},
	{NULL,							0,				NULL}};

// Values for [HKEY_LOCAL_MACHINE\Comm\SMSC100FD1\Parms\TcpIp]
REG_VALUE_DESCR CommSmsc100Fd1ParmsTcpIpKeyValues[] = {
	{(TEXT ("EnableDHCP")),			REG_DWORD,		(PBYTE)1},
	{(TEXT ("DefaultGateway")),		REG_MULTI_SZ,	(PBYTE)(TEXT ("0.0.0.0"))},
	{(TEXT ("IpAddress")),			REG_MULTI_SZ,	(PBYTE)(TEXT ("0.0.0.0"))},
	{(TEXT ("Subnetmask")),			REG_MULTI_SZ,	(PBYTE)(TEXT ("0.0.0.0"))},
	{(TEXT ("WINS")),				REG_MULTI_SZ,	(PBYTE)(TEXT (""))},
	{(TEXT ("DNS")),				REG_MULTI_SZ,	(PBYTE)(TEXT (""))},
	{NULL,							0,				NULL}};

// Values for [HKEY_LOCAL_MACHINE\Comm\SMSC100FD1\Parms\TcpIp]
REG_VALUE_DESCR CommTcpIpLinkageKeyValues[] = {
	{(TEXT ("Bind")),				REG_MULTI_SZ,	(PBYTE)(TEXT ("SMSC100FD1"))},
	{NULL,							0,				NULL}};

PREG_VALUE_DESCR Values[] = {
    CommSmsc100FdKeyValues,
    CommSmsc100FdLinkageKeyValues,
    CommSmsc100Fd1KeyValues,
	CommSmsc100Fd1ParmsKeyValues,
	CommSmsc100Fd1ParmsTcpIpKeyValues,
	CommTcpIpLinkageKeyValues,
	};

LPWSTR KeyNames[] = {
    (TEXT ("Comm\\SMSC100FD")),
    (TEXT ("Comm\\SMSC100FD\\Linkage")),
    (TEXT ("Comm\\SMSC100FD1")),
    (TEXT ("Comm\\SMSC100FD1\\Parms")),
    (TEXT ("Comm\\SMSC100FD1\\Parms\\TcpIp")),
    (TEXT ("Comm\\TcpIp\\Linkage")),
	};

/*
 * Description:
 *	The Install_Driver routine sets up the registry keys and values required to install this
 *	DLL as a Windows CE driver.
 *
 * Arguments:
 *	lpPnpId - The device's plug and play identifier string.
 *			  An install function can use lpPnpId to set up a key HKEY_LOCAL_MACHINE\Drivers\PCMCIA\<lpPnpId> under the
 *			  assumption that the user will continue to use the same device that generates the same plug and play
 *			  id string. If there is a general detection method for the card, then lpPnpId can be ignored and a
 *			  detection function can be registered under HKEY_LOCAL_MACHINE\Drivers\PCMCIA\Detect.
 *	lpRegPath - Buffer to contain the newly installed driver's device key under HKEY_LOCAL_MACHINE in the registry.
 *			  Windows CE will attempt to load the the newly installed device driver upon completion of its
 *			  Install_Driver function.
 *	cRegPathSize - Number of bytes in lpRegPath.
 *
 * Return Value:
 *	lpRegPath if successful, NULL for failure.
 *
 */
LPWSTR
Install_Driver (LPWSTR lpPnpId, LPWSTR lpRegPath, DWORD  cRegPathSize)
	{
    UINT uiIndex;
//	NKDbgPrintfW (L"SMSC100FD: Install_Driver\r\n");
    DEBUGMSG (ZONE_INIT, (TEXT ("+SMSC100FD: Install_Driver (%s, %s, %d)\r\n"), lpPnpId, lpRegPath, cRegPathSize));

    for (uiIndex = 0; uiIndex < (sizeof (KeyNames) / sizeof (LPWSTR)); uiIndex++)
		{
        if (!AddKeyValues (KeyNames[uiIndex], Values[uiIndex]))
			{
			//
			// Clean up after failure.
			//
			for (uiIndex = 0; uiIndex < (sizeof (KeyNames) / sizeof (LPWSTR)); uiIndex++)
				RegDeleteKey (HKEY_LOCAL_MACHINE, KeyNames[uiIndex]);
		    DEBUGMSG (ZONE_INIT, (TEXT ("-SMSC100FD: Install_Driver: Failed\r\n")));
			return (NULL);
			}
	    }

    //
    // Return "HKEY_LOCAL_MACHINE\Drivers\SMSC100FD"
    //
    wcscpy (lpRegPath, KeyNames[0]);
    DEBUGMSG (ZONE_INIT, (TEXT ("-SMSC100FD: Install_Driver: Success\r\n")));
    return (lpRegPath);
	}

/*
 * Description:
 *	Add the specified key and its values to the registry under HKEY_LOCAL_MACHINE
 *
 * Arguments:
 *	KeyName - The key name under HKLM.
 *	Vals - The kays values.
 *
 * Return Value:
 *	TRUE if successful, else FALSE.
 *
 */
BOOL
AddKeyValues (LPWSTR KeyName, PREG_VALUE_DESCR Vals)
	{
    DWORD Status;
    DWORD dwDisp;
    HKEY hKey;
    PREG_VALUE_DESCR pValue;
    DWORD ValLen;
    PBYTE pVal;
    DWORD dwVal;
    LPWSTR pStr;

    Status = RegCreateKeyEx (HKEY_LOCAL_MACHINE, KeyName, 0, NULL, REG_OPTION_NON_VOLATILE, 0, NULL, &hKey, &dwDisp);

    if (Status != ERROR_SUCCESS)
        return (FALSE);

    pValue = Vals;
    while (pValue->val_name)
		{
		switch (pValue->val_type)
			{
			case REG_DWORD:
				pVal = (PBYTE)&dwVal;
				dwVal = (DWORD)pValue->val_data;
				ValLen = sizeof (DWORD);
				break;
			case REG_SZ:
				pVal = (PBYTE)pValue->val_data;
				ValLen = (wcslen ((LPWSTR)pVal) + 1) * sizeof (WCHAR);
				break;
			case REG_MULTI_SZ:
				dwVal = wcslen ((LPWSTR)pValue->val_data);
				ValLen = (dwVal + 2) * sizeof (WCHAR);
				pVal = LocalAlloc (LPTR, ValLen);
				if (pVal == NULL)
					{
					RegCloseKey (hKey);
					return (FALSE);
					}
				wcscpy ((LPWSTR)pVal, (LPWSTR)pValue->val_data);
				pStr = (LPWSTR)pVal + dwVal;
				pStr[1] = 0;
				break;
			}
		Status = RegSetValueEx (hKey, pValue->val_name, 0, pValue->val_type, pVal, ValLen);
		if (pValue->val_type == REG_MULTI_SZ)
			LocalFree (pVal);
        if (Status != ERROR_SUCCESS)
			{
            RegCloseKey (hKey);
            return (FALSE);
			}
        pValue++;
	    }
    RegCloseKey (hKey);
    return (TRUE);
	}

/*
 * Description:
 *	Standard Windows DLL entrypoint.
 *
 * Arguments:
 *	hDLL - Handle to the DLL.
 *	dwReason - Reason for DllEntry call.
 *	lpReserved - Reserved.
 *
 * Return Value:
 *	TRUE.
 *
 */
BOOL __stdcall
DllEntry (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved)
	{
    DEBUGMSG (ZONE_FUNCTION, (TEXT ("+SMSC100FD: DllEntry\r\n")));
    switch (dwReason)
		{
		case DLL_PROCESS_ATTACH:
			DEBUGREGISTER (hDLL);
			DEBUGMSG (ZONE_INIT, (TEXT (" SMSC100FD: DLL_PROCESS_ATTACH\r\n")));
			DisableThreadLibraryCalls((HMODULE) hDLL);
			break;
		case DLL_PROCESS_DETACH:
			DEBUGMSG (ZONE_INIT, (TEXT (" SMSC100FD: DLL_PROCESS_DETACH\r\n")));
			break;
		}
    DEBUGMSG (ZONE_FUNCTION, (TEXT ("-SMSC100FD: DllEntry\r\n")));
	return (TRUE);
	}

//
// List of supported OID for this the SMSC100FD driver.
//
static UINT Smsc100FdSupportedOids[] = {
    OID_GEN_SUPPORTED_LIST,
    OID_GEN_HARDWARE_STATUS,
    OID_GEN_MEDIA_SUPPORTED,
    OID_GEN_MEDIA_IN_USE,
    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_DESCRIPTION,
    OID_GEN_VENDOR_ID,
    OID_GEN_DRIVER_VERSION,
    OID_GEN_CURRENT_PACKET_FILTER,
    OID_GEN_CURRENT_LOOKAHEAD,
    OID_GEN_XMIT_OK,
    OID_GEN_RCV_OK,
    OID_GEN_XMIT_ERROR,
    OID_GEN_RCV_ERROR,
    OID_GEN_RCV_NO_BUFFER,
    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,
#ifndef UNDER_CE    
    OID_802_3_XMIT_MORE_COLLISIONS
#else
     OID_802_3_XMIT_MORE_COLLISIONS,
     OID_GEN_MEDIA_CONNECT_STATUS,
     OID_GEN_MAXIMUM_SEND_PACKETS,
     OID_GEN_VENDOR_DRIVER_VERSION   
#endif
    };

/*
 * Description:
 *	The Smsc100FdQueryInformation processes a Query request for NDIS_OIDs that are specific to the Driver.
 *
 * Arguments:
 *	hMiniportAdapterContext - A pointer to the adapter.
 *	Oid - The NDIS_OID to process.
 *	InformationBuffer - A pointer to where to put the result of the query.
 *	InformationBufferLength - A pointer to the number of bytes left in the InformationBuffer.
 *	BytesWritten - A pointer to the number of bytes written into the InformationBuffer.
 *	BytesNeeded - If there is not enough room in the information buffer then this will contain the number
 *				  of bytes needed to complete the request.
 *
 * Return Value:
 *	The status of the operation.
 *
 */
NDIS_STATUS
Smsc100FdQueryInformation (IN NDIS_HANDLE hMiniportAdapterContext, IN NDIS_OID Oid, IN PVOID pInformationBuffer, IN ULONG ulInformationBufferLength, OUT PULONG pulBytesWritten, OUT PULONG pulBytesNeeded)
	{
    //
    // Pointer to the adapter structure.
    //
	PSMSC100FD_ADAPTER pAdapter = (PSMSC100FD_ADAPTER)(hMiniportAdapterContext);
    //
    //   General Algorithm:
    //
    //      Switch(Request)
    //         Get requested information
    //         Store results in a common variable.
    //      default:
    //         Try protocol query information
    //         If that fails, fail query.
    //
    //      Copy result in common variable to result buffer.
    //   Finish processing

	NDIS_STATUS StatusToReturn = NDIS_STATUS_SUCCESS;
	NDIS_HARDWARE_STATUS HardwareStatus = NdisHardwareStatusReady;
	NDIS_MEDIUM Medium = NdisMedium802_3;
	UCHAR VendorString[] = "SMSC91C100FD Ethernet Controller.";
    //
    // These variables holds the result of the query
    //
    ULONG ulGeneric;
    USHORT usGeneric;
    UCHAR ucGenericArray[6];
    ULONG ulMoveBytes = sizeof (ULONG);
    PVOID pMoveSource = (PVOID)(&ulGeneric);

    DEBUGMSG (ZONE_FUNCTION, (TEXT ("+SMSC100FD: QueryInformation OID = 0x%x pAdapter = 0x%x hMiniportAdapterContext = 0x%x\r\n"), Oid, pAdapter, hMiniportAdapterContext));
    //
    // Make sure that an int is 4 bytes. Else GenericULong must change
    // to something of size 4.
    //
    ASSERT(sizeof (ULONG) == 4);

    //
    // Switch on request type
    //
    switch (Oid)
		{
		case OID_GEN_MAC_OPTIONS:
			ulGeneric = (ULONG)(NDIS_MAC_OPTION_TRANSFERS_NOT_PEND | NDIS_MAC_OPTION_RECEIVE_SERIALIZED | NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA | NDIS_MAC_OPTION_NO_LOOPBACK);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只有精品首页| 99久久久国产精品免费蜜臀| 91黄色免费版| 欧美极品少妇xxxxⅹ高跟鞋| 国产麻豆精品theporn| 56国语精品自产拍在线观看| 亚洲高清视频中文字幕| 欧美三级日韩三级| 亚洲大片精品永久免费| 欧美丝袜第三区| 日韩高清欧美激情| 3atv在线一区二区三区| 日本aⅴ亚洲精品中文乱码| 91精品国产日韩91久久久久久| 午夜国产不卡在线观看视频| 欧美日韩国产另类一区| 午夜伊人狠狠久久| 日韩一卡二卡三卡国产欧美| 九九九久久久精品| 久久久国产综合精品女国产盗摄| 国产精品一区在线观看你懂的| 国产亚洲欧洲997久久综合| 国产激情一区二区三区| 国产精品久久福利| 欧美色爱综合网| 美腿丝袜亚洲一区| 国产午夜精品一区二区| 91丨porny丨国产入口| 亚洲永久精品大片| 精品欧美一区二区久久| 丁香五精品蜜臀久久久久99网站 | 99久久精品一区| 亚洲另类一区二区| 欧美一区二区三区四区在线观看 | 亚洲一区二区av电影| 欧美日本在线观看| 国精产品一区一区三区mba视频 | 国产精品一区二区在线看| 国产日韩精品一区| 色94色欧美sute亚洲线路一ni| 一级中文字幕一区二区| 日韩亚洲欧美在线| www.欧美色图| 免费日韩伦理电影| 国产精品国产精品国产专区不片| 欧美自拍丝袜亚洲| 国产美女在线观看一区| 亚洲精品中文字幕在线观看| 日韩一区二区三区视频在线| 丁香五精品蜜臀久久久久99网站 | 国产日韩综合av| 欧美色图一区二区三区| 国产一区二区影院| 午夜精品视频一区| 国产精品免费观看视频| 欧美一区二区性放荡片| 99精品黄色片免费大全| 久久国产精品色婷婷| 一区二区视频在线看| 精品福利一区二区三区| 欧美性猛交xxxx乱大交退制版| 国产一区二区三区不卡在线观看| 亚洲精品中文在线| 精品久久久久久久久久久久包黑料 | 青青草国产精品97视觉盛宴| 91精品婷婷国产综合久久性色| 成人自拍视频在线| 日本特黄久久久高潮| 亚洲三级免费电影| 精品国产一区二区三区久久久蜜月 | 亚洲一级在线观看| 国产精品久久久久一区| 亚洲精品一区二区三区影院| av午夜一区麻豆| 日本不卡免费在线视频| 日韩一区在线看| 日韩美女一区二区三区四区| 91久久精品一区二区三| 国产69精品久久久久毛片| 丝袜诱惑亚洲看片| 亚洲国产毛片aaaaa无费看 | 欧美精品久久一区| 色播五月激情综合网| 91视频观看免费| 白白色亚洲国产精品| 国产suv精品一区二区6| 国产成人精品免费视频网站| 国产精品99久久久久久宅男| 精品无码三级在线观看视频| 青草国产精品久久久久久| 日韩1区2区3区| 日韩电影在线观看网站| 亚洲图片欧美色图| 午夜精品一区二区三区三上悠亚| 国产精品欧美综合在线| 中文一区二区在线观看| 中文av一区特黄| 久久精品人人做人人综合| 91精品国产一区二区| 欧美人伦禁忌dvd放荡欲情| 2023国产精华国产精品| 欧美一级欧美三级在线观看| 欧美一区二区成人6969| 日韩精品中文字幕一区| 精品久久久久久无| 国产欧美日韩久久| 中文一区二区完整视频在线观看| 中文在线免费一区三区高中清不卡| 中文乱码免费一区二区| 亚洲精品一卡二卡| 婷婷国产在线综合| 精品在线免费视频| 成人一级片网址| 91丝袜呻吟高潮美腿白嫩在线观看| av在线不卡免费看| 欧洲国内综合视频| 日韩免费视频一区| 国产精品欧美久久久久无广告| 亚洲乱码精品一二三四区日韩在线| 亚洲一区二区视频在线观看| 日韩精品国产欧美| 国产成人在线色| 色妞www精品视频| 欧美曰成人黄网| 日韩一二三区视频| 成人免费在线观看入口| 亚洲国产va精品久久久不卡综合| 极品销魂美女一区二区三区| 国产不卡在线播放| 一区二区三区在线观看网站| 日本中文字幕一区二区视频| 国产91丝袜在线18| av一区二区三区在线| 欧美性猛片aaaaaaa做受| 日韩欧美在线一区二区三区| 精品久久久久久无| 一区二区理论电影在线观看| 久久精品国产99| 91精品1区2区| 26uuu色噜噜精品一区二区| 亚洲免费看黄网站| 久久99精品久久久| 在线免费不卡电影| 精品国产电影一区二区| 亚洲午夜久久久久久久久电影网| 激情综合色播五月| 在线观看亚洲成人| 中文字幕不卡在线| 一级女性全黄久久生活片免费| 韩国女主播一区| 欧美私人免费视频| 国产精品久久久久久久久快鸭 | 欧美成人三级在线| 一区二区三区国产| 国产不卡视频在线观看| 91精品久久久久久久久99蜜臂| 欧美国产一区二区在线观看| 日韩高清在线不卡| 在线精品国精品国产尤物884a| 国产日韩av一区| 蜜臀av一区二区在线免费观看| 97久久精品人人爽人人爽蜜臀| 2019国产精品| 日本美女一区二区三区| 在线视频国内自拍亚洲视频| 国产精品美女久久久久久久网站| 经典三级在线一区| 欧美不卡一区二区三区四区| 亚洲国产精品视频| 色偷偷88欧美精品久久久| 国产亚洲综合性久久久影院| 日韩主播视频在线| 国产精华液一区二区三区| 精品日韩一区二区三区免费视频| 亚洲第一成年网| 91电影在线观看| 亚洲欧美日韩在线| 成人黄色软件下载| 国产精品视频在线看| 国产福利电影一区二区三区| 欧美精品一区二区三区视频| 久久精品国产99国产精品| 精品少妇一区二区三区免费观看| 日本在线不卡视频一二三区| 在线不卡免费av| 婷婷久久综合九色综合伊人色| 精品少妇一区二区三区 | 国产精品久久久久aaaa樱花| 91亚洲国产成人精品一区二三| 亚洲精品视频一区| 欧美日韩免费视频| 精品一区二区日韩| 国产精品卡一卡二| 欧美丰满美乳xxx高潮www| 精品一区二区在线视频| 国产精品女主播在线观看| 欧美色视频在线观看| 国产一区二区三区视频在线播放| 国产精品乱码人人做人人爱| 欧美性大战久久久久久久蜜臀|