精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

探秘Visual Studio 2010中的災難恢復功能

開發 后端
作為軟件的最終用戶,在使用各種各樣的軟件的時候,特別是在使用軟件進行工作的時候,最害怕的事情就是軟件突然崩潰,自己的工作成果化為烏有。本文將詳解Visual Studio 2010中的災難恢復功能

為了提高用戶體驗,Microsoft在Windows Vista系統中首先引入了重啟管理器(Restart Manager)。它可以幫助應用程序維護其當前運行狀態,當軟件更新后需要重新啟動,或者是遇到非常嚴重的問題崩潰后,可以重新啟動軟件并且恢復到軟件的當前工作狀態。更重要的是,它還可以恢復自動保存的軟件數據狀態,盡量保證用戶數據的安全。有了重啟管理器,軟件就可以很快地從災難中恢復過來,實現快速“災后重建”。

圖1 Visual Studio 2010的重啟管理

重啟管理器主要應用在下面兩個方面:

◆軟件更新

很多時候,軟件或者操作系統升級后,需要重新啟動才可以生效。在這種情況下,我們就可以使用重啟管理器自動關閉真正運行的軟件,然后進行更新,更新完成后自動重新啟動軟件,并且恢復到軟件當前的工作狀態。這將使得軟件的更新更加流暢和智能。

◆軟件災難恢復

當軟件遇到嚴重錯誤,進程崩潰的時候,可以使用重啟管理器重新啟動軟件,恢復軟件自動保持的數據,讓軟件可以快速地從災難中恢復過來。

為了支持重啟管理器,微軟提供了一套Restart Manassas API函數來完成這些工作。這些函數定義在頭文件中,如果你的應用程序想使用這套API,需要引用rstrtmgr.lib和rstrtmgr.dll。其中,我們常用的函數有:

◆RMStartSession

創建一個新的重啟任務。

◆RMGetList

這個函數可供安裝程序使用,它可以得到所有被影響的應用程序及其當前狀態。

◆RMRegisterResources

注冊重啟任務的資源,例如文件名,服務或者是RM_UNIQUE_PROCESS結構體。

◆RMRestart

重新啟動被RmShutdown關閉的應用程序或者服務,當然,這些應用程序或者服務都需要通過RegisterApplicationRestart事先進行注冊。

◆RMShutDown

關閉應用程序或者服務。

◆RMEndSession

結束重啟任務。

添加對重啟管理器的支持

雖然Windows Vista系統本身提供了對重啟管理器的支持,但是對于應用程序本身,也同樣需要一些額外的工作,以完成對重啟管理器的支持。

對于新創建的MFC應用程序,我們可以簡單地在“MFC應用程序向導”中設置是否需要支持重啟管理器。

 圖2 MFC應用程序向導

在“MFC應用程序向導”的高級特性選項卡中有關于重啟管理器的選項。其中,如果僅僅選中“Support Restart Manager”選項,表示你的應用程序將僅僅支持重新啟動。換句話說,你的應用程序可以在升級或者崩潰之后重新啟動,但是無法自動打開未關閉的文檔,無法對數據進行恢復。

如果同時選中“Reopen previously open documents”選項,它表示你的應用程序可以在重啟之后重新打開之前打開的文檔,也就是自動恢復到當前的工作狀態。

如果選中了“Support application recover”選項,它表示你的應用程序在重新啟動后,不僅可以重新打開之前打開的文檔,還會嘗試恢復自動保存的文檔。它將彈出一個任務對話框(Unicode版本)或者消息框(非Unicode版本),詢問用戶是否需要恢復自動保持的文檔。如果用戶選擇“Yes”,那么自動保持的文檔將被打開作為當前文檔。如果用戶選擇“No”,那么用戶***保存的文檔將被打開作為當前文檔,同時自動保存的文檔將被刪除。

