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

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

?? eztwain.c

?? DELPHI 直接操作掃描儀接口的例子。
?? C
?? 第 1 頁 / 共 4 頁
字號:
// EZTWAIN.C - Easy TWAIN DLL main module
//
// 	05/11/94	spike	initial version
// 1.00	06/17/94	spike
// 1.01	07/27/94	spike - added XferCount negotiation
// 1.02 10/26/94	spike - fixed bug in ModalEventLoop (thanks to Bill DeVoe of HP)
//							replaced random flags with state tracking
// 1.03 02/06/95	spike - fixed gross omissions in WriteDibToFile
// 1.04 04/05/95	spike - added WriteNativeToFile, WriteNativeToFilename, FreeNative
//							added Get/SetCurrentUnits, SetCurrentPixelType
//							added SetCurrentResolution, SetCapOneValue
//							corrected bug in SelectImageSource
// 1.05 04/02/97	spike - 32-bit version.
//							Correction to MessageHook, for thunking DSM.
//							Bugfix: 32-bit version of TWAIN_WriteDibToFile
// 1.06 08/21/97	spike
//							Yet another correction to MessageHook.
//							Figured out how to export names 'as is' in 32-bit version.

#define VERSION 106		// version number, times 100.

//------------ Includes

//#include <assert.h>
//#include <memory.h>		// memset, memcpy

#include "windows.h"
#include "commdlg.h"

#ifdef _WIN32
#ifndef _INC_VFW
#include <vfw.h>
#endif
#else
#include "commdlg.h"
#endif

#include "twain.h"

#ifdef _WIN32
  #define EZTAPI WINAPI
#else
  #define EZTAPI __export FAR PASCAL
#endif

#include "eztwain.h"

//------------ Constants and Macros

#define STATIC static
#ifdef __BORLANDC__
#define _WIN32
#endif

#ifdef _WIN32
  #define INT32 int
  #define DATAGROUP unsigned
  #define DSM_FILENAME "TWAIN_32.DLL"
  #define DSM_ENTRYPOINT "DSM_Entry"
  #define IsValidHandle(h) (h!=NULL)
  #define HUGEWRITE(fh, pb, bc) ((INT32)_lwrite(fh, pb, bc))
  #define FMEMSET(p, v, n) memset(p, v, n);
  #define FMEMCPY(p, q, n) memcpy(p, q, n);
#else
  #define INT32 long
  #define DATAGROUP unsigned long
  #define DSM_FILENAME "TWAIN.DLL"
  #define DSM_ENTRYPOINT "DSM_ENTRY"
  #define VALID_HANDLE 32
  #define IsValidHandle(h) ((h!=0) && ((h) >= 32))
  #define HUGEWRITE(fh, pb, bc) _hwrite(fh, pb, bc)
  #define FMEMSET(p, v, n) _fmemset(p, v, n);
  #define FMEMCPY(p, q, n) _fmemcpy(p, q, n);
#endif

#define MAX_IMAGES 999
#define TW_CALLBACK_REGISTERED 0xf0f0f

typedef enum {
	ED_NONE,
	ED_START_TRIPLET_ERRS,
	ED_CAP_GET,				// MSG_GET triplet on a capability failed
	ED_CAP_SET,				// MSG_SET triplet on capability failed
	ED_DSM_FAILURE,			// TWAIN DSM returned TWRC_FAILURE
	ED_DS_FAILURE,			// source returned TWRC_FAILURE
	ED_END_TRIPLET_ERRS,
	ED_NOT_STATE_4,			// operation invoked in wrong state
	ED_NULL_HCON,			// MSG_GET returned a null container handle
	ED_BAD_HCON,			// MSG_GET returned an invalid/unlockable container handle
	ED_BAD_CONTYPE,			// returned container ConType is not valid.
	ED_BAD_ITEMTYPE,		// returned container ItemType is not valid.
	ED_CAP_GET_EMPTY,		// returned container has 0 items.
	ED_CAP_SET_EMPTY,		// trying to restrict a cap to empty set
} ErrorDetail;

const char *pszErrDescrip[] =
	{	"[no details available]",
		"",
		"DAT_CAPABILITY/MSG_GET failed",
		"DAT_CAPABILITY/MSG_SET failed",
		"Source Manager operation failed",
		"DataSource operation failed",
		"",
		"TWAIN session not in State 4 (Source Open)",
		"MSG_GET returned a NULL container handle",
		"MSG_GET returned an invalid container handle",
		"Returned container is not valid type",
		"Returned container has invalid ItemType",
		"Returned container is empty",
		"App and source found NO values in common",
	};

