次の方法で共有


VSS_RESTOREMETHOD_ENUM列挙 (vswriter.h)

VSS_RESTOREMETHOD_ENUM列挙体は、ライター メタデータ ドキュメントを使用して、ライターが管理するすべてのコンポーネント内のすべてのファイルで使用される既定のファイル復元方法を指定するために、バックアップ時にライターによって使用されます。

復元方法はライター全体で、元の復元ターゲットとも呼ばれ、VSS_RT_ORIGINALVSS_RESTORE_TARGET値によって示されます。

構文

typedef enum VSS_RESTOREMETHOD_ENUM {
  VSS_RME_UNDEFINED = 0,
  VSS_RME_RESTORE_IF_NOT_THERE,
  VSS_RME_RESTORE_IF_CAN_REPLACE,
  VSS_RME_STOP_RESTORE_START,
  VSS_RME_RESTORE_TO_ALTERNATE_LOCATION,
  VSS_RME_RESTORE_AT_REBOOT,
  VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE,
  VSS_RME_CUSTOM,
  VSS_RME_RESTORE_STOP_START
} ;

定数

 
VSS_RME_UNDEFINED
値: 0
復元方法は定義されていません。


これは、ライターの部分でエラーが発生したことを示します。

この値は、高速ライターではサポートされていません。
VSS_RME_RESTORE_IF_NOT_THERE
リクエスターは、 のバージョンがない場合にのみ、選択したコンポーネントまたはコンポーネント セットのファイルを復元する必要があります
これらのファイルは現在ディスク上にあります。


ファイルの復元用に代替の場所マッピングが定義されていない限り、
選択したコンポーネントまたはコンポーネント セットが現在ディスク上にあり、選択したコンポーネントによって管理されているファイルは存在しません。
コンポーネントまたはコンポーネント セットを復元する必要があります。

ファイルの代替ロケーション・マッピングが定義されていて、ファイルのバージョンがディスク上に存在する場合、
ファイルのバージョンが存在しない場合にのみ、別の場所にファイルを書き込む必要があります。
別の場所。
VSS_RME_RESTORE_IF_CAN_REPLACE
リクエスターは、現在ディスク上のファイルを上書きできる場合にのみ、選択したコンポーネントまたはコンポーネント セットのファイルを復元する必要があります。


ファイルの復元用に別の場所マッピングが定義されていない限り、
は、ディスク上の選択したコンポーネントまたはコンポーネント セットを上書きすることはできません。
コンポーネントまたはコンポーネント セットを復元する必要があります。

ファイルの代替場所マッピングが定義されている場合は、ファイルを別の場所に書き込む必要があります。
VSS_RME_STOP_RESTORE_START
リクエスターは、次のように復元操作を実行する必要があります。


  1. PreRestore イベントを送信し、すべてのライターが処理するまで待ちます。

  2. サービスを停止します。

  3. ファイルを元の場所に復元します。

  4. サービスを再起動します。

  5. PostRestore イベントを送信し、すべてのライターが処理するまで待ちます。


停止するサービスは、 IVssCreateWriterMetadata::SetRestoreMethod メソッドを呼び出すときに、事前にライターを指定します。 要求元は、 IVssExamineWriterMetadata::GetRestoreMethod メソッドを呼び出すことによって、サービスの名前を取得できます。

停止中のサービスでライターがホストされている場合、サービスの停止と再起動時にライター インスタンス ID が変更されるため、そのライターは PostRestore イベントを受信しないことに注意してください。
VSS_RME_RESTORE_TO_ALTERNATE_LOCATION
リクエスターは、選択したコンポーネントまたはコンポーネント セットのファイルを、 で指定された場所に復元する必要があります。
ライター コンポーネント メタデータ ファイルで指定された代替の場所マッピング。 (詳細については、
IVssCreateWriterMetadata::AddAlternateLocationMapping,
IVssComponent::GetAlternateLocationMapping,
IVssExamineWriterMetadata::GetAlternateLocationMapping,
および IVssWMFiledesc::GetAlternateLocation.)

この値は、高速ライターではサポートされていません。
VSS_RME_RESTORE_AT_REBOOT
リクエスターは、コンピューターの再起動後に、選択したコンポーネントまたはコンポーネント セットのファイルを復元する必要があります。


復元するファイルは一時的な場所にコピーする必要があり、リクエスターは を使用する必要があります
MoveFileEx
MOVEFILE_DELAY_UNTIL_REBOOT フラグを設定して、これらのファイルの復元を完了します。
コンピューターの再起動後に適切な場所に移動します。
VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE
可能であれば、リクエスターは選択したコンポーネントまたはコンポーネントセットのファイルを正しいファイルに復元する必要があります
場所をすぐに確認できます。


ディスク上で選択したコンポーネントまたはコンポーネント セットによって管理されているいずれかのファイルのバージョンがある場合、
を上書きすることはできません。その後、選択したコンポーネントまたはコンポーネント セットによって管理されているすべてのファイルを復元する必要があります
コンピューターが再起動された後。