這里需要注意的是,只有文檔視圖類型的應用程序才支持“Reopen previously open documents”選項和“Support application recover”選項,對話框類型的應用程序只支持“Support Restart Manager”選項。

對于Visual Studio 2010中新創建的MFC應用程序,可以在應用程序向導中進行設置,添加對重啟管理器的支持。那么對于很多已有的MFC應用程序,如果同樣想獲得重啟管理器的支持,應該怎么辦呢?實際上,對于已有的MFC應用程序,要想獲得重啟管理器的支持很簡單。在新版本的MFC中,CWinApp類增加了一個新的成員變量,用于控制應用程序對重啟管理器的支持,我們只需要在應用程序的構造函數中,添加幾行代碼,按照我們的需求對其合理的初始化就可以了。

#p#

跟我們在上面所介紹的“MFC應用程序向導”中的選項相一致,如果你選擇的是“Support Restart Manager”,你可以在初始化函數中添加如下的代碼:

m_dwRestartManagerSupportFlags = 
AFX_RESTART_MANAGER_SUPPORT_RESTART;

如果你想選擇“Reopen previously open documents”,可以添加如下的代碼:

m_dwRestartManagerSupportFlags = 
AFX_RESTART_MANAGER_SUPPORT_RESTART_ASPECTS;
 
如果你想選擇“Support application recover”,可以添加下面這行代碼:

m_dwRestartManagerSupportFlags =
        AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
 

例如,我只想支持重啟管理器,讓軟件可以在更新后重新啟動,則可以這樣進行應用程序的初始化:

CRestartManagerDemoApp::CRestartManagerDemoApp()
{
m_bHiColorIcons = TRUE;
// support Restart Manager
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}

實例:創建支持重啟管理器的MFC應用程序

下面我們以一個實際的例子,來看看如何在我們的MFC應用程序中添加對重啟管理器的支持。

首先,啟動Visual Studio 2010 CTP,創建一個單文檔的應用程序RestartManagerDemo。按照我們前面的介紹,在“MFC應用程序向導”中選擇“Support Restart Manager”和“Reopen previously open documents”選項,以支持應用程序的重新啟動和文檔的重新打開。

為了驗證重啟管理器重新打開文檔的功能,我們在文檔中添加一些數據,這些數據將在程序重新啟動后自動被加載進來。

// 泡泡類,用于在視圖中顯示圓圈泡泡
class CBubble
{
public:
     CBubble(CPoint cp, double fR)
{
          m_nCenterPoint = cp;
          m_fR = fR;
};
     CBubble()
{};
// 圓心
CPoint m_nCenterPoint;
// 半徑   
double m_fR;
};

class CRestartManagerDemoDoc : public CDocument
{
protected: // create from serialization only
CRestartManagerDemoDoc();
DECLARE_DYNCREATE(CRestartManagerDemoDoc)

// Attributes
public:
// 保存數據的數組
    CArray m_Array;
// Operations
public:
CArray& GetBubbleArray()
{
                        return m_Array;
};
//…
};

然后,我們需要實現文檔的序列化函數,使得我們的文檔數據能夠保存和重新加載:

// CRestartManagerDemoDoc serialization

void CRestartManagerDemoDoc::Serialize(CArchive& ar)
{
// 保存數據
if (ar.IsStoring())
{
  // TODO: add storing code here
          int nSize = m_Array.GetSize();
          ar<          for(int nIndex = 0; nIndex < nSize; ++nIndex )
  {
   CBubble tempBubble = m_Array.GetAt( nIndex );
               ar<               ar<  }
}
else // 加載數據
{
  // TODO: add loading code here
  int nSize = 0;
          ar>>nSize;
  for(int nIndex = 0; nIndex < nSize; ++nIndex )
  {
   //CBubble tempBubble = m_Array.GetAt( nIndex );
               CPoint tempPoint;
               double tempR;
              ar>>tempPoint;
               ar>>tempR;
   m_Array.Add( CBubble( tempPoint, tempR) );
            
  }
}
}