const char *pszRC[] = {
	"TWRC_SUCCESS",
	"TWRC_FAILURE",
	"TWRC_CHECKSTATUS ('tried hard')",
	"TWRC_CANCEL",
	"TWRC_DSEVENT",
	"TWRC_NOTDSEVENT",
	"TWRC_XFERDONE",
	"TWRC_ENDOFLIST",
};

const char *pszCC[] = {
	"TWCC_SUCCESS",
	"TWCC_BUMMER (Failure due to unknown causes)",
	"TWCC_LOWMEMORY",
	"TWCC_NODS (No Data Source)",
	"TWCC_MAXCONNECTIONS (DS is connected to max possible apps)",
	"TWCC_OPERATIONERROR (DS or DSM reported error, app shouldn't)",
	"TWCC_BADCAP (Unknown capability)",
	"7 (undefined)",
	"8 (undefined)",
	"TWCC_BADPROTOCOL (Unrecognized triplet)",
	"TWCC_BADVALUE (Data parameter out of range)",
	"TWCC_SEQERROR (Triplet out of sequence)",
	"TWCC_BADDEST (Unknown dest. App/Src in DSM_Entry)",
};

//------------ Global variables

STATIC int			iAvailable;			// TWAIN available: 0:unknown, -1:No, 1:Yes
STATIC int			nState = 1;			// TWAIN state (per the standard)
STATIC int			nErrDetail;			// detailed error code
STATIC unsigned		nErrRC, nErrCC;		// result code and condition code for last error
STATIC char			szMsg[256];			// scratch buffer for messages
STATIC DSMENTRYPROC	pDSM_Entry;			// entry point of Data Source Manager (TWAIN.DLL)
STATIC HANDLE		hDSMLib;			// handle of DSM
STATIC TW_IDENTITY	AppId = {			// application identity structure
	0,									// Id, filled in by DSM
	{ 1, 0, TWLG_USA, TWCY_USA, "<?>"},	// Version
	 TWON_PROTOCOLMAJOR,
	 TWON_PROTOCOLMINOR,
	 DG_IMAGE | DG_CONTROL,
	 "<?>",								// Mfg
	 "<?>",								// Family
	 "<?>"								// Product
	 };
STATIC TW_IDENTITY	SourceId;			// source identity structure
STATIC BOOL			bHideUI;			// allow source u/i to be hidden
STATIC TW_USERINTERFACE twUI;
STATIC TW_PENDINGXFERS pendingXfers;
STATIC HANDLE		hDib;				// bitmap returned by native transfer
STATIC TW_INT16		rc;					// result code
STATIC HINSTANCE	hinstLib;			// instance handle for this DLL

STATIC HANDLE hDibList[MAX_IMAGES];
STATIC TW_INT32 nDibs;
STATIC HDIBCALLBACKPROC lpfnDibCallback;
STATIC int hDibCallback_registered = 0;

const char szInsuffMem[] = "Insufficient Memory";	// error message
STATIC int bTrace = 0;  // debugging helper

//------------ Forward declarations

void TWAIN_NativeXferReady(LPMSG pmsg);
HWND CreateProxyWindow(void);
unsigned Intersect16(unsigned wMask, unsigned nItems, TW_UINT16 far *pItem);
unsigned BitCount(unsigned W);
void TWAIN_ErrorBox(const char *szMsg);
int RecordError(ErrorDetail ed);
void ClearError(void);
void TWAIN_ReportLastError(LPSTR lpzGeneral);
// TW_UINT32 ToFix32(double r);
// double Fix32ToFloat(TW_FIX32 fix);
// above functions implemented on the Delphi side to avoid need for floating
// point library functions --DSN 7/98
void assert(int);

//------------ Public functions
// the two functions below are implemented by hand vs. the C RTL so that the
// resultant OBJ can be neatly linked into a Delphi DCU.
void assert(int a)
{
  if (a == 0)
	  MessageBox(NULL, "Assertion failed", "EZTWAIN", MB_OK);
}

void *memset(void *s, int c, size_t n)
{
	size_t j;
	char *p;
	p = (char *) s;

	for (j = 0; j < n; j++)
		p[j] = (char) c;

	return s;
}

