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

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

?? mainmod.cpp

?? Activesync Mobile 的同步軟件開發例子
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/******************************************************************************\
*       This is a part of the Microsoft Source Code Samples.
*       Copyright (C) 1993-1997 Microsoft Corporation.
*       All rights reserved.
*       This source code is only intended as a supplement to
*       Microsoft Development Tools and/or WinHelp documentation.
*       See these sources for detailed information regarding the
*       Microsoft samples programs.
\******************************************************************************/

/*++

Module Name:
    
      mainmod.cpp

Abstract:

    Implementation of IReplStore

--*/

#include <windows.h>
#include "mainmod.h"

#define EXIT_ON_FAIL(hr)                                                            \
        if (FAILED (hr))                                                             \
        {                                                                               \
            goto Exit;                                                                  \
        }           \
        else


HINSTANCE       v_hInst;
static char     v_szStockFile[ MAX_PATH ];
static char     v_szDBVol[ MAX_PATH ]; 
static UINT     v_uSyncOpt;
static CStore   *v_pStore;

BOOL WINAPI DllMain ( HANDLE hInstDll, ULONG ulReason, LPVOID lpReserved )
{
    switch( ulReason )
    {
    case DLL_PROCESS_ATTACH :
        v_hInst = (HINSTANCE)hInstDll;
        break;

    case DLL_PROCESS_DETACH:
        break;

    case DLL_THREAD_ATTACH:
        break;

    case DLL_THREAD_DETACH:
        break;

    }
    return TRUE;
}


//
//  ============ Required OLE implementation for InProc servers ======================
//
// CClassFactory object creates CStore objects

class CClassFactory : public IClassFactory 
{
private:
    LONG    m_cRef; 

public:
    CClassFactory( void ) : m_cRef( 0 ) {};

    virtual STDMETHODIMP            QueryInterface( REFIID iid, LPVOID* ppv);
    virtual STDMETHODIMP_(ULONG)    AddRef(); 
    virtual STDMETHODIMP_(ULONG)    Release();

    // IClassFactory members
    virtual STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID*);
    virtual STDMETHODIMP LockServer(BOOL);
};


// Count number of objects and number of locks
static LONG v_cObj = 0;
static LONG v_cLock = 0;

STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)  
{
    if (!IsEqualIID(riid, IID_IUnknown) && !IsEqualIID(riid, IID_IClassFactory))
        return CLASS_E_CLASSNOTAVAILABLE;

    //return our IClassFactory for CStore objects
    *ppv = (LPVOID)new CClassFactory();
    if ( NULL == *ppv ) 
        return E_OUTOFMEMORY;

    //AddRef the object through any interface we return
    ((LPUNKNOWN)*ppv)->AddRef();

    return NOERROR;
}

STDAPI DllCanUnloadNow(void)  
{
    return ResultFromScode( 0L == v_cObj && 0 == v_cLock? S_OK : S_FALSE );
}

HRESULT CreateValue (HKEY hkeyParent, char * szKey, char * szValueName, DWORD dwType, 
                     void * pValue, DWORD dwLength)
{
    HRESULT hr      =   E_UNEXPECTED;
    LONG    lResult;
    HKEY    hkey    =   NULL;



    // create or open hkeyParent\szKey
    lResult = ::RegCreateKeyEx (hkeyParent, szKey, 0, NULL, REG_OPTION_NON_VOLATILE, 
                                KEY_ALL_ACCESS, NULL, &hkey, NULL);
    hr = HRESULT_FROM_WIN32 (lResult);
    EXIT_ON_FAIL (hr);

    
    // create hkeyParent\szKey\szValueName = pValue
    lResult = ::RegSetValueEx (hkey, szValueName, 0, dwType, reinterpret_cast <BYTE *> (pValue), dwLength);
    hr = HRESULT_FROM_WIN32 (lResult);
    EXIT_ON_FAIL (hr);

    
    // success 
    hr = S_OK;


Exit:
    // close key
    lResult = ::RegCloseKey (hkey);
    if (SUCCEEDED (hr))  // only overwrite hr if we haven't already failed above
    {
        hr = HRESULT_FROM_WIN32 (lResult);
    }

    return hr;
}