完成文檔類的工作后,我們就有了保存數據的容器,現在我們需要對數據進行修改和顯示。在視圖類中,我們通過鼠標點擊,修改文檔中的數據,向其中添加CBubble對象。

void CRestartManagerDemoView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程序代碼和/或調用默認值
     CRestartManagerDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
  return;
CArray& m_Array = pDoc->GetBubbleArray();
// 以當前鼠標點擊點為圓心,隨機半徑構造一個CBubble對象,并添加到文檔中
m_Array.Add( CBubble( point, rand()%30 ));

// 更新視圖顯示
     Invalidate();

CView::OnLButtonDown(nFlags, point);
}

然后,我們將這些數據在視圖中顯示出來:

void CRestartManagerDemoView::OnDraw(CDC* pDC)
{
CRestartManagerDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
  return;

// TODO: add draw code for native data here
// 從文檔中得到數據
     CArray& m_Array = pDoc->GetBubbleArray();

// 顯示數據
for(int nIndex = 0; nIndex < m_Array.GetSize(); ++nIndex )
{
  CBubble tempBubble = m_Array.GetAt( nIndex );
  pDC->Ellipse(tempBubble.m_nCenterPoint.x - tempBubble.m_fR,
               tempBubble.m_nCenterPoint.y - tempBubble.m_fR,
               tempBubble.m_nCenterPoint.x + tempBubble.m_fR,
               tempBubble.m_nCenterPoint.y + tempBubble.m_fR);
}
}

這樣,我們就實現了一個簡單的支持重啟管理器的文檔視圖類型的MFC應用程序。這個程序可以通過鼠標在視圖中點擊向文檔中添加數據,然后這些數據可以保存和重新打開。void CRestartManagerDemoView::OnLButtonDown(UINT nFlags, CPoint point)

{
// TODO: 在此添加消息處理程序代碼和/或調用默認值
     CRestartManagerDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
  return;
CArray& m_Array = pDoc->GetBubbleArray();
// 以當前鼠標點擊點為圓心,隨機半徑構造一個CBubble對象,并添加到文檔中
m_Array.Add( CBubble( point, rand()%30 ));

// 更新視圖顯示
     Invalidate();

CView::OnLButtonDown(nFlags, point);
}

  然后,我們將這些數據在視圖中顯示出來:
void CRestartManagerDemoView::OnDraw(CDC* pDC)
{
CRestartManagerDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
  return;

// TODO: add draw code for native data here
// 從文檔中得到數據
     CArray& m_Array = pDoc->GetBubbleArray();

// 顯示數據
for(int nIndex = 0; nIndex < m_Array.GetSize(); ++nIndex )
{
  CBubble tempBubble = m_Array.GetAt( nIndex );
  pDC->Ellipse(tempBubble.m_nCenterPoint.x - tempBubble.m_fR,
               tempBubble.m_nCenterPoint.y - tempBubble.m_fR,
               tempBubble.m_nCenterPoint.x + tempBubble.m_fR,
               tempBubble.m_nCenterPoint.y + tempBubble.m_fR);
}
}

這樣,我們就實現了一個簡單的支持重啟管理器的文檔視圖類型的MFC應用程序。這個程序可以通過鼠標在視圖中點擊向文檔中添加數據,然后這些數據可以保存和重新打開。

使用Restart Manassas API測試重啟管理器

接下來,我們可以編寫一個測試程序,使用Restart Manassas API模擬軟件的更新后重啟,以驗證其重啟管理器是否正常工作。
用Visual Studio 2010 CTP創建一個控制臺應用程序TestRM,然后將其實現如下:

//

#include "stdafx.h"
#include
#include

