Остановка служб для восстановления по запросу
Может потребоваться остановить службу до и перезапустить после операции восстановления.
Как правило, остановка и запуск службы для поддержки восстановления выполняется писателем при обработке события PreRestore (с CVssWriter::OnPreRestore) и события PostRestore (с CVssWriter::OnPostRestore).
Однако могут случаться случаи, когда запрашивающий должен прямо остановить запущенную службу. Авторы указывают, если это действительно так, задавая значение VSS_RME_STOP_RESTORE_START или VSS_RME_RESTORE_STOP_START в перечислении VSS_RESTOREMETHOD_ENUM в качестве аргумента для метода IVssCreateWriterMetadata::SetRestoreMethod, и указывая имя службы, которую необходимо остановить.
Запрашивающий объект получает сведения о методе восстановления и имя службы, которую необходимо остановить при работе с метаданными записи с помощью метода IVssExamineWriterMetadata::GetRestoreMethod.
Важно, чтобы автор, указывая имя службы, которую необходимо остановить, использовал правильное общеизвестное имя этой службы. Нечеткое или неточное название может привести к остановке неправильной службы или затруднить определение, какую службу следует остановить.
После завершения операции восстановления инициаторы запроса должны перезапустить службу.
Необходимо тщательно спроектировать и реализовать механизмы записи, которые поддерживают работу служб, требующих остановки и перезапуска запрашивающими службами. Такие писатели не должны быть частью службы, т. е. сам писатель не должен быть остановлен, а затем перезапущен вновь в ходе операции восстановления.
Модуль записи, процесс которого остановлен, будет иметь другой экземпляр записи при перезапуске. Новый экземпляр модуля записи не получит события VSS, предназначенные для исходного экземпляра записи. В частности, если процесс экземпляра записи останавливается после обработки события PreRestore, новый экземпляр не получит событие PostRestore. Кроме того, VSS создаст ошибку, указывающую на потерю участника записи в операции восстановления, и IVssBackupComponents::P ostRestore может вернуть сбой.