//
//  DllRegisterServer 
//  Called to register the provider with desktop sync
//
STDAPI DllRegisterServer (void)
{
    LONG    lResult;
    HRESULT hr                      =   E_UNEXPECTED;
    HKEY    hkey                    =   NULL;
    char    szKey[1024];
    char    szTemp[1024];
    HKEY    hkeyGuidProvider        =   NULL;
    char    szFilename[_MAX_PATH];
    DWORD   dwDisabled;
    DWORD   dwVersion;


    // open HKCR\CLSID
    lResult = ::RegOpenKeyEx (HKEY_CLASSES_ROOT, "CLSID", 0, KEY_ALL_ACCESS, &hkey);
    hr = HRESULT_FROM_WIN32 (lResult);
    EXIT_ON_FAIL (hr);


    // create HKCR\CLSID\{guid}
    lResult = ::RegCreateKeyEx (hkey, SZ_GUID_SYNCSAMPLE, 0, NULL, REG_OPTION_NON_VOLATILE, 
                                KEY_ALL_ACCESS, NULL, &hkeyGuidProvider, NULL);
    hr = HRESULT_FROM_WIN32 (lResult);
    EXIT_ON_FAIL (hr);

    // close HKCR\CLSID
    lResult = ::RegCloseKey (hkey);
    hr = HRESULT_FROM_WIN32 (lResult);
    EXIT_ON_FAIL (hr);


    // create HKCR\CLSID\{guid}, default value = store name
    lResult = ::RegSetValueEx (hkeyGuidProvider, NULL, 0, REG_SZ, (BYTE *) SZ_NAME, ::strlen (SZ_NAME) + 1);
    hr = HRESULT_FROM_WIN32 (lResult);
    EXIT_ON_FAIL (hr);

    
    // create HKCR\CLSID\{guid}\InprocServer32, default value = (path to this DLL)
    lResult = ::GetModuleFileName (v_hInst, szFilename, _MAX_PATH);
    if (lResult == 0)
    {
        hr = E_OUTOFMEMORY;
        goto Exit;
    }
    
    hr = ::CreateValue (hkeyGuidProvider, "InprocServer32", NULL, REG_SZ, szFilename, ::strlen (szFilename) + 1);
    EXIT_ON_FAIL (hr);


    // create HKCR\CLSID\{our guid}\ProgID, default value = (progid)
    hr = ::CreateValue (hkeyGuidProvider, "ProgID", NULL, REG_SZ, SZ_STORE_PROG_ID, ::strlen (SZ_STORE_PROG_ID) + 1);
    EXIT_ON_FAIL (hr);

    
    // create HKCR\(prog id), default value = (SZ_NAME)
    // create HKCR\(prog id), "Display Name" = 
    // create HKCR\(prog id), "Version" = 0x00030000    // version 3 or better allows settings
                                                        // to be configured during partnership wiz
    hr = ::CreateValue (HKEY_CLASSES_ROOT, SZ_STORE_PROG_ID, NULL, REG_SZ, SZ_NAME, ::strlen (SZ_NAME) + 1);
    EXIT_ON_FAIL (hr);

    hr = ::CreateValue (HKEY_CLASSES_ROOT, SZ_STORE_PROG_ID, "Display Name", REG_SZ, SZ_DISPLAY_NAME, ::strlen(SZ_DISPLAY_NAME) + 1);
    EXIT_ON_FAIL (hr);

    dwVersion = 0x00030000;
    hr = ::CreateValue (HKEY_CLASSES_ROOT, SZ_STORE_PROG_ID, "Version", REG_DWORD, &dwVersion, sizeof (dwVersion));
    EXIT_ON_FAIL (hr);

    // create HKCR\(prog id)\CLSID, default value = (GUID)
    ::wsprintf (szKey, "%s\\CLSID", SZ_STORE_PROG_ID);
    hr = ::CreateValue (HKEY_CLASSES_ROOT, szKey, NULL, REG_SZ, SZ_GUID_SYNCSAMPLE, ::strlen (SZ_GUID_SYNCSAMPLE) + 1);
    EXIT_ON_FAIL (hr);

    //
    //  Available on PocketPC and Smartphone only

    // create HKLM\SOFTWARE\Microsoft\Windows CE Services\SpecialDefaults\PocketPC\
    //        Services\Synchronization\Objects\(SZ_NAME), (multiple values)
    ::wsprintf (szKey, "SOFTWARE\\Microsoft\\Windows CE Services\\SpecialDefaults\\PocketPC\\"
                       "Services\\Synchronization\\Objects\\%s", SZ_NAME);
    
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, NULL, REG_SZ, SZ_NAME, ::strlen (SZ_NAME) + 1);
    EXIT_ON_FAIL (hr);
    
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Store", REG_SZ, SZ_STORE_PROG_ID, ::strlen (SZ_STORE_PROG_ID) + 1);
    EXIT_ON_FAIL (hr);
    
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Display Name", REG_SZ, SZ_DISPLAY_NAME, ::strlen (SZ_DISPLAY_NAME) + 1);
    EXIT_ON_FAIL (hr);

    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Plural Name", REG_SZ, SZ_PLURAL_NAME, ::strlen (SZ_PLURAL_NAME) + 1);
    EXIT_ON_FAIL (hr);

    dwDisabled = 0;
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Disabled", REG_DWORD, &dwDisabled, sizeof (dwDisabled));
    EXIT_ON_FAIL (hr);

    ::wsprintf (szTemp, "%s,-%d", szFilename, IDI_ICON);
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "DefaultIcon", REG_SZ, szTemp, ::strlen (szTemp) + 1);
    EXIT_ON_FAIL (hr);


    // create HKLM\SOFTWARE\Microsoft\Windows CE Services\SpecialDefaults\SmartPhone\
    //        Services\Synchronization\Objects\(SZ_NAME), (multiple values)
    ::wsprintf (szKey, "SOFTWARE\\Microsoft\\Windows CE Services\\SpecialDefaults\\SmartPhone\\"
                       "Services\\Synchronization\\Objects\\%s", SZ_NAME);
    
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, NULL, REG_SZ, SZ_NAME, ::strlen (SZ_NAME) + 1);
    EXIT_ON_FAIL (hr);
    
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Store", REG_SZ, SZ_STORE_PROG_ID, ::strlen (SZ_STORE_PROG_ID) + 1);
    EXIT_ON_FAIL (hr);

    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Display Name", REG_SZ, SZ_DISPLAY_NAME, ::strlen (SZ_DISPLAY_NAME) + 1);
    EXIT_ON_FAIL (hr);

    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Plural Name", REG_SZ, SZ_PLURAL_NAME, ::strlen (SZ_PLURAL_NAME) + 1);
    EXIT_ON_FAIL (hr);

    dwDisabled = 0;
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "Disabled", REG_DWORD, &dwDisabled, sizeof (dwDisabled));
    EXIT_ON_FAIL (hr);

    ::wsprintf (szTemp, "%s,-%d", szFilename, IDI_ICON);
    hr = ::CreateValue (HKEY_LOCAL_MACHINE, szKey, "DefaultIcon", REG_SZ, szTemp, ::strlen (szTemp) + 1);
    EXIT_ON_FAIL (hr);

    hr = S_OK;

