Beenden von Diensten für die Wiederherstellung durch Anforderer

Es kann erforderlich sein, dass ein Dienst beendet und nach einem Wiederherstellungsvorgang neu gestartet wird.

In der Regel wird das Beenden und Starten eines Diensts zur Unterstützung einer Wiederherstellung von einem Writer ausgeführt, wenn das PreRestore-Ereignis (mit CVssWriter::OnPreRestore) und das PostRestore-Ereignis (mit CVssWriter::OnPostRestore) behandelt wird.

Es kann jedoch Vorkommen geben, in denen es erforderlich ist, dass ein Anforderer einen ausgeführten Dienst explizit beendet. Writer geben an, ob dies der Fall ist, indem sie den VSS_RME_STOP_RESTORE_START oder VSS_RME_RESTORE_STOP_START Wert der VSS_RESTOREMETHOD_ENUM-Enumeration als Wiederherstellungsmethodeargument eines Aufrufs der IVssCreateWriterMetadata::SetRestoreMethod-Methode festlegen und den Namen des zu beendenden Diensts angeben.

Ein Anforderer ruft Informationen zur Wiederherstellungsmethode und zum Namen des Diensts ab, der beendet werden soll, wenn er mit Writermetadaten arbeitet, indem er die IVssExamineWriterMetadata::GetRestoreMethod-Methode verwendet.

Es ist wichtig, dass der Writer bei der Angabe des Namens eines zu beendenden Diensts den richtigen öffentlich bekannten Namen dieses Diensts verwendet. Ein mehrdeutiger oder ungenauer Name kann dazu führen, dass Anforderer den falschen Dienst beenden oder nicht ermitteln können, welcher Dienst beendet werden soll.

Nach Abschluss des Wiederherstellungsvorgangs müssen die Anforderer den Dienst neu starten.

Sie müssen beim Entwerfen und Implementieren von Writern vorsichtig sein, die Dienste unterstützen, die anfordernde Personen beenden und neu starten müssen. Insbesondere sollten solche Writer nicht tatsächlich Teil des Diensts sein, d. h. der Writer selbst sollte nicht beendet und dann im Verlauf des Wiederherstellungsvorgangs neu gestartet werden müssen.

Ein Writer, dessen Prozess beendet wird, verfügt beim Neustart über einen anderen Writer instance. Die neue instance des Writers empfängt keine VSS-Ereignisse, die für die ursprüngliche instance des Writers vorgesehen sind. Insbesondere wenn der Prozess eines Writer-instance nach der Behandlung eines PreRestore-Ereignisses beendet wird, empfängt die neue instance das PostRestore-Ereignis nicht. Darüber hinaus generiert VSS einen Fehler, der angibt, dass ein teilnehmender Writer am Wiederherstellungsvorgang verloren geht, und IVssBackupComponents::P ostRestore gibt möglicherweise einen Fehler zurück.