国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

探秘Visual Studio 2010中的災(zāi)難恢復(fù)功能

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

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

圖1 Visual Studio 2010的重啟管理

重啟管理器主要應(yīng)用在下面兩個(gè)方面:

◆軟件更新

很多時(shí)候,軟件或者操作系統(tǒng)升級(jí)后,需要重新啟動(dòng)才可以生效。在這種情況下,我們就可以使用重啟管理器自動(dòng)關(guān)閉真正運(yùn)行的軟件,然后進(jìn)行更新,更新完成后自動(dòng)重新啟動(dòng)軟件,并且恢復(fù)到軟件當(dāng)前的工作狀態(tài)。這將使得軟件的更新更加流暢和智能。

◆軟件災(zāi)難恢復(fù)

當(dāng)軟件遇到嚴(yán)重錯(cuò)誤,進(jìn)程崩潰的時(shí)候,可以使用重啟管理器重新啟動(dòng)軟件,恢復(fù)軟件自動(dòng)保持的數(shù)據(jù),讓軟件可以快速地從災(zāi)難中恢復(fù)過(guò)來(lái)。

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

◆RMStartSession

創(chuàng)建一個(gè)新的重啟任務(wù)。

◆RMGetList

這個(gè)函數(shù)可供安裝程序使用,它可以得到所有被影響的應(yīng)用程序及其當(dāng)前狀態(tài)。

◆RMRegisterResources

注冊(cè)重啟任務(wù)的資源,例如文件名,服務(wù)或者是RM_UNIQUE_PROCESS結(jié)構(gòu)體。

◆RMRestart

重新啟動(dòng)被RmShutdown關(guān)閉的應(yīng)用程序或者服務(wù),當(dāng)然,這些應(yīng)用程序或者服務(wù)都需要通過(guò)RegisterApplicationRestart事先進(jìn)行注冊(cè)。

◆RMShutDown

關(guān)閉應(yīng)用程序或者服務(wù)。

◆RMEndSession

結(jié)束重啟任務(wù)。

添加對(duì)重啟管理器的支持

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

對(duì)于新創(chuàng)建的MFC應(yīng)用程序,我們可以簡(jiǎn)單地在“MFC應(yīng)用程序向?qū)А敝性O(shè)置是否需要支持重啟管理器。

 圖2 MFC應(yīng)用程序向?qū)?/P>

在“MFC應(yīng)用程序向?qū)А钡母呒?jí)特性選項(xiàng)卡中有關(guān)于重啟管理器的選項(xiàng)。其中,如果僅僅選中“Support Restart Manager”選項(xiàng),表示你的應(yīng)用程序?qū)H僅支持重新啟動(dòng)。換句話說(shuō),你的應(yīng)用程序可以在升級(jí)或者崩潰之后重新啟動(dòng),但是無(wú)法自動(dòng)打開(kāi)未關(guān)閉的文檔,無(wú)法對(duì)數(shù)據(jù)進(jìn)行恢復(fù)。

如果同時(shí)選中“Reopen previously open documents”選項(xiàng),它表示你的應(yīng)用程序可以在重啟之后重新打開(kāi)之前打開(kāi)的文檔,也就是自動(dòng)恢復(fù)到當(dāng)前的工作狀態(tài)。

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

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

對(duì)于Visual Studio 2010中新創(chuàng)建的MFC應(yīng)用程序,可以在應(yīng)用程序向?qū)е羞M(jìn)行設(shè)置,添加對(duì)重啟管理器的支持。那么對(duì)于很多已有的MFC應(yīng)用程序,如果同樣想獲得重啟管理器的支持,應(yīng)該怎么辦呢?實(shí)際上,對(duì)于已有的MFC應(yīng)用程序,要想獲得重啟管理器的支持很簡(jiǎn)單。在新版本的MFC中,CWinApp類增加了一個(gè)新的成員變量,用于控制應(yīng)用程序?qū)χ貑⒐芾砥鞯闹С郑覀冎恍枰趹?yīng)用程序的構(gòu)造函數(shù)中,添加幾行代碼,按照我們的需求對(duì)其合理的初始化就可以了。

#p#

