判斷寫入器狀態
要求者必須充分瞭解在陰影複製建立期間以及備份和還原作業期間,參與寫入器的狀態。 若要這樣做,建議您:
要求者使用 IVssBackupComponents::GatherWriterStatus、IVssBackupComponents::GetWriterStatusCount 和 IVssBackupComponents::GetWriterStatus。
如在 VSS 下處理備份的概觀和在 VSS 下處理還原的概觀中所述,這些方法在定義完善的備份或還原順序中呼叫時最有用。 一般而言,這表示在要求者完成其中一項工作併產生 VSS 事件之後,應該查詢寫入器。
處理備份時,要求者應該在完成下列方法之後查詢寫入器。 要求者必須在呼叫BackupComplete之後呼叫 GatherWriterStatus,才能將寫入器會話設定為已完成狀態。
注意
只有 Windows Server 2008 Service Pack 2 (SP2) 和更早版本才需要這樣做。
IVssBackupComponents::P repareForBackup
在還原作業期間,要求者應該在完成下列方法之後查詢寫入器:
- 呼叫不屬於定義良好備份或還原順序的 IVssBackupComponents::GatherWriterStatus,不會提供可靠的寫入器狀態圖片,因為它們可能會反映目前作業中未指出失敗的條件,例如:
- 先前陰影複製建立失敗
- 早期備份或還原作業中的錯誤
- 目前處理事件的無回應寫入器
因此,開發人員不應依賴要求者以外的進程所傳回的 寫入器狀態,或嘗試監視 IVssBackupComponents 介面某個實例的進度與另一個實例(可能位於個別線程中)。
請注意,針對備份作業,在檢查寫入器的寫入器元數據檔時,不需要要求者呼叫 IVssBackupComponents::GatherWriterStatus 和 IVssBackupComponents::GetWriterStatus,並遵循 IVssBackupComponents::GatherWriterMetdata 所產生的識別事件。
IVssBackupComponents::GetWriterStatus 只會報告那些寫入器元數據由寫入者識別事件處理程式提供給 VSS 的寫入器狀態,CVssWriter::OnIdentify (並由 IVssBackupComponents::GetWriterMetadataCount 和 IVssBackupComponents::GetWriterMetadata 傳回給要求者)。
如果寫入器的 CVssWriter::OnIdentify 實作失敗,該寫入器的元數據將不會是提供給 VSS 的寫入器元數據檔清單的一部分,不會提供任何狀態資訊,而且呼叫會是多餘的。
針對還原作業,要求者不需要檢查執行寫入器的寫入器元數據檔、呼叫 IVssBackupComponents::GatherWriterStatus 和 IVssBackupComponents::GetWriterStatus 可能是判斷哪些寫入器正在執行的更有效率的方式。