void *memcpy(void *dest, const void *src, size_t n)
{
	size_t j;
	char *pdest, *psrc;
	pdest = (char *) dest;
	psrc = (char *)src;
	for (j = 0; j < n; j++)
		pdest[j] = psrc[j];

	return dest;
}

#ifdef _WIN32

// Win32 DLL main
/*BOOL WINAPI DllMain(HANDLE hModule,
						  ULONG  ulEvent,
						  LPVOID lpReserved)
{
	return 1;
}*/

#else

// Win16 DLL initialization and termination routines
int CALLBACK __export LibMain(HINSTANCE hinst, WORD wDataSeg, WORD cbHeapSize, LPSTR lpszCmdLine)
{
	wDataSeg = wDataSeg; cbHeapSize = cbHeapSize; lpszCmdLine = lpszCmdLine;

	hinstLib = hinst;
	return 1;		// indicate success
} // LibMain


int FAR PASCAL __export _WEP(int x)
{
	x = x;				// suppress 'is never used' warning
	return 1;
} // _WEP


#endif


void EZTAPI TWAIN_RegisterApp(	// record application information
	int		nMajorNum, int nMinorNum,	// major and incremental revision of application. E.g.
										// for version 2.1, nMajorNum == 2 and nMinorNum == 1
	int		nLanguage,					// language of this version (use TWLG_xxx from TWAIN.H)
	int		nCountry,					// country of this version (use TWCY_xxx from TWAIN.H)
	LPSTR	lpszVersion,				// version info string e.g. "1.0b3 Beta release"
	LPSTR	lpszMfg,					// name of manufacturer/developer e.g. "Crazbat Software"
	LPSTR	lpszFamily,					// product family e.g. "BitStomper"
	LPSTR	lpszProduct)				// specific product e.g. "BitStomper Deluxe Pro"
{
	 AppId.Id = 0;						// init to 0, but Source Manager will assign real value
    AppId.Version.MajorNum = nMajorNum;
    AppId.Version.MinorNum = nMinorNum;
    AppId.Version.Language = nLanguage;
    AppId.Version.Country  = nCountry;
    lstrcpy (AppId.Version.Info,  lpszVersion);

    AppId.ProtocolMajor =    TWON_PROTOCOLMAJOR;
	 AppId.ProtocolMinor =    TWON_PROTOCOLMINOR;
	 AppId.SupportedGroups =  DG_IMAGE | DG_CONTROL;
    lstrcpy (AppId.Manufacturer,  lpszMfg);
    lstrcpy (AppId.ProductFamily, lpszFamily);
    lstrcpy (AppId.ProductName,   lpszProduct);

} // TWAIN_RegisterApp


int EZTAPI TWAIN_SelectImageSource(HWND hwnd)
{

	int fSuccess = FALSE;
	int fProxyWindow = FALSE;

	if (!IsWindow(hwnd)) {
		if (hwnd != NULL) {
			TWAIN_ErrorBox("TWAIN_SelectImageSource: window handle is invalid");
			return FALSE;
		}
		hwnd = CreateProxyWindow();
		if (!IsWindow(hwnd)) {
			TWAIN_ErrorBox("TWAIN_SelectImageSource: Unable to create proxy window");
			return FALSE;
		}
		fProxyWindow = TRUE;
	}
	if (TWAIN_LoadSourceManager()) {
		if (TWAIN_OpenSourceManager(hwnd)) {
			TW_IDENTITY	NewSourceId;
#ifdef _WIN32
			FMEMSET(&NewSourceId, 0, sizeof NewSourceId);
#else
			// I will settle for the system default.  Shouldn't I get a highlight
			// on system default without this call?
			TWAIN_Mgr(DG_CONTROL, DAT_IDENTITY, MSG_GETDEFAULT, &NewSourceId);
#endif
			// Post the Select Source dialog
			fSuccess = TWAIN_Mgr(DG_CONTROL, DAT_IDENTITY, MSG_USERSELECT, &NewSourceId);
			 TWAIN_CloseSourceManager(hwnd);
		 } else {
			TWAIN_ErrorBox("Unable to open Source Manager (" DSM_FILENAME ")");
		 }
		 TWAIN_UnloadSourceManager();
	} else {
		TWAIN_ErrorBox("Unable to load Source Manager (" DSM_FILENAME ")");
	}
	 if (fProxyWindow) DestroyWindow(hwnd);

	return fSuccess;
} // TWAIN_SelectImageSource


