Parando serviços para restauração por solicitantes
Pode ser necessário que um serviço seja interrompido antes e reiniciado após uma operação de restauração.
Normalmente, parar e iniciar um serviço para dar suporte a uma restauração seria executado por um gravador ao manipular o evento PreRestore (com CVssWriter::OnPreRestore) e o evento PostRestore (com CVssWriter::OnPostRestore).
No entanto, pode haver casos em que é necessário que um solicitante interrompa explicitamente um serviço em execução. Os gravadores indicam se esse é o caso definindo o valor VSS_RME_STOP_RESTORE_START ou VSS_RME_RESTORE_STOP_START da enumeração VSS_RESTOREMETHOD_ENUM como o argumento do método de restauração de uma chamada para o método IVssCreateWriterMetadata::SetRestoreMethod e especificando o nome do serviço a ser interrompido.
Um solicitante obtém informações sobre o método de restauração e o nome do serviço a ser interrompido ao trabalhar com metadados de gravador usando o método IVssExamineWriterMetadata::GetRestoreMethod .
É importante que o gravador, ao especificar o nome de um serviço a ser interrompido, use o nome correto conhecido publicamente desse serviço. Um nome ambíguo ou impreciso pode fazer com que os solicitantes interrompam o serviço errado ou não consigam determinar qual serviço deve ser interrompido.
Após a conclusão da operação de restauração, os solicitantes devem reiniciar o serviço.
Você deve ter cuidado ao projetar e implementar gravadores que dão suporte aos serviços aos quais os solicitantes devem parar e reiniciar. Especificamente, esses gravadores não devem realmente fazer parte do serviço, ou seja, o próprio gravador não deve ser interrompido e reiniciado no decorrer da operação de restauração.
Um gravador cujo processo é interrompido terá uma instância de gravador diferente após a reinicialização. A nova instância do gravador não receberá eventos VSS destinados à instância original do gravador. Especificamente, se o processo de uma instância de gravador for interrompido após a manipulação de um evento PreRestore, a nova instância não receberá o evento PostRestore. Além disso, o VSS gerará um erro que indica a perda de um gravador participante na operação de restauração e IVssBackupComponents::P ostRestore pode retornar uma falha.