この場合、復元するファイルはディスク上の一時的な場所にコピーする必要があり、リクエスターは
で MoveFileEx を使用する
MOVEFILE_DELAY_UNTIL_REBOOT フラグを設定して、これらのファイルの復元を完了します。
コンピューターの再起動後に適切な場所に移動します。
VSS_RME_CUSTOM
リクエスターは、カスタム復元方法を使用して、選択したによって管理されているファイルを復元する必要があります
コンポーネントまたはコンポーネント セット。


カスタム復元では、特定のライターにプライベートなファイル取得 API 関数またはプロトコルを使用できます
シングル サインオンを構成します。 このような復元では、ライター コンポーネント メタデータ ファイル内の情報を使用する必要はありません。 (詳細については、
その他のカスタム バックアップと復元
information.)

この値は、高速ライターではサポートされていません。
VSS_RME_RESTORE_STOP_START
リクエスターは、次のように復元操作を実行する必要があります。


  1. PreRestore イベントを送信し、すべてのライターが処理するまで待ちます。

  2. ファイルを元の場所に復元します。

  3. PostRestore イベントを送信し、すべてのライターが処理するまで待ちます。

  4. サービスを停止します。

  5. サービスを再起動します。


停止するサービスは、 IVssCreateWriterMetadata::SetRestoreMethod メソッドを呼び出すときに、ライターによって事前に指定されます。 要求元は、 IVssExamineWriterMetadata::GetRestoreMethod メソッドを呼び出すことによって、サービスの名前を取得できます。

注釈

ライターは、バックアップ中に IVssCreateWriterMetadata::SetRestoreMethod を呼び出して、そのメタデータに目的の復元メソッドを指定することで、ライター メタデータ ドキュメントの復元メソッドを設定します。

要求者は、 IVssExamineWriterMetadata::GetRestoreMethod を呼び出してライターの要求された復元メソッドを取得し、それに応じて動作します。

restore メソッドは、特定のライターのすべてのコンポーネント内のすべてのファイルに適用されます。

ライターが IVssComponent::SetRestoreTarget でVSS_RT_ORIGINAL以外のVSS_RESTORE_TARGET値を設定すると、復元時にコンポーネントごとに復元方法がオーバーライドされる場合があります。

別の場所マッピングが定義されていない VSS_RME_RESTORE_TO_ALTERNATE_LOCATION の復元方法はライター エラーを構成し、リクエスターはそれをそのように報告する必要があります。

復元方法で、現在ディスク上のファイル (VSS_RME_RESTORE_IF_NOT_THERE、VSS_RME_RESTORE_IF_CAN_REPLACE、またはVSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE) の状態に関するチェックが必要な場合は、ファイル I/O 操作を使用して、復元を実際に続行する前にコンポーネント全体を復元できることを確認することをお勧めします。

これを行う最も安全な方法は、復元前に CreateFile を使用してすべてのターゲット ファイルを排他的に開く (共有しない) 方法です。

VSS_RME_RESTORE_IF_NOT_THEREの場合は、CREATE_NEWの作成処理フラグも設定する必要があります。

開いている操作が成功した場合、復元は続行でき、 CreateFile によって返されるハンドルを使用して、復元されたデータを実際にディスクに書き込む必要があります。

そうでない場合は、メソッドに応じてエラーが返されるか、または別の場所マッピングがチェックされ、(使用可能な場合)、または次回の再起動時に復元用にステージングされたコンポーネント ファイルが返されることがあります。

これは、システムのオーバーヘッドが原因で、非常に大きなコンポーネント (そのうちの一部に何千ものファイルがある可能性があります) の問題である可能性があります。

この場合、信頼性が低くても使用可能なオプションは、次の操作を行うことです。

  1. 現在ディスク上にあるすべてのファイルをコピーし、一時キャッシュに復元します。
  2. 現在ディスク上のファイルをバックアップ ファイルに置き換えようとします (2 番目の一時領域またはバックアップ メディアのディスク上にある可能性があります)。
  3. ファイルの復元に失敗した場合は、復元操作を終了し、元のファイルを一時的な場所からコピーし、再起動操作時に別の場所のマッピングまたは復元を続行します。
VSS でのバックアップと復元のファイルの場所の詳細については、「 既定以外のバックアップと復元の場所」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header vswriter.h

こちらもご覧ください

IVssBackupComponents::AddAlternativeLocationMapping

IVssComponent::GetAlternateLocationMapping

IVssCreateWriterMetadata::AddAlternateLocationMapping

IVssCreateWriterMetadata::SetRestoreMethod

IVssExamineWriterMetadata::GetAlternateLocationMapping

IVssExamineWriterMetadata::GetRestoreMethod

IVssWMFiledesc::GetAlternateLocation

VSS_WRITERRESTORE_ENUM