HANDLE EZTAPI TWAIN_AcquireNative(HWND hwnd, unsigned wPixTypes)
{
	int fProxyWindow = FALSE;
	hDib = NULL;
	ClearError();			// clear error detail
	TWAIN_ClearDibList();

	if (!IsWindow(hwnd)) {
		// hwnd isn't a valid window handle - most likely NULL
		hwnd = CreateProxyWindow();
		if (hwnd) fProxyWindow = TRUE;
	}
	if (!IsWindow(hwnd)) {
		TWAIN_ErrorBox("Unable to create proxy window");
	} else if (!TWAIN_LoadSourceManager()) {
		TWAIN_ErrorBox("Unable to load Source Manager (" DSM_FILENAME ")");
	} else if (!TWAIN_OpenSourceManager(hwnd)) {
		TWAIN_ErrorBox("Unable to open Source Manager (" DSM_FILENAME ")");
	 } else if (!TWAIN_OpenDefaultSource()) {
		TWAIN_ReportLastError("Unable to open default Data Source.");
	} else if (!TWAIN_NegotiatePixelTypes(wPixTypes)) {
		TWAIN_ReportLastError("Failed to negotiate Pixel Type.");
	} else if (!TWAIN_EnableSource(hwnd)) {
		TWAIN_ReportLastError("Failed to enable Data Source.");
	} else {
		EnableWindow(hwnd, FALSE);
		// source is enabled, wait for transfer or source closed
		TWAIN_ModalEventLoop();

		EnableWindow(hwnd, TRUE);
	}

	// shut everything down in the right sequence
	// these routines do nothing if the corresponding 'open' failed
	TWAIN_DisableSource();
	TWAIN_CloseSource();
	 TWAIN_CloseSourceManager(hwnd);
	 TWAIN_UnloadSourceManager();

	 if (fProxyWindow) {
		DestroyWindow(hwnd);
	 }

	return hDib;
} // TWAIN_AcquireNative


void EZTAPI TWAIN_FreeNative(HANDLE hdib)
// Release the memory allocated to a native format image, as returned by TWAIN_AcquireNative.
// (For those coding in C or C++, this is just a call to GlobalFree.)
{
	if (hdib) GlobalFree(hdib);
} // TWAIN_FreeNative



int EZTAPI TWAIN_AcquireToClipboard(HWND hwndApp, unsigned wPixTypes)
// Like AcquireNative, but puts the resulting image, if any, into the system clipboard.
// Useful for environments like Visual Basic where it is hard to make direct use of a DIB handle.
// A return value of 1 indicates success, 0 indicates failure.
{
	int fOk = FALSE;
	HANDLE hDib = TWAIN_AcquireNative(hwndApp, wPixTypes);
	if (hDib) {
		if (OpenClipboard(hwndApp)) {
			if (EmptyClipboard()) {
				SetClipboardData(CF_DIB, hDib);
				fOk = TRUE;
				hDib = NULL;
			}
			CloseClipboard();
		}
		if (hDib) {
			// something went wrong, recycle the image
			GlobalFree(hDib);
		}
	}
	return fOk;		// failed
} // TWAIN_AcquireToClipboard


int EZTAPI TWAIN_AcquireToFilename(HWND hwndApp, char *pszFile)
// Adapted from a routine by David D. Henseler (ddh) of SOLUTIONS GmbH
{
	int result = -1;
	HANDLE	hDib = TWAIN_AcquireNative(hwndApp, TWAIN_ANYTYPE);
	if (hDib) {
		result = TWAIN_WriteNativeToFilename(hDib, pszFile);
		TWAIN_FreeNative(hDib);
	}
	return result;
} // TWAIN_AcquireToFile

//--------- Callback mechanism -------------
// These routines, added by DSN 7/98, allow the user to specify an
// optional callback function to be called each time a new image comes
// in.  This can be a potentially powerful way to increase the primary
// application's efficiency, because upon receipt of an hdib the app
// could start a background thread to begin processing the images as
// needed.  Why bother with this?  Because on my Pentium 150, the Windows
// NT task monitor indicates that when I download images at 112kbps that
// I'm only using 15% of the processor's power, and the remaining 85% of
// the time it is idle!  It's silly to wait to begin processing because
// there's so much untapped processing capacity here.

