ライターの状態の確認
要求元は、シャドウ コピーの作成中、バックアップと復元の操作中に、共に参加するライターの状態について明確に理解する必要があります。 そのためには、次のことをお勧めします。
要求元は、IVssBackupComponents::GatherWriterStatus、IVssBackupComponents::GetWriterStatusCount、IVssBackupComponents::GetWriterStatus を使います。
「VSS でのバックアップ処理の概要」と「VSS での復元処理の概要」で説明されているように、これらのメソッドは、明確に定義されたバックアップまたは復元シーケンスで呼び出される場合に最も役立ちます。 通常、これは、要求元がタスクの 1 つを完了し、VSS イベントを生成した後でライターにクエリを実行する必要があることを意味します。
バックアップを処理するとき、要求元は次のメソッドの完了後に、ライターにクエリを実行する必要があります。 要求元は、BackupComplete を呼び出した後、GatherWriterStatus を呼び出して、ライター セッションを完了状態に設定する必要があります。
Note
これは、Windows Server 2008 Service Pack 2 (SP2) 以前でのみ必要です。
IVssBackupComponents::PrepareForBackup
復元操作中、要求元は次のメソッドの完了後に、ライターにクエリを実行する必要があります。
- 明確に定義されたバックアップまたは復元シーケンスの一部ではない IVssBackupComponents::GatherWriterStatus の呼び出しは、ライターの状態の信頼できる状況を提供しません。これは、現在の操作の失敗を示さない次のような状況を反映している可能性があるためです。
- 以前のシャドウ コピー作成の失敗
- 初期のバックアップまたは復元操作でのエラー
- 現在イベントを処理している応答しないライター
したがって、開発者は、要求元以外のプロセスから返されるライターの状況に依存したり、IVssBackupComponents インターフェイスの 1 つのインスタンスの進行状況を別のもの (場合によっては別のスレッド) で監視したりしないでください。
ライターのライター メタデータ ドキュメントを調べる必要があるバックアップ オペレーションの場合、IVssBackupComponents::GatherWriterMetdata によって発生した Identify イベントの生成と処理に続く、IVssBackupComponents::GatherWriterStatus および IVssBackupComponents::GetWriterStatus の要求元による呼び出しは必要ないことに注意してください。
IVssBackupComponents::GetWriterStatus は、ライターの Identify イベント ハンドラー、CVssWriter::OnIdentify によってメタデータが VSS に提供された (そして、IVssBackupComponents::GetWriterMetadataCount と IVssBackupComponents::GetWriterMetadata によって要求元に返された) ライターの状態のみを報告します。
ライターによる CVssWriter::OnIdentify の実装が失敗した場合、そのライターのメタデータは VSS に提供されるライター メタデータ ドキュメントのリストには含まれません。状態情報は利用できなくなり、呼び出しは冗長になります。
復元操作の場合、要求元が実行中のライターのライター メタデータ ドキュメントを調べる必要がない場合、IVssBackupComponents::GatherWriterStatus と IVssBackupComponents::GetWriterStatus を呼び出すことは、どのライターが実行されているかを判断するためのより効率的な方法である可能性があります。