跟我們?cè)谏厦嫠榻B的“MFC應(yīng)用程序向?qū)А敝械倪x項(xiàng)相一致,如果你選擇的是“Support Restart Manager”,你可以在初始化函數(shù)中添加如下的代碼:

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;
 

例如,我只想支持重啟管理器,讓軟件可以在更新后重新啟動(dòng),則可以這樣進(jìn)行應(yīng)用程序的初始化:

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
}

實(shí)例:創(chuàng)建支持重啟管理器的MFC應(yīng)用程序

下面我們以一個(gè)實(shí)際的例子,來(lái)看看如何在我們的MFC應(yīng)用程序中添加對(duì)重啟管理器的支持。

首先,啟動(dòng)Visual Studio 2010 CTP,創(chuàng)建一個(gè)單文檔的應(yīng)用程序RestartManagerDemo。按照我們前面的介紹,在“MFC應(yīng)用程序向?qū)А敝羞x擇“Support Restart Manager”和“Reopen previously open documents”選項(xiàng),以支持應(yīng)用程序的重新啟動(dòng)和文檔的重新打開(kāi)。

為了驗(yàn)證重啟管理器重新打開(kāi)文檔的功能,我們?cè)谖臋n中添加一些數(shù)據(jù),這些數(shù)據(jù)將在程序重新啟動(dòng)后自動(dòng)被加載進(jìn)來(lái)。

// 泡泡類,用于在視圖中顯示圓圈泡泡
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:
// 保存數(shù)據(jù)的數(shù)組
    CArray m_Array;
// Operations
public:
CArray& GetBubbleArray()
{
                        return m_Array;
};
//…
};

然后,我們需要實(shí)現(xiàn)文檔的序列化函數(shù),使得我們的文檔數(shù)據(jù)能夠保存和重新加載:

// CRestartManagerDemoDoc serialization

void CRestartManagerDemoDoc::Serialize(CArchive& ar)
{
// 保存數(shù)據(jù)
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 // 加載數(shù)據(jù)
{
  // 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) );
            
  }
}
}

完成文檔類的工作后,我們就有了保存數(shù)據(jù)的容器,現(xiàn)在我們需要對(duì)數(shù)據(jù)進(jìn)行修改和顯示。在視圖類中,我們通過(guò)鼠標(biāo)點(diǎn)擊,修改文檔中的數(shù)據(jù),向其中添加CBubble對(duì)象。

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

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

CView::OnLButtonDown(nFlags, point);
}

然后,我們將這些數(shù)據(jù)在視圖中顯示出來(lái):

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

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

// 顯示數(shù)據(jù)
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);
}
}

這樣,我們就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的支持重啟管理器的文檔視圖類型的MFC應(yīng)用程序。這個(gè)程序可以通過(guò)鼠標(biāo)在視圖中點(diǎn)擊向文檔中添加數(shù)據(jù),然后這些數(shù)據(jù)可以保存和重新打開(kāi)。void CRestartManagerDemoView::OnLButtonDown(UINT nFlags, CPoint point)

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

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

CView::OnLButtonDown(nFlags, point);
}

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

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

// 顯示數(shù)據(jù)
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);
}
}

這樣,我們就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的支持重啟管理器的文檔視圖類型的MFC應(yīng)用程序。這個(gè)程序可以通過(guò)鼠標(biāo)在視圖中點(diǎn)擊向文檔中添加數(shù)據(jù),然后這些數(shù)據(jù)可以保存和重新打開(kāi)。

使用Restart Manassas API測(cè)試重啟管理器

接下來(lái),我們可以編寫(xiě)一個(gè)測(cè)試程序,使用Restart Manassas API模擬軟件的更新后重啟,以驗(yàn)證其重啟管理器是否正常工作。
用Visual Studio 2010 CTP創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序TestRM,然后將其實(shí)現(xiàn)如下:

//

#include "stdafx.h"
#include
#include

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

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

