亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c++函數轉c#函數示例程序分享

2020-01-24 03:02:00
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace FDEP
{
    /// <summary>
    /// 羅旭成
    /// 深證通函數轉換
    /// </summary>
    public class ImportDLL
    {
        #region * 常量定義
        //*****************************************************************
        //協議類型常量
        //名稱                             定義值     說明
        //MR_PROTOCOLTYPE_MRSTANDAND       0x01      FDEP規定的標識業務協議
        //MR_PROTOCOLTYPE_SELFCUSTOM       0xFF      用戶自定義協議類型
        /// <summary>
        /// 協議類型常量
        /// </summary>
        public const uint MR_PROTOCOLTYPE_MRSTANDAND = 0x01; // SBSP標準業務協議。
        public const uint MR_PROTOCOLTYPE_SELFCUSTOM = 0xFF; // 用戶自定義協議類型。
        //*****************************************************************
        //消息標識位常量
        //名稱                             定義值     說明
        //MR_MSGFLAG_PERSIST               0x01      持久消息標志,用于可靠傳輸。目前暫不支持
        //MR_MSGFLAG_COMPRESS              0x02      壓縮標志,需進行壓縮傳輸
        /// <summary>
        /// 消息標志位常量
        /// </summary>

        public const uint MR_MSGFLAG_PERSIST = 0x01; // 持久消息標志,用于可靠傳輸。
        public const uint MR_MSGFLAG_COMPRESS = 0x02; // 壓縮標志,需進行壓縮傳輸。
        //*****************************************************************
        //長度常量
        //名稱                             定義值     說明
        //MR_MAXLEN_ADDR                   64        用戶標識及應用標識的最大長度
        //MR_MAXLEN_PKGID                  64        消息包標識的最大長度
        //MR_MAXLEN_USERDATA               256       用戶保留數據的最大長度
        //MR_FIXLEN_EXPIREDABSTIME         20        過期絕對時間固定長度
        /// <summary>
        /// 消息標志位常量
        /// </summary>
        public const int MR_MAXLEN_ADDR = 64; // 用戶標識及應用標識的最大長度。
        public const int MR_MAXLEN_PKGID = 64; // 消息包標識的最大長度。
        public const int MR_MAXLEN_USERDATA = 256; // 用戶保留數據的最大長度。
        public const int MR_FIXLEN_EXPIREDABSTIME = 20; // 過期絕對時間固定長度。
        //*****************************************************************
        //函數返回錯誤值
        //MR_ERRCODE_OK                   0
        //MR_ERRCODE_PARAMERR             -1
        //MR_ERRCODE_CONNERR              -2
        //MR_ERRCODE_TIMEEXPIRED          -3
        //MR_ERRCODE_TIMEOUT              -4
        //MR_ERRCODE_NOMSG                -5
        //MR_ERRCODE_BUFTOOSHORT          -6
        //MR_ERRCODE_BUFTOOBIG            -7
        //MR_ERRCODE_SYSERROR             -8
        #endregion

        #region * 結構體的定義
        /// <summary>
        /// 用來表示一條消息的各種屬性
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct STUsgProperty
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_ADDR)]
            public string m_szSourceUserID;//MR_MAXLEN_ADDR 源用戶標識,以“/0”結尾的字符串
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_ADDR)]
            public string m_szSourceAppID;//MR_MAXLEN_ADDR 源應用標識,以“/0”結尾的字符串
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_ADDR)]
            public string m_szDestUserID;//MR_MAXLEN_ADDR 目的用戶標識,以“/0”結尾的字符串
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_ADDR)]
            public string m_szDestAppID;//MR_MAXLEN_ADDR 目的應用標識,以“/0”結尾的字符串
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_PKGID)]
            public string m_szPkgID;//MR_MAXLEN_PKGID 消息包的包標識,以“/0”結尾的字符串,或者由用戶調用MrCreatePkgID函數生成,或者為空(即'/0')
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_PKGID)]
            public string m_szCorrPkgID;//MR_MAXLEN_PKGID 相關包標識,以“/0”結尾的字符串,供用戶自用
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_USERDATA)]
            public string m_szUserData1;//MR_MAXLEN_USERDATA 用戶數據1,以“/0”結尾的字符串,供用戶自用
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_MAXLEN_USERDATA)]
            public string m_szUserData2;//MR_MAXLEN_USERDATA 用戶數據2,以“/0”結尾的字符串,供用戶自用
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MR_FIXLEN_EXPIREDABSTIME)]
            public string m_szExpiredAbsTime;//MR_FIXLEN_EXPIREDABSTIME 該消息的過期時間,以“/0”結尾的字符串,格式為“YYYY-MM-DD HH:MM:SS”。也可以置空,此時如果目的用戶不在線,或者目的應用未連接,則消息立即過期。
            public byte m_ucFlag;//消息標識,有8個二進制位組成,各位含義如下:位0 --為1表示持久消息,需可靠傳輸,暫不支持;
            //位1 --為1表示消息需壓縮傳輸
            public byte m_ucProtocolType;//協議類型標識,取值可以是下列之一:MR_PROTOCOLTYPE_MRSTANDAND  0x01  FDEP規定的標準業務協議
            //MR_PROTOCOLTYPE_SELFCUSTOM  0xFF  用戶自定義協議類型
        }

        /// <summary>
        /// 用來定義與接入客戶端建立連接所需的各種信息
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct STUConnInfo
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
            public string m_szMRIP;//接入客戶端消息路由器的IP地址,以"/0"結尾的字符串,格式為“xxx.xxx.xxx.xxx”
            public UInt16 m_usMRPort;//接入客戶端消息路由器的連接端口
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
            public string m_szMRIPBak;//備用消息路由器的IP地址,不設置備用消息路由器時可以為空
            public UInt16 m_usMRPortBak;//備用消息路由器的連接端口,不設置備用消息路由器時可以為0
        }
        #endregion

        #region * 函數的定義
        /// <summary>
        /// 定義的回調函數
        /// </summary>
        /// <param name="psPkg">要發送的消息包緩沖區</param>
        /// <param name="iPkgLen">緩沖區中的消息包長度</param>
        /// <param name="pMsgPropery">消息包屬性</param>
        /// <param name="pvUserData">供回調函數使用的用戶數據</param>
        /// <returns></returns>
        [UnmanagedFunctionPointerAttribute(CallingConvention.StdCall)]
        public delegate int OnReceiveCallBack(string psPkg, int iPkgLen, ref STUsgProperty pMsgPropery, IntPtr pvUserData);
        //typedef int (*OnReceiveCallBack)(const char* psPkg, int iPkgLen, const STUMsgProperty* pMsgPropery, void* pvUserData);


        /// <summary>
        /// 1.初始化,獲取相關資源,并嘗試與接入客戶端FDAP建立連接
        /// </summary>
        /// <param name="psAppID">本應用的應用標識</param>[in]
        /// <param name="psPasswd">本應用在接入客服端設置的密碼,密碼必須與預設的匹配才能繼續</param>[in]
        /// <param name="onReceive">接收到消息包時的回調函數</param>[in]
        /// <param name="oConnInfo">接入客戶端連接信息</param>[in]
        /// <param name="pvUserData">供回調函數使用的用戶數據</param>[in]
        /// <returns>NULL 初始化失敗 非NULL 初始化成功,返回一個連接句柄,給句柄將作為其他函數調用的參數</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrInit", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern IntPtr MrInit(string psAppID, string psPasswd, OnReceiveCallBack onReceive, STUConnInfo oConnInfo, IntPtr pvUserData);
        //void* _stdcall MrInit(const char* psAppID, const char* psAppPasswd,OnReceiveCallBack onReceive,const STUConnInfo oConnInfo, void* pvUserData);

        /// <summary>
        /// 2.初始化,獲取相關資源,并嘗試與接入客戶端FDAP建立連接
        /// </summary>
        /// <param name="psUserCertID">本應用的用戶標識</param>[in]
        /// <param name="psAppID">本應用的應用標識</param>[in]
        /// <param name="psPasswd">本應用在接入客服端設置的密碼,密碼必須與預設的匹配才能繼續</param>[in]
        /// <param name="onReceive">接收到消息包時的回調函數</param>[in]
        /// <param name="oConnInfo">接入客戶端連接信息</param>[in]
        /// <param name="pvUserData">供回調函數使用的用戶數據</param>[in]
        /// <returns>NULL 初始化失敗 非NULL 初始化成功,返回一個連接句柄,給句柄將作為其他函數調用的參數</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrInit1", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern IntPtr MrInit1(string psUserCertID, string psAppID, string psPasswd, OnReceiveCallBack onReceive, STUConnInfo oConnInfo, IntPtr pvUserData);

        /// <summary>
        /// 3.連接FDAP時的初始化函數。該函數對FDEAPI進行初始化,分配獲取相關資源,并嘗試與接入客戶端建立通信連接
        /// </summary>
        /// <param name="pHandle">函數返回的句柄,該句柄將作為其他函數調用的參數</param>[out]
        /// <param name="psUserCertID">本應用的用戶標識</param>[in]
        /// <param name="psAppID">本應用的應用標識</param>[in]
        /// <param name="psPasswd">本應用在接入客戶端設置的密碼,密碼必須與預設的匹配才能繼續</param>[in]
        /// <param name="pMsgProperty">消息包屬性</param>[in]
        /// <param name="onReceive">接收到消息包時的回調函數</param>[in]
        /// <param name="oConnInfo">接入客戶端連接信息</param>[in]
        /// <param name="pvUserData">供回調函數使用的用戶數據</param>[in]
        /// <param name="iThreadCount">調用回頭函數OnReceive的線程數目</param>[in]
        /// <returns>無</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrInit1Ex1", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern IntPtr MrInit1Ex1(out IntPtr pHandle, string psUserCertID, string psAppID, string psPasswd, ref STUsgProperty pMsgProperty, OnReceiveCallBack onReceive, STUConnInfo oConnInfo, IntPtr pvUserData, int iThreadCount);

        /// <summary>
        /// 4.連接FDAP時的初始化函數。該函數對FDEAPI進行初始化,分配獲取相關資源,并嘗試與接入客戶端建立通信連接
        /// </summary>
        /// <param name="pHandle">函數返回的句柄,該句柄將作為其他函數調用的參數</param>[out]
        /// <param name="psAppID">本應用的應用標識</param>[in]
        /// <param name="psPassws">本應用在接入客戶端設置的密碼,密碼必須與預設的匹配才能繼續</param>[in]
        /// <param name="pOnRecvMsgPropery">這是回調函數OnReceive的接收條件,如果不需要任何條件,則可以填NULL</param>[in]
        /// <param name="onReceive">接收到消息包時的回調函數</param>[in]
        /// <param name="pConnInfo">接入客戶端連接信息</param>[in]
        /// <param name="pvUserData">供回調函數使用的用戶數據</param>[in]
        /// <param name="iThreadCount">調用回頭函數OnReceive的線程數目</param>
        /// <returns>無</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrInit2", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern IntPtr MrInit2(out IntPtr pHandle, string psAppID, string psPassws, ref STUsgProperty pOnRecvMsgPropery, OnReceiveCallBack onReceive, ref STUConnInfo pConnInfo, IntPtr pvUserData, int iThreadCount);
        //void*  _stdcall MrInit2(void** ppHandle, const char* psAppID, const char* psAppPasswd, STUMsgProperty* pOnRecvMsgPropery,OnReceiveCallBack onReceive,const STUConnInfo* pConnInfo, void* pvUserData, int iThreadCount);

        /// <summary>
        /// 5.判斷與交換中樞的連接是否正常
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>
        /// <returns>0不正常 1正常</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrIsLinkOK", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrIsLinkOK(IntPtr pHandle);
        //int  _stdcall MrIsLinkOK(void* pHandle)

        /// <summary>
        /// 6.消息包標識生成函數
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>[in]
        /// <param name="szPkgID">生成的消息包標識</param>[out]
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrCreatePkgID", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrCreatePkgID(IntPtr pHandle, StringBuilder szPkgID);
        //int _stdcall MrCreatePkgID(void* pHandle,char szPkgID[MR_MAXLEN_PKGID])

        /// <summary>
        /// 7.消息包發送函數
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>[in]
        /// <param name="psPkg">要發送的消息包緩沖區</param>[in]
        /// <param name="iPkgLen">緩沖區中的消息包長度</param>[in]
        /// <param name="pMsgPropery">消息包屬性</param>[in/out]
        /// <param name="iMillSecTimeo">以毫米為單位的接收最大超時時間</param>[in]
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrSend", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrSend(IntPtr pHandle, string psPkg, int iPkgLen, ref STUsgProperty pMsgPropery, int iMillSecTimeo);
        //int _stdcall MrSend(void* pHandle,const char* psPkg,int iPkgLen,STUsgProperty* pMsgPropery,int iMillSecTimeo);

        /// <summary>
        /// 8.消息包接收函數1
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>[in]
        /// <param name="ppsPkg">雙指針,返回包所指向的內存</param>[out]
        /// <param name="piOutPkgLen">接收到消息包的實際長度</param>[out]
        /// <param name="pMsgPropery">接收條件</param>[in/out]
        /// <param name="iMillSecTimeo">以毫米為單位的接收最大超時時間</param>[in]
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrReceive1", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrReceive1(IntPtr pHandle, out IntPtr ppsPkg, out int piOutPkgLen, ref STUsgProperty pMsgPropery, int iMillSecTimeo);
        //int _stdcall MrReceive1(void* pHandle, char** ppsPkg, int* piOutPkgLen, STUMsgProperty* pMsgPropery, int iMillSecTimeo);

        /// <summary>
        /// 9.消息包內存釋放函數
        /// </summary>
        /// <param name="psPkg">由MrReceivel1函數的第二個參數返回的指針</param>[in]
        /// <returns>無</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrReceive1_FreeBuf", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern IntPtr MrReceive1_FreeBuf(string psPkg);
        //void _stdcall MrReceive1_FreeBuf(char* psPkg);

        /// <summary>
        /// 10.消息包瀏覽函數
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>[in]
        /// <param name="piOutPkgLen">接收到消息包的實際長度</param>[out]
        /// <param name="pMsgPropery">接收條件</param>[in/out]
        /// <param name="iMillSecTimeo">以毫米為單位的接收最大超時時間</param>[in]
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrBrowse", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrBrowse(IntPtr pHandle, out int piOutPkgLen, ref STUsgProperty pMsgPropery, int iMillSecTimeo);
        //int _stdcall MrBrowse(void* pHandle,  int* piOutPkgLen, STUMsgProperty* pMsgPropery, int iMillSecTimeo);

        /// <summary>
        /// 11.消息包接收函數2
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>[in]
        /// <param name="ppsPkg">雙指針,返回包所指向的內存</param>[out]
        /// <param name="piOutPkgLen">接收到消息包的實際長度</param>[out]
        /// <param name="iBufLenIn">消息包緩沖區大小</param>[out]
        /// <param name="pMsgPropery">接收條件</param>[in/out]
        /// <param name="iMillSecTimeo">以毫米為單位的接收最大超時時間</param>[in]
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrReceive2", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrReceive2(IntPtr pHandle, out IntPtr ppsPkg, out int piOutPkgLen, out int iBufLenIn, ref STUsgProperty pMsgPropery, int iMillSecTimeo);
        //int _stdcall MrReceive2(void* pHandle, char** ppsPkg, int* piOutPkgLen, int* iBufLenIn, STUMsgProperty* pMsgPropery, int iMillSecTimeo);

        /// <summary>
        /// 12.消息包接收函數3
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>[in]
        /// <param name="ppsPkg">雙指針,返回包所指向的內存</param>[out]
        /// <param name="piOutPkgLen">接收到消息包的實際長度</param>[out]
        /// <param name="piErrSXCode">交換錯誤的原因碼</param>[out]
        /// <param name="pMsgPropery">接收條件</param>[in/out]
        /// <param name="iMillSecTimeo">以毫米為單位的接收最大超時時間</param>[in]
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrReceive3", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrReceive3(IntPtr pHandle, out IntPtr ppsPkg, out int piOutPkgLen, out int piErrSXCode, ref STUsgProperty pMsgPropery, int iMillSecTimeo);
        //int _stdcall MrReceive3(void* pHandle, char** ppsPkg, int* piOutPkgLen, int* piErrSXCode, STUMsgProperty* pMsgPropery, int iMillSecTimeo);

        /// <summary>
        /// 13.消息包接收函數4
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>[in]
        /// <param name="ppsPkg">雙指針,返回包所指向的內存</param>[out]
        /// <param name="piOutPkgLen">接收到消息包的實際長度</param>[out]
        /// <param name="piErrSXCode">交換錯誤的原因碼</param>[out]
        /// <param name="pMsgPropery">接收條件</param>[in/out]
        /// <param name="iMillSecTimeo">以毫米為單位的接收最大超時時間</param>[in]
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrReceive4", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrReceive4(IntPtr pHandle, out IntPtr ppsPkg, out int piOutPkgLen, out int piErrSXCode, ref STUsgProperty pMsgPropery, int iMillSecTimeo);
        //int _stdcall MrReceive4(void* pHandle, char** ppsPkg, int* piOutPkgLen, int* piErrSXCode, STUMsgProperty* pMsgPropery, int iMillSecTimeo);

        /// <summary>
        /// 14.釋放資源
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值</param>
        /// <returns>無</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrDestroy", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern IntPtr MrDestroy(IntPtr pHandle);
        //void _stdcall MrDestroy(void* pHandle)

        /// <summary>
        /// 15.取得本API的版本號
        /// </summary>
        /// <param name="psBufVersion">返回的版本號</param>
        /// <param name="iBufLen">版本號長度</param>
        /// <returns>無</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrGetVersion", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
        public static extern IntPtr MrGetVersion(StringBuilder psBufVersion, int iBufLen);
        //void _stdcall MrGetVersion(char* psBufVersion,int iBufLen);

        /// <summary>
        /// 16.注冊包下推條件
        /// </summary>
        /// <param name="pHandle">連接句柄,調用MrInit時返回的值<</param>
        /// <param name="pMsgPropery">消息的結構實體</param>
        /// <param name="iType">0 增加一個條件 1 刪除一個條件 2 清空所有條件</param>
        /// <returns>0 成功 其他 失敗</returns>
        [DllImport("mrapi.dll", EntryPoint = "MrRegRecvCondition", CallingConvention = CallingConvention.StdCall, SetLastError = true, CharSet = CharSet.Ansi)]
        public static extern int MrRegRecvCondition(IntPtr pHandle, ref STUsgProperty pMsgPropery, int iType);
        //int _stdcall MrRegRecvCondition(void* pHandle,STUMsgProperty* pMsgPropery,int iType);
        #endregion
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩丝袜精品一区| 欧美激情精品久久久久久大尺度| 九九热这里只有精品免费看| 亚洲国产91精品在线观看| 亚洲欧美日韩图片| 国内精品久久久| 欧美福利在线观看| 激情成人中文字幕| 成人黄色在线观看| 色哟哟亚洲精品一区二区| 久久九九全国免费精品观看| 亚洲国产精品久久精品怡红院| 91精品国产777在线观看| 亚洲人成电影在线观看天堂色| 日韩免费看的电影电视剧大全| 国产ts一区二区| 自拍亚洲一区欧美另类| 日韩欧美极品在线观看| 欧美高清videos高潮hd| 亚洲欧美国产va在线影院| 欧美视频在线观看 亚洲欧| 国产美女91呻吟求| 亚洲欧美中文在线视频| 中文字幕国产精品久久| 欧美肥臀大乳一区二区免费视频| 久久69精品久久久久久国产越南| 久久免费在线观看| 亚洲自拍av在线| 97精品欧美一区二区三区| 精品国产一区av| 国产一区二区三区在线观看网站| 日本久久久久久久| 国产精品91久久久| 国产午夜精品视频免费不卡69堂| 国产欧美日韩91| 日韩欧美aⅴ综合网站发布| 欧美日韩亚洲精品一区二区三区| 2019国产精品自在线拍国产不卡| 成人性教育视频在线观看| 亚洲欧美精品在线| 欧美成人免费播放| 伊人精品在线观看| 国产视频精品自拍| 成人做爰www免费看视频网站| 日韩欧美一区二区三区| 久久国产精品偷| 亚洲精品久久久久国产| 久久久久一本一区二区青青蜜月| 91国偷自产一区二区三区的观看方式| 日韩在线视频线视频免费网站| 一二美女精品欧洲| 亚洲高清色综合| 国产欧美精品久久久| 国产精品国产自产拍高清av水多| 欧美影院成年免费版| 这里只有精品视频在线| 久久99精品久久久久久噜噜| 国产成人精品a视频一区www| 精品国产视频在线| 色爱精品视频一区| 久久亚洲影音av资源网| 亚洲香蕉成人av网站在线观看| 亚洲在线观看视频网站| 动漫精品一区二区| 精品国产鲁一鲁一区二区张丽| 91在线视频九色| 欧美一级大胆视频| 精品中文字幕视频| 亚洲精品乱码久久久久久按摩观| 日韩av大片在线| 欧美一级视频免费在线观看| 国产精品高清在线观看| 日韩欧美一区二区三区久久| 国产精品人成电影| 久久精品一本久久99精品| 久久久久久97| 自拍视频国产精品| 2018中文字幕一区二区三区| 欧美国产中文字幕| 91av视频在线观看| 不用播放器成人网| 亚洲综合日韩中文字幕v在线| 欧美激情精品久久久久久免费印度| 国产精品视频999| 91视频88av| 久久在精品线影院精品国产| 亚洲欧美国产一本综合首页| 欧美寡妇偷汉性猛交| 久久人人爽人人爽人人片av高清| 97国产suv精品一区二区62| 欧美激情第6页| 亚洲电影av在线| 欧美中在线观看| 亚洲最大的av网站| 日韩激情视频在线播放| 色偷偷av一区二区三区乱| 26uuu国产精品视频| 在线视频欧美日韩精品| 亚洲裸体xxxx| 欧美一区二三区| 91精品国产自产在线老师啪| 欧美交受高潮1| 欧美超级免费视 在线| 一区三区二区视频| 欧美另类99xxxxx| 国内揄拍国内精品少妇国语| 一区二区三区视频免费| 国产精品久久久久久av福利软件| 国产性色av一区二区| 日韩av免费在线播放| 在线免费观看羞羞视频一区二区| 国产欧美精品日韩精品| 日本亚洲精品在线观看| 欧美精品久久久久久久久| 久久九九精品99国产精品| 日韩成人激情视频| 色婷婷成人综合| 色在人av网站天堂精品| 国产精品第1页| 中文字幕日韩在线观看| 亚洲变态欧美另类捆绑| 欧美大片网站在线观看| 欧美国产精品人人做人人爱| 国产亚洲日本欧美韩国| www日韩欧美| 亚洲人成电影网站色www| 国产欧美日韩最新| 97精品一区二区视频在线观看| 国产精品旅馆在线| 日韩欧美成人精品| 国产精品久久久999| 亚洲国产欧美久久| 欧美日韩中文字幕综合视频| 亚洲欧美日韩在线一区| 亚洲无限乱码一二三四麻| 中文字幕亚洲欧美日韩在线不卡| 国产91精品黑色丝袜高跟鞋| 日韩电影在线观看永久视频免费网站| 这里只有精品丝袜| 亚洲白拍色综合图区| 国产一区二区三区高清在线观看| 91视频九色网站| 91tv亚洲精品香蕉国产一区7ujn| 成人日韩av在线| www.亚洲天堂| 国产精品视频成人| 国产精品久久久精品| 亚洲成人久久一区| 51午夜精品视频| 亚洲欧美在线免费| 国产日韩中文在线| 国产在线精品成人一区二区三区| 国产亚洲精品91在线| 国产xxx69麻豆国语对白| 亚洲天堂av女优| 亚洲国产精品热久久| 精品少妇v888av| 久久久国产精彩视频美女艺术照福利| 国产精品视频免费在线| 欧美精品18videos性欧美| 国产成人在线一区| 国产成+人+综合+亚洲欧洲| 91成人国产在线观看| 亚洲男人天堂2024|