void EZTAPI TWAIN_RegisterCallback(HDIBCALLBACKPROC *fxn)
{
	  lpfnDibCallback = fxn;
	  hDibCallback_registered = TW_CALLBACK_REGISTERED;  // our signature, because I don't trust
													 // the supposed initialization to zero
													 // by the compiler
}

void EZTAPI TWAIN_UnRegisterCallback()
{
	  lpfnDibCallback = NULL;
	  hDibCallback_registered = TW_CALLBACK_REGISTERED;
}

///////////////////////////////////////////////////////////////////////
// DIB utilities

void EZTAPI TWAIN_ClearDibList()
/// new; added by DSN
/// note: user is responsible for calling TWAIN_FreeNative *before*
/// calling this function!

{
	  int i;
	  for (i = 0; i < MAX_IMAGES; i++)
			 hDibList[i] = 0;
	  nDibs = 0;
}

int EZTAPI TWAIN_GetNumDibs()
{
	  return nDibs;
}

HANDLE EZTAPI TWAIN_GetDib(int n)
{
	  return hDibList[n];
}
int EZTAPI TWAIN_DibDepth(HANDLE hdib)
{
	LPBITMAPINFOHEADER pbi = (LPBITMAPINFOHEADER)GlobalLock(hdib);
	int D = pbi->biBitCount;
	GlobalUnlock(hdib);
	return D;
} // TWAIN_DibDepth

int EZTAPI TWAIN_DibWidth(HANDLE hdib)
{
	LPBITMAPINFOHEADER pbi = (LPBITMAPINFOHEADER)GlobalLock(hdib);
	int W = (int)pbi->biWidth;
	GlobalUnlock(hdib);
	return W;
} // TWAIN_DibWidth