// 創(chuàng)建一個(gè)重啟任務(wù)
if (RmStartSession(&dwSessionHandle, 0, wszSessionKey) == ERROR_SUCCESS)
{
  // 注冊(cè)資源
  if (RmRegisterResources(dwSessionHandle, 1,
   pwzResourcesToRestart, 0, NULL, 0, NULL) == ERROR_SUCCESS)
  {
   // 關(guān)閉應(yīng)用程序
   if (RmShutdown(dwSessionHandle,
    RmShutdownOnlyRegistered, NULL) == ERROR_SUCCESS)
   {
    // 重新啟動(dòng)應(yīng)用程序
    if (RmRestart(dwSessionHandle, 0, NULL) == ERROR_SUCCESS)
    {
     return 0;
    }
   }
  }
}
return 0;
}

我們首先運(yùn)行RestartManagerDemo,在視圖中用鼠標(biāo)點(diǎn)擊向文檔中添加數(shù)據(jù),然后保持文檔為demo.bub。

 

圖3 支持重啟管理器的MFC應(yīng)用程序

現(xiàn)在,我們就可以運(yùn)行TestRM重啟這個(gè)應(yīng)用程序了。運(yùn)行TestRM后,我們會(huì)看到RestartManagerDemo會(huì)被關(guān)閉然后重新打開(kāi)。同時(shí),我們之前打開(kāi)的文檔demo.bub也被重新加載,整個(gè)應(yīng)用程序很快恢復(fù)到了我們之前的工作狀態(tài)。

【編輯推薦】

  1. Visual Studio中的SQL Server CLR代碼調(diào)試
  2. 在Visual Studio 2010中自定義開(kāi)始頁(yè)
  3. Visual Studio 歷代開(kāi)發(fā)環(huán)境演變史
責(zé)任編輯:彭凡 來(lái)源: ITPUB
相關(guān)推薦

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歷史調(diào)試功能

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-04 09:16:00

Visual Stud

2009-11-19 10:55:33

Visual Stud

2009-09-07 09:22:17

Visual Stud代碼片段

2010-07-15 08:50:09

SharePointVisual Stud

2010-03-19 13:17:26

Parallel

2009-11-24 09:00:02

Visual Stud

2010-07-20 08:43:00

Visual Stud

2009-11-10 13:43:37

Visual Stud

2010-04-16 13:33:54

Visual Stud
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

