处理 BackupShutdown 事件

备份应用程序 (请求者) 终止而不是生成 BackupComplete 事件。 备份应用程序可能会崩溃,或者从任务管理器 (终止,例如,) 且无法调用 IVssBackupComponents::BackupComplete

因此,无论请求者还是系统发布参与备份的 IVssBackupComponents 实例时,VSS 基础结构 (而不是请求者) 生成 BackupShutdown 事件。

如果备份正常运行,编写器将收到 BackupComplete 事件,后跟 BackupShutdown 事件。

如果操作中止 (请求者通过调用 IVssBackupComponents::AbortBackup) 或突然失败来生成中止事件,则编写器可能只接收 BackupShutdown 事件,并且可能不会接收执行清理操作的其他事件。 由编写器决定 BackupShutdown 事件是否遵循正确的事件序列,或表示备份操作意外失败。

BackupShutdown 事件处理程序 CVssWriter::OnBackupShutdown 接收正在关闭的备份操作卷影副本集的VSS_ID (GUID) 。 编写器可以使用它来确定正在关闭的备份操作,如果它在其备份序列中存储了卷影副本集 ID (,例如,从 CVssWriter::OnFreeze、CVssWriter::OnThawCVssWriter::OnPostSnapshot) ,请使用 CVssWriter::GetCurrentSnapshotSetId

但是,编写器不应从 CVssWriter::OnBackupShutdown 中调用 CVssWriter::GetCurrentSnapshotSetId。 此外, CVssWriter::GetCurrentSnapshotSetIdCVssWriter::OnPostSnapshot 返回后无法调用。

编写器可以参与多个备份操作,如果由于请求者的突然关闭而调用 BackupShutdown 事件,则返回VSS_ID可能是编写器参与的另一个备份操作。