Exit:
    return hr;
}





STDAPI DllUnregisterServer (void)
{
    char    szKey[1024];



    ::wsprintf (szKey, "CLSID\\%s\\ProgID", SZ_GUID_SYNCSAMPLE);
    ::RegDeleteKey (HKEY_CLASSES_ROOT, szKey);


    ::wsprintf (szKey, "CLSID\\%s\\InprocServer32", SZ_GUID_SYNCSAMPLE);
    ::RegDeleteKey (HKEY_CLASSES_ROOT, szKey);


    ::wsprintf (szKey, "CLSID\\%s", SZ_GUID_SYNCSAMPLE);
    ::RegDeleteKey (HKEY_CLASSES_ROOT, szKey);


    ::wsprintf (szKey, "%s\\CLSID", SZ_STORE_PROG_ID);
    ::RegDeleteKey (HKEY_CLASSES_ROOT, szKey);


    ::RegDeleteKey (HKEY_CLASSES_ROOT, SZ_STORE_PROG_ID);


    ::wsprintf (szKey, "SOFTWARE\\Microsoft\\Windows CE Services\\SpecialDefaults\\PocketPC\\"
                       "Services\\Synchronization\\Objects\\%s", SZ_NAME);
    ::RegDeleteKey (HKEY_LOCAL_MACHINE, szKey);


    ::wsprintf (szKey, "SOFTWARE\\Microsoft\\Windows CE Services\\SpecialDefaults\\SmartPhone\\"
                       "Services\\Synchronization\\Objects\\%s", SZ_NAME);
    ::RegDeleteKey (HKEY_LOCAL_MACHINE, szKey);
    
    return S_OK;
}





