Arresto dei servizi per il ripristino da parte dei richiedenti
Potrebbe essere necessario arrestare un servizio prima di e riavviarlo dopo un'operazione di ripristino.
In genere, l'arresto e l'avvio di un servizio per supportare un ripristino verrebbero eseguiti da un writer durante la gestione dell'evento PreRestore (con CVssWriter::OnPreRestore) e l'evento PostRestore (con CVssWriter::OnPostRestore).
Tuttavia, possono verificarsi casi in cui è necessario che un richiedente arresti esplicitamente un servizio in esecuzione. Gli autori indicano se questo è il caso impostando il valore VSS_RME_STOP_RESTORE_START o VSS_RME_RESTORE_STOP_START dell'enumerazione VSS_RESTOREMETHOD_ENUM come argomento del metodo restore di una chiamata al metodo IVssCreateWriterMetadata::SetRestoreMethod e specificando il nome del servizio da arrestare.
Un richiedente ottiene informazioni sul metodo di ripristino e sul nome del servizio da arrestare quando si usano i metadati del writer usando il metodo IVssExamineWriterMetadata::GetRestoreMethod .
È importante che il writer, quando si specifica il nome di un servizio da arrestare, usi il nome noto pubblicamente corretto di tale servizio. Un nome ambiguo o impreciso può causare l'arresto del servizio errato o l'impossibilità di determinare quale servizio arrestare.
Al termine dell'operazione di ripristino, i richiedenti devono riavviare il servizio.
È necessario prestare attenzione nella progettazione e nell'implementazione di writer che supportano i servizi che i richiedenti devono arrestare e riavviare. In particolare, tali writer non devono effettivamente far parte del servizio, ovvero il writer stesso non deve essere arrestato e quindi riavviato nel corso dell'operazione di ripristino.
Un writer il cui processo viene arrestato avrà un'istanza del writer diversa al riavvio. La nuova istanza del writer non riceverà gli eventi VSS destinati all'istanza originale del writer. In particolare, se il processo di un'istanza del writer viene arrestato dopo la gestione di un evento PreRestore, la nuova istanza non riceverà l'evento PostRestore. Inoltre, vss genererà un errore che indica la perdita di un writer partecipante nell'operazione di ripristino e IVssBackupComponents::P ostRestore potrebbe restituire un errore.