int _tmain(int argc, _TCHAR* argv[])
{
     DWORD dwSessionHandle = 0;
WCHAR wszSessionKey[CCH_RM_SESSION_KEY+1];

// 設定需要重啟的資源
  LPCWSTR pwzResourcesToRestart[] =
  {L"C:\\Users\\TFSSETUP\\Documents\\Visual Studio 10\\Projects\\
  RestartManagerDemo\\Debug\\RestartManagerDemo.exe" };

// 創建一個重啟任務
if (RmStartSession(&dwSessionHandle, 0, wszSessionKey) == ERROR_SUCCESS)
{
  // 注冊資源
  if (RmRegisterResources(dwSessionHandle, 1,
   pwzResourcesToRestart, 0, NULL, 0, NULL) == ERROR_SUCCESS)
  {
   // 關閉應用程序
   if (RmShutdown(dwSessionHandle,
    RmShutdownOnlyRegistered, NULL) == ERROR_SUCCESS)
   {
    // 重新啟動應用程序
    if (RmRestart(dwSessionHandle, 0, NULL) == ERROR_SUCCESS)
    {
     return 0;
    }
   }
  }
}
return 0;
}

我們首先運行RestartManagerDemo,在視圖中用鼠標點擊向文檔中添加數據,然后保持文檔為demo.bub。

 

圖3 支持重啟管理器的MFC應用程序

現在,我們就可以運行TestRM重啟這個應用程序了。運行TestRM后,我們會看到RestartManagerDemo會被關閉然后重新打開。同時,我們之前打開的文檔demo.bub也被重新加載,整個應用程序很快恢復到了我們之前的工作狀態。

【編輯推薦】

  1. Visual Studio中的SQL Server CLR代碼調試
  2. 在Visual Studio 2010中自定義開始頁
  3. Visual Studio 歷代開發環境演變史
責任編輯:彭凡 來源: ITPUB
相關推薦

2009-11-19 09:59:47

Visual Stud

2010-11-29 08:57:20

Visual Stud.NET 4

2010-04-15 08:40:00

UML建模Visual Stud

2009-04-23 14:05:28

Visual Stud歷史調試功能

2010-04-12 08:43:45

Visual Stud

2010-02-04 09:17:26

Visual Stud

2009-12-02 09:43:38

Visual Stud

2009-10-22 09:47:33

Visual Stud

2009-12-02 10:44:30

Visual Stud

2009-10-19 09:48:24

Visual Stud

2009-08-21 13:29:20

Visual Stud

2009-11-19 10:55:33

Visual Stud

2009-09-07 09:22:17

Visual Stud代碼片段

2009-11-04 09:16:00

Visual Stud

2010-07-15 08:50:09

SharePointVisual Stud

2010-03-19 13:17:26

Parallel

2010-07-20 08:43:00

Visual Stud

2009-11-24 09:00:02

Visual Stud

2009-11-10 13:43:37

Visual Stud

2010-04-16 13:33:54

Visual Stud
點贊
收藏

51CTO技術棧公眾號

欧美一级视频免费在线观看| 日韩欧美国产不卡| 亚洲电影一二三区| 国产男女无套免费网站| 极品少妇一区二区三区| 亚洲女人天堂成人av在线| 亚洲人辣妹窥探嘘嘘| 欧美韩日亚洲| 久久久777精品电影网影网 | 精品调教chinesegay| 182午夜在线观看| h片在线观看视频免费| 国产精品少妇自拍| 国产一级二级三级精品| 一区二区国产欧美| av不卡免费看| 久久亚洲精品网站| 人妻少妇无码精品视频区| 91精品尤物| 欧美日韩精品是欧美日韩精品| 免费看日本黄色| 秋霞成人影院| 久久精品欧美一区二区三区不卡| 福利精品视频| 国产精品爽爽久久| 日韩精品乱码免费| 77777少妇光屁股久久一区| 日本中文字幕免费在线观看| 欧美亚洲国产精品久久| 亚洲国产日韩精品在线| 欧美性受xxxx黒人xyx性爽| 欧美大片免费观看网址| 精品国产31久久久久久| 天堂8在线天堂资源bt| 欧洲不卡视频| 国产精品免费看片| 日本一区二区三区精品视频| 少妇又色又爽又黄的视频| 国产一区二区三区不卡在线观看| 国产精品久久久久久亚洲调教 | 欧美巨大另类极品videosbest | 欧美v亚洲v综合v国产v仙踪林| 色噜噜狠狠色综合中国| 丰满爆乳一区二区三区| 国模私拍一区二区国模曼安| 亚洲aaa精品| 国产成人一区二区三区别| a天堂中文在线官网在线| ...av二区三区久久精品| 一区二区欧美日韩| 毛片激情在线观看| 亚洲另类在线制服丝袜| 中文字幕精品在线播放| 成人影院在线看| 亚洲六月丁香色婷婷综合久久| 欧美www在线| 国产一级久久久久毛片精品| 久久av免费看| 一本一道久久a久久精品逆3p | 亚洲精品动态| 国产丝袜视频一区| 亚洲一区二区三区蜜桃| 国产精品欧美在线观看| 一区二区国产精品视频| 99精品全国免费观看| 日韩视频在线观看| 欧美成年人在线观看| 青青操视频在线播放| 国产精品二区影院| 2019精品视频| 久久久久精彩视频| 国内精品伊人久久久久影院对白| 91九色极品视频| 老牛影视av牛牛影视av| 成a人片亚洲日本久久| 蜜桃av久久久亚洲精品| 久久精品国产亚洲a∨麻豆| 欧美国产精品中文字幕| 中文字幕色一区二区| 在线三级电影| 欧美天天综合色影久久精品| 成人在线观看a| 亚洲精品伦理| 精品美女一区二区| 六月婷婷七月丁香| 欧美1区免费| 欧美亚洲成人网| 亚洲最大成人av| 成人精品一区二区三区四区| 日本视频一区二区不卡| free性欧美hd另类精品| 欧美特级www| 奇米777在线视频| 亚洲第一福利专区| 久久躁狠狠躁夜夜爽| av资源免费观看| 精品午夜一区二区三区在线观看| 国产一区二区三区av在线| 成人精品一区二区三区免费| 亚洲欧美一区二区久久| 亚洲国产精品久久久久婷蜜芽| 国产原创一区| 日韩av一区二区在线| 欧美三级黄色大片| 媚黑女一区二区| 国产99视频精品免费视频36| h视频在线播放| 欧美日韩国产一区在线| 特种兵之深入敌后| 久久美女视频| 欧美中文在线观看国产| 亚洲av无码国产精品久久不卡| 国产日韩精品视频一区| 国产一区二区视频播放| 国产一区二区三区免费在线| 在线午夜精品自拍| 国产综合精品视频| 国产99久久久国产精品潘金 | 神马午夜伦理不卡 | 欧美在线视频观看| 性生活免费网站| 一区在线观看视频| 亚洲xxxx2d动漫1| 天堂网av成人| 国内精品视频在线| www.国产三级| 亚洲色图在线播放| 天天干天天综合| 国内精品久久久久久久影视简单| 欧美亚洲日本网站| 免费国产黄色片| 亚洲黄色尤物视频| 天堂在线精品视频| 在线国产一区二区| 91精品久久久久久久久久| 成人在线免费观看| 欧美亚州韩日在线看免费版国语版| 欧美 变态 另类 人妖| 激情欧美国产欧美| 成人午夜电影在线播放| 中文字幕中文字幕在线十八区| 7777精品伊人久久久大香线蕉经典版下载 | 精品成人在线视频| 毛茸茸free性熟hd| 亚洲精品乱码| 久久草视频在线看| 在线成人av观看| 亚洲欧美激情在线视频| 日本视频在线观看免费| 91蝌蚪porny九色| 日本女优爱爱视频| 精品日本12videosex| 国产精品第3页| av在线电影院| 欧美夫妻性生活| 欧美 日韩 国产 一区二区三区| 国产一区高清在线| 日本男女交配视频| 美女av一区| 日本欧美一二三区| av福利精品| 日韩视频在线一区二区| 久久久久久国产精品免费播放| 成人精品免费看| www.浪潮av.com| 不卡在线一区| 亚洲bt天天射| 国产夫妻在线| 国产亚洲日本欧美韩国| 国产免费av电影| 亚洲高清在线视频| 欧洲美一区二区三区亚洲| 麻豆免费精品视频| 国产欧美久久久久| 午夜精品影视国产一区在线麻豆| 国产精品成人久久久久| 操你啦在线视频| 日韩精品视频免费专区在线播放| 天天射天天干天天| 亚洲精品亚洲人成人网 | 中文一区在线播放 | 久久影院午夜片一区| 视频二区在线播放| 激情久久五月| 亚洲国产日韩欧美| av不卡一区二区| 国产精品欧美日韩| 里番在线播放| 视频直播国产精品| 日本免费网站在线观看| 欧美日韩一区二区三区免费看| 国产精品久久久精品四季影院| 91美女片黄在线| 91亚洲一区二区| 久久久久国内| 精品视频在线观看一区二区| 黑丝美女一区二区| 国产一区二区三区免费不卡| 亚洲日韩中文字幕一区| 欧洲亚洲女同hd| 日韩av激情| 久久久精品一区二区| 欧洲毛片在线| 精品国产乱码91久久久久久网站| 国产亚洲久一区二区| 亚洲午夜视频在线| 99久久久无码国产精品不卡| k8久久久一区二区三区| 亚洲综合伊人久久| 蜜臀久久久99精品久久久久久| 国产人妻777人伦精品hd| 亚洲国产精品综合久久久| 日韩国产美国| 色狼人综合干| 国产女人水真多18毛片18精品 | 亚洲第一精品自拍| 国产片在线播放| 欧美私模裸体表演在线观看| 精品美女久久久久| 亚洲综合色成人| 波多野结衣亚洲一区二区| 日本一区二区三区高清不卡| 欧美色图亚洲激情| 99视频超级精品| 中文字幕制服丝袜| 国产高清精品久久久久| 亚洲图片 自拍偷拍| 免费观看日韩电影| 亚洲高清在线免费观看| 久色成人在线| 成人观看免费完整观看| 亚洲欧美不卡| www国产精品内射老熟女| 在线观看日韩av电影| 高清无码视频直接看| 欧美成人tv| 日本丰满大乳奶| 亚洲成人精品| 国产一区一区三区| 亚洲午夜精品一区二区国产| 美国av在线播放| 午夜精品久久| 日本a在线天堂| 激情综合久久| 无罩大乳的熟妇正在播放| 99精品久久| 久久国产成人精品国产成人亚洲| 99在线精品视频在线观看| av黄色在线网站| 鲁大师影院一区二区三区| 麻豆传传媒久久久爱| 日韩av电影天堂| 成人性生交免费看| 国产乱人伦偷精品视频免下载| 亚洲精品中文字幕乱码无线| 风间由美一区二区三区在线观看| 逼特逼视频在线观看| av中文字幕在线不卡| 亚洲天堂久久新| 中文字幕不卡的av| 91精品一区二区三区蜜桃| 一区二区三区四区在线免费观看| 国产精品白浆一区二小说| 狠狠久久五月精品中文字幕| 午夜一级黄色片| 欧美一级欧美三级在线观看| 欧美熟妇另类久久久久久不卡 | 毛片激情在线观看| 欧美精品电影免费在线观看| 僵尸再翻生在线观看| 国产精品91在线观看| 伊人久久综合网另类网站| 国产精品对白一区二区三区| 蜜桃精品wwwmitaows| 一区二区三区四区| 精品动漫3d一区二区三区免费| 欧美成人免费高清视频| 美女一区二区三区在线观看| 26uuu国产| 国产日韩欧美精品在线| 国产性xxxx| 色综合久久久久久久久久久| 91亚洲国产成人精品一区| 亚洲国模精品私拍| 午夜在线观看视频| 久久久久久欧美| 色综合天天色| 电影午夜精品一区二区三区| 国产日产精品一区二区三区四区的观看方式 | 狠狠综合久久av一区二区| 亚洲黄色片网站| 日韩伦理在线电影| 91爱视频在线| 国产美女亚洲精品7777| 看欧美日韩国产| 欧美视频久久| 日本人视频jizz页码69| 成人午夜电影小说| 欧美肥妇bbwbbw| 色婷婷综合久久久久中文| 国产熟女一区二区三区五月婷| 亚洲欧美在线x视频| www视频在线免费观看| 国产精品久久久久久久久久尿| jizz性欧美23| 中文字幕超清在线免费观看| 久久精品一区| 91精品啪在线观看国产| 专区另类欧美日韩| 中日精品一色哟哟| 国产婷婷97碰碰久久人人蜜臀| 日本精品600av| 成人性生交xxxxx网站| 国产真实有声精品录音| 北条麻妃在线视频观看| 国产69精品久久99不卡| 四虎884aa成人精品| 欧美最新大片在线看| 日韩欧美电影在线观看| 久久久视频免费观看| 不卡精品视频| 一区二区三区四区视频在线| 日韩精品一级中文字幕精品视频免费观看 | 97视频久久久| 成人一区在线观看| 欧美日韩三级在线观看| 欧美一区二区福利在线| 麻豆网站视频在线观看| 国产精品视频一区国模私拍| 欧美女优在线视频| 91av在线免费播放| 国产午夜精品在线观看| 日日夜夜狠狠操| 亚洲欧洲xxxx| 欧美动物xxx| 日韩在线电影一区| 男男成人高潮片免费网站| 黄色片网站免费| 欧美视频完全免费看| 91免费在线| 国产欧美一区二区三区在线| 色呦哟—国产精品| 91视频这里只有精品| 国产精品国产三级国产aⅴ入口| 亚洲一级片免费看| 久久黄色av网站| 中文字幕久久精品一区二区| 大西瓜av在线| av在线不卡观看免费观看| 久久国产精品免费看| 亚洲精品视频中文字幕| 日本高清不卡一区二区三区视频| 奇米视频888战线精品播放| 日产欧产美韩系列久久99| 日本午夜精品视频| 欧美一区二区免费| aaa在线播放视频| 美国av一区二区三区| 老司机精品视频导航| 四虎影院中文字幕| 精品国产三级电影在线观看| 女人高潮被爽到呻吟在线观看| 欧美精品v日韩精品v国产精品| 日韩电影在线观看网站| 国产又粗又硬又长又爽| 日韩精品影音先锋| 波多野结衣亚洲| 亚洲精品欧美精品| 国产成人综合网站| 国产成人免费看| 日日摸夜夜添一区| 66精品视频在线观看| 亚洲爆乳无码专区| 最新久久zyz资源站| 老司机午夜福利视频| 国产精品嫩草视频| 在线高清一区| 国产又粗又猛又爽又黄的视频四季| 91精品国产综合久久精品性色| 阿v视频在线| 亚洲精品一区二区三区四区五区| 国产成人精品免费视频网站| 青青草av在线播放| 久久精品91久久久久久再现| 欧美黑白配在线| 182午夜视频| 黑人精品xxx一区一二区| 欧美被日视频| 久久伊人资源站| 国产一区二区福利| 亚洲国产av一区二区三区| 欧美成人免费全部| 精品久久网站| 免费a在线观看播放| 欧美一级日韩一级| 456成人影院在线观看| 成人精品视频在线播放| 中文字幕五月欧美| 欧美女v视频| 国产精品一区二区三区在线|