Behandeln von BackupShutdown-Ereignissen

Es ist möglich, dass eine Sicherungsanwendung (Anforderer) beendet und kein BackupComplete-Ereignis generiert. Die Sicherungsanwendung kann abstürzen oder beendet werden (z. B. über den Task-Manager) und IVssBackupComponents::BackupComplete nicht aufrufen.

Daher generiert die VSS-Infrastruktur (und nicht der Anforderer) ein BackupShutdown-Ereignis, wenn ein instance von IVssBackupComponents, die an einer Sicherung teilnehmen, freigegeben wird, unabhängig davon, ob es vom Anforderer oder vom System freigegeben wird.

Wenn eine Sicherung ordnungsgemäß fortgesetzt wird, erhält ein Writer ein BackupComplete-Ereignis, gefolgt von einem BackupShutdown-Ereignis.

Wenn der Vorgang abgebrochen wird (der Anforderer generiert ein Abort-Ereignis durch Aufrufen von IVssBackupComponents::AbortBackup) oder abrupt fehlschlägt, empfängt ein Writer möglicherweise nur ein BackupShutdown-Ereignis und empfängt möglicherweise keine anderen Ereignisse, die Bereinigungsvorgänge ausführen. Es liegt an einem Writer, zu bestimmen, ob ein BackupShutdown-Ereignis einer ordnungsgemäßen Abfolge von Ereignissen folgt oder einen unerwarteten Fehler der Sicherungsvorgänge darstellt.

Der BackupShutdown-Ereignishandler CVssWriter::OnBackupShutdown empfängt die VSS_ID (GUID) des Schattenkopiesatzes des heruntergefahrenen Sicherungsvorgangs. Der Writer kann damit bestimmen, welcher Sicherungsvorgang heruntergefahren wird, wenn er die ID des Schattenkopiesatzes während der Sicherungssequenz gespeichert hat (z. B. aus CVssWriter::OnFreeze, CVssWriter::OnThaw oder CVssWriter::OnPostSnapshot) mithilfe von CVssWriter::GetCurrentSnapshotSetId.

Ein Writer sollte jedoch CVssWriter::GetCurrentSnapshotSetId nicht aus CVssWriter::OnBackupShutdown aufrufen. Außerdem kann CVssWriter::GetCurrentSnapshotSetId nicht aufgerufen werden, nachdem CVssWriter::OnPostSnapshot zurückgegeben wurde.

Es ist möglich, dass der Writer an mehreren Sicherungsvorgängen beteiligt ist, und wenn ein BackupShutdown-Ereignis aufgrund eines abrupten Herunterfahrens eines Anforderers aufgerufen wird, kann die zurückgegebene VSS_ID die eines anderen Sicherungsvorgangs sein, an dem der Writer teilgenommen hat.