STDMETHODIMP CClassFactory::QueryInterface(REFIID riid, LPVOID* ppv)  
{
    *ppv=NULL;
    if ( IsEqualIID( riid, IID_IUnknown ) || IsEqualIID( riid, IID_IClassFactory ) )
        *ppv=(LPVOID)this;

    if( NULL != *ppv )  
    {
        ((LPUNKNOWN)*ppv)->AddRef();
        return NOERROR;
    }
    return E_NOINTERFACE;
}

STDMETHODIMP_(ULONG) CClassFactory::AddRef( void )
{
    ULONG urc;
    urc = (ULONG)InterlockedIncrement( &m_cRef );
    return(urc);
}

STDMETHODIMP_(ULONG) CClassFactory::Release()
{
    ULONG urc;
    urc = (ULONG)InterlockedDecrement( &m_cRef ); 
    if (urc == 0 ) 
        delete this;

    return urc;
}

STDMETHODIMP CClassFactory::CreateInstance( LPUNKNOWN pUnkOuter, REFIID riid, LPVOID* ppvObj )
{
    CStore  *pObj;
    HRESULT hr;
    DWORD   dwLastError = 0;
    
    *ppvObj = NULL;
    hr = E_OUTOFMEMORY;

    if ( NULL != pUnkOuter && !IsEqualIID( riid, IID_IUnknown ) )
        return E_NOINTERFACE;

    pObj = new CStore( pUnkOuter );
    if ( NULL == pObj ) 
        return E_OUTOFMEMORY;

    hr = pObj->QueryInterface( riid, ppvObj );

    InterlockedIncrement( &v_cObj );

    if ( FAILED( hr ) ) 
    {
        delete pObj; // <-- this destroys LastError
        if( dwLastError )
            SetLastError( dwLastError );
    }

    return hr;
}


STDMETHODIMP CClassFactory::LockServer(BOOL fLock)
{
    if (fLock)
        InterlockedIncrement( &v_cLock );
    else     
        InterlockedDecrement( &v_cLock );

    return NOERROR;
}



//
// ================== Basic Implementation of IReplStore ====================
//

/*++
--*/
CStore::CStore( LPUNKNOWN pUnkOuter )
{
    m_cRef          = 0;
    m_pUnkOuter     = pUnkOuter;
    m_uFlags        = 0;
    m_pObjHandler   = new CDataHandler( this );
    m_rgpItems      = NULL;
    m_ixCurrItem    = 0;
    m_cItems        = 0;

    lstrcpy( m_szStockFile, SZ_DEFAULT_PORTFILE );
    m_hFile         = INVALID_HANDLE_VALUE;
    m_hMapObj       = NULL;
    m_hMutex        = NULL;
    m_pStocks       = NULL;

    m_hListen       = NULL;
    m_hKillListen   = CreateEvent( NULL, FALSE, FALSE, NULL );
    m_hStockChg     = CreateEvent( NULL, FALSE, FALSE, SZ_CHANGE_EVENT );
}

/*++
--*/
CStore::~CStore()
{
    CloseHandle( m_hKillListen );
    CloseHandle( m_hStockChg );

    delete m_pObjHandler;
    InterlockedDecrement( &v_cObj );
}


//
// ==================== IUnknown Implementation ===========================
//

/*++
--*/
STDMETHODIMP CStore::QueryInterface( REFIID iid, LPVOID  *ppvObj )
{
    *ppvObj = NULL;   // set to NULL, in case we fail.

    if ( IsEqualIID( iid, IID_IUnknown ) )
        *ppvObj = (void*)this;
    else if ( IsEqualIID( iid, IID_IReplStore ) )
        *ppvObj = (void*)(IReplStore *)this;
    else if ( IsEqualIID( iid, IID_IReplStore2 ) )
        *ppvObj = (void*)(IReplStore2 *)this;
    else if ( m_pUnkOuter )
        return m_pUnkOuter->QueryInterface( iid, ppvObj );

    if ( *ppvObj )
    {
        ((IUnknown *)(*ppvObj))->AddRef();
        return NOERROR;
    }
    return E_NOINTERFACE;
}

