陰影複製建立詳細資料
一般而言,陰影複製的建立方式取決於要建立的陰影複製類型、其內容,以及陰影複製作業中寫入器的角色。 (如需詳細資訊,請參閱 陰影複製內容設定 。)
陰影複製內容是藉由呼叫 IVssBackupComponents::SetCoNtext 方法來設定。 呼叫 IVssBackupComponents::D oSnapshotSet 方法以建立陰影複製之前,要求者必須依照下列各節中指定的順序呼叫 IVssBackupComponents 方法。
所有陰影複製的必要條件
不論寫入器參與層級為何,建立任何陰影複製一律需要要求者以呼叫 IVssBackupComponents::InitializeForBackup 和 IVssBackupComponents::StartSnapshotSet初始化。
如果未進行此呼叫, IVssBackupComponents::D oSnapshotSet 方法會傳回錯誤。
具有寫入器參與的陰影複製
如果陰影複製內容指定寫入器參與 (,則會使用VSS_CTX_BACKUP呼叫IVssBackupComponents::SetCoNtext,或VSS_CTX_APP_ROLLBACK) :
- 當陰影複製內容支援寫入器參與時,要求者必須一律呼叫 IVssBackupComponents::GatherWriterMetadata 。 如果陰影複製內容支援寫入器參與,且 IVssBackupComponents::GatherWriterMetadata 在 IVssBackupComponents::D oSnapshotSet之前未呼叫,則會傳回錯誤。
- 如果要求者想要選取特定的寫入器元件,它必須先呼叫 IVssBackupComponents::AddComponent ,再呼叫 StartSnapshotSet 來建立陰影複製集。
- 必須呼叫 StartSnapshotSet ,才能建立陰影複製集。
- 要求者可以呼叫 AddToSnapshotSet,將一或多個磁片區新增至陰影複製集。 某些寫入器元件可能不會指定任何受影響的磁片區。 在此情況下,快照集可以接受空的 (,也就是不包含任何磁片區) 。
- 為了保證寫入器中繼資料的一致性,要求者應該一律呼叫 IVssBackupComponents::P repareForBackup ,即使未選取任何元件也一樣。 這會導致 VSS 產生 PrepareForBackup 事件,其中 VSS 會針對每個參與寫入 器呼叫 CVssWriter::OnPrepareBackup 方法。
- VSS 會在建立陰影複製之前產生 PrepareForSnapshot 和 Freeze 事件,以回應 IVssBackupComponents::D oSnapshotSet。 寫入器會使用 CVssWriter::OnPrepareSnapshot 和 CVssWriter::OnFreeze來處理事件。
- VSS 會在建立陰影複製以回應IVssBackupComponents::D oSnapshotSet之後產生Thaw事件和PostSnapshot事件。 寫入器會使用 CVssWriter::OnThaw 和 CVssWriter::OnPostSnapshot來處理事件。
沒有寫入器參與的陰影複製
不建議針對標準備份應用程式建立陰影複製, (請參閱 沒有寫入器參與 的備份) 。
有一些用途,例如磁片的快速備份,以提供安全網路,以防止意外的檔案損毀,而不需要明確寫入器參與即可進行。 這類陰影複製的內容可以是 VSS_CTX_FILE_SHARE_BACKUP 或 VSS_CTX_NAS_ROLLBACK。
針對這種類型的陰影複製,請注意下列事項:
- 要求者仍必須呼叫 所有陰影複製的必要條件中列出的必要方法。
- 要求者可以呼叫 IVssBackupComponents::GatherWriterMetadata,但這並非必要專案。
- 如果要求者呼叫IVssBackupComponents::AddComponent、IVssBackupComponents::P repareForBackup或IVssBackupComponents::BackupComplete,將會傳回錯誤。
- 提供者不會針對這種類型的陰影複製產生 PrepareForSnapshot、 Freeze、 Thaw或 PostSnapshot 事件。