次の方法で共有


要求者による復元のためのサービスの停止

復元操作の前にサービスを停止して再起動する必要がある場合があります。

通常、復元をサポートするサービスの停止と開始は、 ライターが PreRestore イベント ( CVssWriter::OnPreRestore を使用) と PostRestore イベント ( CSVsWriter::OnPostRestore を使用) を処理するときに実行されます。

ただし、要求元が実行中のサービスを明示的に停止する必要がある場合があります。 ライターは、IVssCreateWriterMetadata::SetRestoreMethod メソッドの呼び出しの restore メソッド引数としてVSS_RESTOREMETHOD_ENUM列挙のVSS_RME_STOP_RESTORE_START値またはVSS_RME_RESTORE_STOP_START値を設定し、停止するサービスの名前を指定することで、これが該当するかどうかを示します。

要求元は、 IVssExamineWriterMetadata::GetRestoreMethod メソッドを使用して、ライター メタデータを操作するときに停止する復元メソッドとサービスの名前に関する情報を取得します。

停止するサービスの名前を指定する場合、ライターは、そのサービスの既知の正しい名前を使用することが重要です。 名前があいまいまたは不正確な場合、要求者が間違ったサービスを停止したり、停止するサービスを特定できない可能性があります。

復元操作が完了したら、要求元はサービスを再起動する必要があります。

要求者が停止して再起動する必要があるサービスをサポートするライターの設計と実装には注意する必要があります。 具体的には、このようなライターは実際にはサービスの一部であるべきではありません。つまり、復元操作の過程でライター自体を停止してから再起動する必要はありません。

プロセスが停止したライターは、再起動時に別のライター インスタンスを持ちます。 ライターの新しいインスタンスは、ライターの元のインスタンスを対象とした VSS イベントを受信しません。 具体的には、PreRestore イベントの処理後にライター インスタンスのプロセスが停止した場合、新しいインスタンスは PostRestore イベントを受信しません。 さらに、VSS は復元操作で参加しているライターが失われたことを示すエラーを生成し、 IVssBackupComponents::P ostRestore はエラーを返す可能性があります。