停止要求者還原的服務
在還原作業之後,可能需要先停止服務再重新開機。
一般而言,使用CVssWriter::OnPreRestore) 處理PreRestore事件 (,並使用CVssWriter::OnPostRe) store (和 PostRestore事件 (時,寫入器會執行還原服務。
不過,當要求者明確停止執行中的服務時,可能會有這種情況。 寫入器會藉由將 VSS_RESTOREMETHOD_ENUM 列舉的VSS_RME_STOP_RESTORE_START或VSS_RME_RESTORE_STOP_START值設定為呼叫 IVssCreateWriterMetadata::SetRestoreMethod 方法的 restore 方法引數,並指定要停止的服務名稱,以指出這種情況。
要求者會使用 IVssExstoreWriterMetadata::GetRestoreMethod 方法,取得使用寫入器中繼資料時所要停止之還原方法和服務名稱的相關資訊。
寫入器在指定要停止的服務名稱時,請務必使用該服務的正確公開已知名稱。 模棱兩可或不正確的名稱可能會導致要求者停止錯誤的服務,或無法判斷要停止的服務。
完成還原作業之後,要求者必須重新開機服務。
您必須小心設計及實作支援要求者必須停止和重新開機之服務的寫入器。 具體而言,這類寫入器實際上不應該是服務的一部分,也就是說,寫入器本身不應該停止,然後在還原作業過程中重新開機。
重新開機時,進程停止的寫入器會有不同的寫入器實例。 寫入器的新實例將不會接收用於寫入器原始實例的 VSS 事件。 具體而言,如果在處理 PreRestore 事件之後停止寫入器實例的進程,新的實例將不會收到 PostRestore 事件。 此外,VSS 會產生錯誤,指出參與寫入器在還原作業中遺失,而 IVssBackupComponents::P ostRestore 可能會傳回失敗。