2019中文字幕视频| 视色视频在线观看| 91精品国产黑色瑜伽裤| 9i在线看片成人免费| 国产成人在线视频免费播放| 久久综合色8888| 91沈先生作品| 91国产一区| 678五月天丁香亚洲综合网| 免费毛片小视频| 国产一区二区三区的电影| 98精品国产高清在线xxxx天堂| 激情aⅴ欧美一区二区欲海潮 | 色妞一区二区三区| 婷婷在线视频| 亚洲福利视频导航| 国产视频一区二区视频| 国产精品中文字幕日韩精品| 免费看成人午夜电影| 91成人影院| 国产成人一区二区三区小说| 中文成人激情娱乐网| 欧美va亚洲va香蕉在线| 成人高清免费观看mv| 亚洲成人高清在线| 蜜桃传媒av| 国产精品拍天天在线| 国内性生活视频| 黄色小说综合网站| 亚洲午夜精品久久久中文影院av| 99亚洲一区二区| 国产91视觉| 欧美先锋影音| 91久久国产精品| 久久综合99| 91精品中文在线| 香蕉av一区二区| 91久久精品国产91久久性色| 一本久久青青| 国产精品99久久久久久白浆小说| 久久精品66| 日本午夜人人精品| 亚洲妇女av| 国产成人精品在线视频| 欧美手机在线| 亚洲xxx自由成熟| 亚洲高清激情| 欧美激情专区| 久久狠狠亚洲综合| 久久精品无码中文字幕| 91蝌蚪porny成人天涯| 亚洲综合精品久久| 丰满少妇被猛烈进入高清播放| 欧美在线视频免费| 手机看片福利日韩| 激情婷婷综合| 亚洲免费观看在线观看| 欧美高清在线视频观看不卡| 快射av在线播放一区| 国产精品盗摄一区二区三区| 久久久成人精品视频| 首页综合国产亚洲丝袜| 免费91在线视频| 久久99成人| 久久久久久伊人| 深夜福利久久| 成人免费观看网站| 久久久国产精品一区二区中文| 99re99热| 99久久99久久综合| 日本午夜免费福利视频| 欧美手机在线视频| 欧美日韩在线精品一区二区三区激情综合 | 不卡视频在线看| 亚洲综合欧美在线| 欧美日韩国产一区二区| 黄色网址在线免费| 日韩有码在线电影| 成人看的视频| 在线看成人av电影| 国产精品毛片无遮挡高清| 国产中文在线视频| 亚洲欧洲一区二区三区久久| 日韩三级网址| 国产精品乱码| 91亚洲精品一区二区乱码| 三级黄色网址| 日韩精品高清视频| 激情五月色综合国产精品| 日本三级中国三级99人妇网站| 懂色av一区二区夜夜嗨| 国产真实乱子伦精品视频| 欧美一区二区三区在线免费观看| 大白屁股一区二区视频| 写真福利片hd在线观看| 精品福利视频一区二区三区| 亚洲精品在线播放| 狼狼综合久久久久综合网| 久久久久久久久久看片| 成全电影播放在线观看国语| 久久天天躁狠狠躁夜夜av| 亚洲国产片色| 97秋霞电影网| 亚洲乱码日产精品bd在线观看| bt7086福利一区国产| 欧美性大战久久久久xxx | 美女精品自拍一二三四| 九九热精品在线播放| 精品欧美一区二区三区精品久久| 天堂99x99es久久精品免费| 亚洲国产精品一区在线观看不卡| 亚洲精品免费在线| 美女100%一区| 成人欧美一区二区| 国产精品久久影院| 欧美美女日韩| 极品校花啪啪激情久久| 亚洲老妇xxxxxx| 日韩精品第二页| 日韩欧美电影一区二区| 欧美日韩性视频| www.豆豆成人网.com| 这里只有精品66| 欧美视频在线观看一区二区| 亚洲区小说区| 免费在线观看的毛片| 亚洲精品福利视频| 亚洲三级网站| 在线欧美一级视频| 性色av一区二区三区| 国产91精品久久久久久久网曝门| 里番在线观看网站| 97免费高清电视剧观看| 亚洲免费在线视频一区 二区| 美女视频一区| 久久综合亚洲精品| 亚洲第一福利视频| 亚洲综合国产| 欧美成熟毛茸茸| 国产精品亚洲аv天堂网| 中文幕一区二区三区久久蜜桃| 国产清纯白嫩初高生在线观看91 | 国产区视频在线播放| 国外成人在线直播| www.欧美亚洲| 2019年精品视频自拍| 中文字幕在线中文字幕日亚韩一区| 欧美三级日韩三级| 欧美精品二区| 国产高清视频免费最新在线| 国产精品视频99| 亚洲一区在线观看免费| 国产成人一区| 一区二区三区性视频| 成人午夜小视频| 黄色精品在线看| 女人天堂亚洲aⅴ在线观看| 日本在线一二三| 高清不卡一区二区三区| 色呦呦网站一区| 好吊视频一区二区三区四区| 高清国产福利在线观看| 国产精品久久久久久久久久久久午夜片 | 啊v视频在线| 99一区二区| 欧美日韩国产一二三| 99亚洲视频| 五月花成人网| 特色特色大片在线| 视频一区视频二区国产精品| 91在线国产福利| 欧洲亚洲视频| 天堂a√中文在线| 乱一区二区三区在线播放| 欧美mv日韩mv国产| 九九国产精品视频| 欧美成人aaa| 亚洲欧美国产中文| 成人xxxxx| 日韩视频一区二区| 国产精品羞羞答答xxdd| 欧州一区二区三区| 成人午夜影院| 99在线影院| 亚洲精品狠狠操| 91老师国产黑色丝袜在线| 国产精品一线天粉嫩av| 大地资源中文在线观看免费版| 亚洲啪啪av| 久久久久免费| 日本我和搜子同居的日子高清在线| 国产日韩精品在线观看| 777午夜精品视频在线播放| 国产精品一区二区免费不卡| y111111国产精品久久久| 日本福利片在线| 四虎永久免费网站| 欧美在线视频观看免费网站| 欧美日韩精品三区| 久久综合中文字幕|