int EZTAPI TWAIN_DibHeight(HANDLE hdib)
{
	LPBITMAPINFOHEADER pbi = (LPBITMAPINFOHEADER)GlobalLock(hdib);
	int H = (int)pbi->biHeight;
	GlobalUnlock(hdib);
	return H;
} // TWAIN_DibHeight

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍亚洲欧洲综合| 亚洲另类一区二区| 日本va欧美va精品| 亚洲专区一二三| 欧美中文字幕一区二区三区| 亚洲色图制服丝袜| 欧美午夜不卡视频| 性做久久久久久久免费看| 欧美另类高清zo欧美| 麻豆成人91精品二区三区| 亚洲精品一区二区三区福利| 国产激情视频一区二区三区欧美 | 欧美乱妇20p| 免费不卡在线观看| 久久久99精品免费观看| 成人精品国产免费网站| 一区二区视频免费在线观看| 亚洲视频香蕉人妖| 欧美日本韩国一区二区三区视频| 日韩精品一级中文字幕精品视频免费观看 | 欧美日韩国产天堂| 美女诱惑一区二区| 国产精品久久久久影院色老大| 97久久精品人人做人人爽50路| 尤物视频一区二区| 日韩精品一区二| 99久久精品情趣| 免费观看在线综合色| 韩国女主播成人在线| 欧美激情一区二区三区蜜桃视频 | 亚洲成年人影院| 久久免费电影网| 91麻豆免费在线观看| 美女视频黄a大片欧美| 国产精品福利一区| 日韩精品亚洲专区| 国产欧美一区二区精品性| 欧美视频在线一区二区三区| 精品写真视频在线观看| 亚洲伦在线观看| 久久婷婷国产综合国色天香| 97久久精品人人爽人人爽蜜臀| 天天操天天干天天综合网| 国产精品视频线看| 日本中文字幕一区二区有限公司| 久久久精品黄色| 欧美日本精品一区二区三区| 成人sese在线| 久久精品国产999大香线蕉| 亚洲色图视频网| 久久久久久99久久久精品网站| 欧美另类z0zxhd电影| 99精品欧美一区二区三区小说| 日韩av不卡在线观看| 成人av免费在线观看| 蜜桃视频一区二区三区| 亚洲国产欧美另类丝袜| 成人欧美一区二区三区小说| 久久久久久97三级| 精品国产乱码久久久久久图片 | 精品久久久久久久久久久久久久久久久 | 韩国av一区二区三区在线观看| 亚洲精品欧美激情| 国产精品毛片大码女人| 久久精品欧美一区二区三区麻豆| 亚洲韩国一区二区三区| 国产精品久久久久久久午夜片| 精品免费视频一区二区| 欧美一级理论片| 欧美精品777| 欧美日本免费一区二区三区| 欧美在线高清视频| 97久久精品人人爽人人爽蜜臀| 大美女一区二区三区| 国产精品996| 欧美一区二区播放| 欧美日韩成人高清| 欧美日韩免费在线视频| 色欧美88888久久久久久影院| jizz一区二区| 99久久夜色精品国产网站| 99国产精品国产精品久久| 99国产精品久久久久| 色综合久久中文字幕综合网 | 99精品在线观看视频| 国产成人av福利| 成人国产精品免费| 91看片淫黄大片一级在线观看| 99久久精品免费看| 色悠悠久久综合| 在线视频一区二区三| 在线观看日韩高清av| 欧美午夜精品一区| 91精品国产综合久久久久久久 | 欧美影视一区在线| 欧洲精品视频在线观看| 欧美电影一区二区三区| 精品国一区二区三区| 国产亚洲va综合人人澡精品| 国产精品水嫩水嫩| 一区二区不卡在线播放| 偷拍与自拍一区| 国产一区二区精品久久99| 99精品一区二区三区| 亚洲精品欧美在线| 午夜久久电影网| 精品亚洲免费视频| 成人黄色av电影| 欧美视频在线播放| 国产亚洲欧美日韩日本| 亚洲黄色小说网站| 秋霞国产午夜精品免费视频| 国产制服丝袜一区| 色综合欧美在线| 欧美mv日韩mv| 亚洲免费观看高清完整版在线| 91美女片黄在线观看91美女| 欧美丰满美乳xxx高潮www| 国产亚洲一区二区三区在线观看 | 久久久久久麻豆| 亚洲免费在线看| 蜜臀av一级做a爰片久久| 不卡视频一二三| 日韩一区二区在线观看视频播放| 国产色爱av资源综合区| 91久久精品国产91性色tv| 日韩一区二区三区免费看| 综合久久国产九一剧情麻豆| 日韩影院在线观看| 国产成人99久久亚洲综合精品| 欧美日本不卡视频| 欧美激情一区二区三区蜜桃视频| 亚洲sss视频在线视频| av在线一区二区三区| 欧美va日韩va| 亚洲午夜久久久| 国产99精品在线观看| 亚洲午夜免费视频| 成人激情小说网站| 精品国产凹凸成av人网站| 亚洲综合免费观看高清完整版在线| 国产毛片一区二区| 日韩欧美一级二级三级久久久 | 丝袜美腿高跟呻吟高潮一区| 99久久久无码国产精品| 久久久99免费| 免费成人深夜小野草| 欧美丰满一区二区免费视频| 成人av集中营| 久久久av毛片精品| 久久69国产一区二区蜜臀| 在线不卡a资源高清| 樱花草国产18久久久久| 99久久精品情趣| 国产精品第五页| 成人午夜又粗又硬又大| 国产视频一区在线观看| 国产麻豆午夜三级精品| 精品欧美一区二区久久| 捆绑调教一区二区三区| 亚洲综合成人在线视频| 91麻豆福利精品推荐| 亚洲日本青草视频在线怡红院| 成人黄色一级视频| 亚洲视频 欧洲视频| av在线这里只有精品| 中文字幕欧美日韩一区| 成人精品视频网站| 国产精品毛片久久久久久久| 东方欧美亚洲色图在线| 国产精品天干天干在观线| 99re这里只有精品首页| 色综合久久久久久久久| 亚洲日本在线看| 91搞黄在线观看| 亚洲第四色夜色| 日韩欧美国产wwwww| 国产米奇在线777精品观看| 国产欧美va欧美不卡在线| av在线综合网| 亚洲午夜免费福利视频| 欧美一区二区三区日韩视频| 免费的成人av| 久久九九久久九九| 99久久精品国产观看| 成人国产精品免费观看视频| 国产精品高潮久久久久无| 色婷婷精品久久二区二区蜜臀av | 国产精品国产三级国产aⅴ入口| 成人av高清在线| 亚洲高清视频在线| 91精品国产综合久久精品图片| 老司机免费视频一区二区三区| 欧美xxxx老人做受| 成人福利视频在线| 亚洲高清久久久| 天堂一区二区在线| 精品国一区二区三区| 成人精品电影在线观看| 午夜免费久久看|