CVssWriter::OnFreeze 方法 (vswriter.h)

OnFreeze 方法是由在陰影複製凍結開始時收到 Freeze 事件的寫入器呼叫。 寫入器會使用這個方法來執行參與凍結或凍結所需的作業。

OnFreeze 是純虛擬方法。 它不是由 CVssWriter 基類實作,而且必須由衍生類別實作。

Syntax

bool OnFreeze();

傳回值

此方法的實作必須傳回 true ,但發生嚴重錯誤的情況除外。 如果發生嚴重錯誤,方法必須呼叫 CVssWriter::SetWriterFailure 方法,才能提供失敗的描述,然後再傳回 false。 如果發生非嚴重錯誤,方法仍應呼叫 SetWriterFailure ,但傳回 true。 如果錯誤是由暫時性問題所造成,方法應該在 對 SetWriterFailure 的呼叫中指定VSS_E_WRITERERROR_RETRYABLE。

在發生失敗的所有情況下,方法應該將事件寫入事件記錄檔,以報告失敗的確切原因。

備註

在此方法中,寫入器應用程式應該將本身放入與 VSS 作業相容的妥善定義狀態。

在此方法中,寫入器應該完成最終準備,以支援建立陰影複製。 建立陰影複製之後,寫入器將會收到 Thaw 事件,並可繼續正常作業。

根據預設,凍結和解除凍結事件之間的逾時時間範圍是 60 秒。 也就是說,如果未收到逾時時段的 Thaw 事件,就會產生 Abort 事件。 寫入器可以將 dwTimeoutFreeze 自變數設定為 CVssWriter::Initialize,在初始化時間變更逾時視窗。

寫入器如何準備陰影複製,與裝載陰影複製的應用程式高度相依。 有些應用程式可以承受保留所有寫入,並讓數據在此期間保持絕對一致狀態。 其他應用程式,例如許多資料庫無法在此期間停止工作,但可以採取動作,例如檢查點檢查其狀態,這可能會降低在此時段期間所建立陰影複製的復原時間。

如果寫入器無法將自己放入凍結的妥善定義狀態,就會發生下列情況:

  1. OnFreeze 應該會 傳回 false,並確認陰影複製。
  2. 寫入器會呼叫 CVssWriter::SetWriterFailure 來提供失敗的描述。
  3. 中止事件會在 OnFreeze 傳回 false 時產生
寫入器永遠不會從這個方法或任何其他 CVssWriter (Ex) ::OnXxx 回呼方法擲回例外狀況。

處理 Freeze 事件的逾時時間範圍通常與處理 PrepareForSnapshot 事件的逾時時間範圍相較之下。 因此,開發人員應該避免此方法中的冗長作業。 一般用途可能是暫停寫入器記錄。

建議 CVssWriter::OnPrepareSnapshot 處理所有耗時的作業。

在此方法之後,將會呼叫 CVssWriter::OnThawCVssWriter::OnAbort

如果此方法呼叫 CVssWriterEx2::GetSessionIdCVssWriter::SetWriterFailure 或 CVssWriterEx2::SetWriterFailureEx 方法,則必須在呼叫此方法的相同線程中執行此動作。 如需詳細資訊,請參閱 寫入器事件處理

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 vswriter.h (包括 Vss.h、VsWriter.h)
程式庫 VssApi.lib

另請參閱

CVssWriter

CVssWriter::OnAbort

CVssWriter::OnPreRestore

CVssWriter::OnPrepareBackup

CVssWriter::OnPrepareSnapshot

CVssWriter::OnThaw

CVssWriter::SetWriterFailure