/*++
--*/
STDMETHODIMP_(ULONG) CStore::AddRef()
{
    ULONG   urc;

    if ( m_pUnkOuter )
        urc = m_pUnkOuter->AddRef();
    else
        urc = (ULONG)InterlockedIncrement( &m_cRef );
    return urc;
}

/*++
--*/
STDMETHODIMP_(ULONG) CStore::Release()
{
    ULONG   urc;

    if ( m_pUnkOuter )
        urc = m_pUnkOuter->Release();
    else
    {
        urc =(ULONG)InterlockedDecrement( &m_cRef );
        if ( urc == 0 )
            delete this;
    }
    return urc;
}

//
// ================= thread listening to the changes/deletes in the Stock Portfolio app
//
DWORD WINAPI Listen( LPVOID pvStore )
{
    CStore  *pStore = (CStore *)pvStore;
    DWORD   dwObj;
    HANDLE  rgHandles[] = { pStore->m_hKillListen, pStore->m_hStockChg };
    UINT    ix, jx;

    for ( ;; )
    {
        dwObj = WaitForMultipleObjects( 2, rgHandles, FALSE, INFINITE );

        // will quit this thread for any other value
        if ( dwObj != WAIT_OBJECT_0 + 1 )
            break;

        if ( !pStore->m_pNotify ) continue;

        // get the change/delete log from the Stock Portfolio app
        pStore->Lock();
        for ( ix = 0; ix < pStore->m_pStocks->cChg; ix++ )
        {
            // check if this change is deleted too

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产一区二区三区四区在线| 国产美女久久久久| 在线精品亚洲一区二区不卡| 91精品国产色综合久久不卡蜜臀 | 国产馆精品极品| 欧美日韩国产精品自在自线| 国产精品色婷婷久久58| 免费精品视频在线| 色综合色狠狠综合色| 国产日韩欧美一区二区三区乱码| 亚洲成人动漫在线免费观看| 99精品久久免费看蜜臀剧情介绍| 亚洲精品一区二区三区99| 午夜精品久久久久久久| 91久久精品一区二区三区| 国产欧美日韩另类一区| 国产在线精品一区二区三区不卡| 91麻豆精品91久久久久同性| 一区二区三区91| 色8久久精品久久久久久蜜| 国产精品丝袜久久久久久app| 国产真实乱子伦精品视频| 欧美一区二区在线不卡| 污片在线观看一区二区| 欧美剧情片在线观看| 亚洲一区二区四区蜜桃| 色av一区二区| 曰韩精品一区二区| 日本高清不卡视频| 亚洲激情av在线| 色8久久人人97超碰香蕉987| 亚洲精品视频观看| 91久久精品一区二区| 亚洲国产精品久久人人爱蜜臀| 91麻豆国产自产在线观看| 亚洲丝袜自拍清纯另类| 91蜜桃网址入口| 一区二区三区免费观看| 精品视频在线视频| 亚洲www啪成人一区二区麻豆| 欧美日韩电影在线| 美女视频黄a大片欧美| 精品国偷自产国产一区| 国产麻豆视频精品| 亚洲欧洲精品一区二区三区不卡| 99精品欧美一区二区三区小说| 亚洲乱码国产乱码精品精98午夜| 在线看日韩精品电影| 天堂久久一区二区三区| 欧美大片在线观看| 成人av免费在线观看| 一区二区欧美精品| 日韩欧美第一区| 国产成人高清在线| 伊人开心综合网| 日韩欧美国产三级| 成人开心网精品视频| 亚洲福利视频一区| 国产午夜精品一区二区三区嫩草| 成人av动漫在线| 午夜精品一区二区三区免费视频 | 精品国产一区二区三区不卡| 免费观看成人av| 亚洲欧洲日韩av| 91精品国产入口| 国产福利不卡视频| 亚洲综合无码一区二区| 精品91自产拍在线观看一区| 成人av免费在线| 日韩精品亚洲专区| 国产精品久久久久久亚洲伦 | 精品国精品国产| 成人久久视频在线观看| 日韩国产在线观看一区| 久久精品在这里| 777xxx欧美| 91在线免费视频观看| 紧缚捆绑精品一区二区| 亚洲二区视频在线| 国产精品少妇自拍| 日韩一级片网站| 91国偷自产一区二区三区观看| 国产精品一区二区在线观看网站| 亚洲成av人片一区二区三区| 国产欧美一区二区三区鸳鸯浴| 欧美猛男gaygay网站| 91性感美女视频| 成人一区二区三区视频在线观看 | 亚洲精选视频在线| 亚洲国产精品精华液2区45| 欧美一级高清大全免费观看| 色婷婷综合五月| 高清不卡在线观看| 国产精品1区2区| 久久精品国产成人一区二区三区 | 国产精品久久久久aaaa| 欧美www视频| 欧美二区三区91| 在线精品视频一区二区| jvid福利写真一区二区三区| 国产麻豆视频精品| 国产一区二区三区日韩| 免费在线观看成人| 婷婷丁香久久五月婷婷| 亚洲国产精品一区二区久久| 一区二区在线观看不卡| 亚洲丝袜自拍清纯另类| 亚洲人成在线观看一区二区| 中文字幕不卡三区| 国产精品久久久久久久裸模| 国产精品丝袜在线| 亚洲欧洲日韩女同| 一区二区三区欧美日| 亚洲在线免费播放| 亚洲123区在线观看| 五月综合激情婷婷六月色窝| 亚洲国产欧美另类丝袜| 日韩主播视频在线| 美女被吸乳得到大胸91| 裸体一区二区三区| 狠狠色丁香婷婷综合| 国产精品自在欧美一区| 成人激情小说乱人伦| av一区二区不卡| 91久久精品一区二区| 8x8x8国产精品| 精品国产乱码久久久久久蜜臀| 久久综合久久综合亚洲| 国产午夜精品久久久久久久| 中文一区一区三区高中清不卡| 综合激情成人伊人| 亚洲高清免费观看| 久久91精品久久久久久秒播| 国内精品国产三级国产a久久| 国产成人av一区二区三区在线观看| 粉嫩av一区二区三区在线播放| 99久久久久久99| 欧美日韩国产美| 久久精品夜色噜噜亚洲a∨| 亚洲天天做日日做天天谢日日欢| 亚洲小说欧美激情另类| 久久国产日韩欧美精品| 成人综合婷婷国产精品久久| 在线免费观看一区| 欧美xxxxx牲另类人与| 亚洲欧洲成人精品av97| 日韩精品一级中文字幕精品视频免费观看 | 激情综合网av| 99精品久久久久久| 日韩欧美国产一二三区| 综合久久国产九一剧情麻豆| 麻豆国产精品一区二区三区| 99久久夜色精品国产网站| 欧美理论电影在线| 国产日韩三级在线| 天天av天天翘天天综合网| 国产伦精品一区二区三区在线观看| 97久久精品人人爽人人爽蜜臀 | 日本精品一级二级| 久久综合狠狠综合| 亚洲一区成人在线| 成人综合在线网站| 欧美精品一区在线观看| 亚洲精品美腿丝袜| 国产白丝精品91爽爽久久| 欧美精品日韩一本| 亚洲人一二三区| 国产一区欧美日韩| 欧美一级生活片| 一区二区高清在线| av在线不卡电影| 精品久久久久香蕉网| 亚洲第一综合色| 91老师片黄在线观看| 久久综合久久综合久久| 亚洲成人激情av| 91视频一区二区三区| 久久亚洲二区三区| 美女视频网站久久| 91精品免费在线观看| 亚洲一区二区四区蜜桃| 色系网站成人免费| 国产精品美日韩| 国产91精品一区二区麻豆网站| 欧美成人video| 日本系列欧美系列| 51午夜精品国产| 亚洲.国产.中文慕字在线| 欧洲生活片亚洲生活在线观看| 国产精品―色哟哟| 不卡影院免费观看| 国产精品丝袜在线| 成人h动漫精品一区二| 中文欧美字幕免费| 成人av影院在线| 亚洲欧美日韩久久精品| 在线视频你懂得一区| 一区二区三区精品久久久| 日本道精品一区二区三区| 亚洲午夜久久久久中文字幕久|