Win32 API 日本語リファレンス
ホームStorage.Vss › VSS_RESTOREMETHOD_ENUM

VSS_RESTOREMETHOD_ENUM

列挙型
基底型i4

メンバー 9

名前10進16進説明
VSS_RME_UNDEFINED00x0

復元方法が定義されていません。

これはライター側のエラーを示します。

この値はエクスプレスライターではサポートされません。

VSS_RME_RESTORE_IF_NOT_THERE10x1

リクエスターは、選択されたコンポーネントまたはコンポーネントセットのファイルを、それらのファイルのバージョンが現在ディスク上に存在しない場合にのみ復元します。

ファイル復元用の代替場所マッピングが定義されていない限り、選択されたコンポーネントまたはコンポーネントセットが管理するいずれかのファイルのバージョンが現在ディスク上に存在する場合、そのコンポーネントまたはコンポーネントセットが管理するファイルはいずれも復元しないでください。

ファイルの代替場所マッピングが定義されており、元の場所にそのファイルのバージョンがディスク上に存在する場合は、代替場所に同じファイルのバージョンが存在しないときにのみ、ファイルを代替場所に書き込みます。

VSS_RME_RESTORE_IF_CAN_REPLACE20x2

リクエスターは、選択されたコンポーネントまたはコンポーネントセットのファイルを、現在ディスク上にあるファイルを上書きできる場合にのみ復元します。

ファイル復元用の代替場所マッピングが定義されていない限り、選択されたコンポーネントまたはコンポーネントセットのファイルのうち、ディスク上に上書きできないバージョンが存在するものがある場合、そのコンポーネントまたはコンポーネントセットが管理するファイルはいずれも復元しないでください。

ファイルの代替場所マッピングが定義されている場合は、ファイルを代替場所に書き込みます。

VSS_RME_STOP_RESTORE_START30x3

リクエスターは、次の手順で復元操作を実行します。

  1. PreRestore イベントを送信し、すべてのライターがそれを処理するまで待機します。
  2. サービスを停止します。
  3. ファイルを元の場所に復元します。
  4. サービスを再起動します。
  5. PostRestore イベントを送信し、すべてのライターがそれを処理するまで待機します。
停止するサービスは、ライターが IVssCreateWriterMetadata::SetRestoreMethod メソッドを呼び出す際にあらかじめ指定します。リクエスターは IVssExamineWriterMetadata::GetRestoreMethod メソッドを呼び出すことで、そのサービスの名前を取得できます。

なお、停止対象のサービス内でライターがホストされている場合、そのライターは PostRestore イベントを受け取りません。サービスが停止され再起動されるとライターインスタンス ID が変わるためです。

VSS_RME_RESTORE_TO_ALTERNATE_LOCATION40x4

リクエスターは、選択されたコンポーネントまたはコンポーネントセットのファイルを、ライターコンポーネントメタデータファイルで指定された代替場所マッピングが示す場所に復元します。(IVssCreateWriterMetadata::AddAlternateLocationMappingIVssComponent::GetAlternateLocationMappingIVssExamineWriterMetadata::GetAlternateLocationMapping、および IVssWMFiledesc::GetAlternateLocation を参照してください。)

この値はエクスプレスライターではサポートされません。

VSS_RME_RESTORE_AT_REBOOT50x5

リクエスターは、選択されたコンポーネントまたはコンポーネントセットのファイルを、コンピューターの再起動後に復元します。

復元するファイルは一時的な場所にコピーし、リクエスターは MoveFileExMOVEFILE_DELAY_UNTIL_REBOOT フラグと共に使用して、コンピューターの再起動後にこれらのファイルの適切な場所への復元を完了します。

VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE60x6

リクエスターは、可能であれば、選択されたコンポーネントまたはコンポーネントセットのファイルを直ちに正しい場所に復元します。

選択されたコンポーネントまたはコンポーネントセットが管理するファイルのうち、ディスク上に上書きできないバージョンが存在するものがある場合は、そのコンポーネントまたはコンポーネントセットが管理するすべてのファイルをコンピューターの再起動後に復元します。

この場合、復元するファイルはディスク上の一時的な場所にコピーし、リクエスターは MoveFileExMOVEFILE_DELAY_UNTIL_REBOOT フラグと共に使用して、コンピューターの再起動後にこれらのファイルの適切な場所への復元を完了します。

VSS_RME_CUSTOM70x7

リクエスターは、選択されたコンポーネントまたはコンポーネントセットが管理するファイルの復元に、カスタム復元方法を使用します。

カスタム復元では、特定のライターアプリケーションに固有のファイル取得 API 関数やプロトコルを使用することがあります。そのような復元では、ライターコンポーネントメタデータファイルの情報を使用する必要はありません。(詳細については Custom Backups and Restores を参照してください。)

この値はエクスプレスライターではサポートされません。

VSS_RME_RESTORE_STOP_START80x8

リクエスターは、次の手順で復元操作を実行します。

  1. PreRestore イベントを送信し、すべてのライターがそれを処理するまで待機します。
  2. ファイルを元の場所に復元します。
  3. PostRestore イベントを送信し、すべてのライターがそれを処理するまで待機します。
  4. サービスを停止します。
  5. サービスを再起動します。
停止するサービスは、ライターが IVssCreateWriterMetadata::SetRestoreMethod メソッドを呼び出す際にあらかじめ指定します。リクエスターは IVssExamineWriterMetadata::GetRestoreMethod メソッドを呼び出すことで、そのサービスの名前を取得できます。

公式ドキュメント

VSS_RESTOREMETHOD_ENUM 列挙型は、ライターがバックアップ時に、自身が管理するすべてのコンポーネント内のすべてのファイルに使用される既定のファイル復元方法を、Writer Metadata Document を通じて指定するために使用します。

復元方法はライター全体に適用され、元の復元先 (original restore target) とも呼ばれます。これは VSS_RESTORE_TARGET の値 VSS_RT_ORIGINAL で示されます。

解説(Remarks)

ライターは、バックアップ中に IVssCreateWriterMetadata::SetRestoreMethod を呼び出して Writer Metadata Document に復元方法を設定し、メタデータ内で希望する復元方法を指定します。

リクエスターは、IVssExamineWriterMetadata::GetRestoreMethod を呼び出してライターが要求する復元方法を取得し、それに従って動作します。

復元方法は、対象のライターのすべてのコンポーネント内のすべてのファイルに適用されます。

ライターが IVssComponent::SetRestoreTargetVSS_RT_ORIGINAL 以外の VSS_RESTORE_TARGET 値を設定した場合、復元時にコンポーネント単位で復元方法が上書きされることがあります。

代替場所マッピングが定義されていない状態で復元方法が VSS_RME_RESTORE_TO_ALTERNATE_LOCATION になっている場合はライターのエラーであり、リクエスターはそれをエラーとして報告する必要があります。

復元方法が現在ディスク上にあるファイルの状態確認を必要とする場合 (VSS_RME_RESTORE_IF_NOT_THEREVSS_RME_RESTORE_IF_CAN_REPLACEVSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE) は、理想的には、実際に復元を進める前にファイル I/O 操作でコンポーネント全体を復元できることを確認します。

最も安全な方法は、復元の前に CreateFile ですべての対象ファイルを排他的に (共有なしで) 開くことです。

VSS_RME_RESTORE_IF_NOT_THERE の場合は、作成方法のフラグに CREATE_NEW も設定します。

オープン操作が成功すれば復元を進めることができ、CreateFile が返したハンドルを使用して、実際に復元データをディスクに書き込みます。

成功しなかった場合は、方法に応じてエラーを返すか、代替場所マッピングを確認して (利用可能であれば) それを使用するか、コンポーネントのファイルを次回の再起動時に復元するようステージングします。

この方法は、システムのオーバーヘッドのため、非常に大きなコンポーネント (数千個のファイルを持つ場合もあります) では問題になることがあります。

その場合、信頼性は劣りますが、次の方法も利用できます。

  1. 現在ディスク上にあり、復元の対象となるすべてのファイルを一時キャッシュにコピーします。
  2. 現在ディスク上にあるファイルを、バックアップ済みのファイル (ディスク上の 2 つ目の一時領域にある場合と、バックアップメディア上にある場合があります) で置き換えることを試みます。
  3. いずれかのファイルの復元に失敗した場合は、復元操作を終了し、元のファイルを一時的な場所から書き戻したうえで、代替場所マッピングまたは再起動時の復元の処理に進みます。
VSS でのバックアップおよび復元のファイルの場所の詳細については、Non-Default Backup And Restore Locations を参照してください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum VSS_RESTOREMETHOD_ENUM : int {
    VSS_RME_UNDEFINED = 0,
    VSS_RME_RESTORE_IF_NOT_THERE = 1,
    VSS_RME_RESTORE_IF_CAN_REPLACE = 2,
    VSS_RME_STOP_RESTORE_START = 3,
    VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4,
    VSS_RME_RESTORE_AT_REBOOT = 5,
    VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6,
    VSS_RME_CUSTOM = 7,
    VSS_RME_RESTORE_STOP_START = 8
} VSS_RESTOREMETHOD_ENUM;
public enum VSS_RESTOREMETHOD_ENUM : int
{
    VSS_RME_UNDEFINED = 0,
    VSS_RME_RESTORE_IF_NOT_THERE = 1,
    VSS_RME_RESTORE_IF_CAN_REPLACE = 2,
    VSS_RME_STOP_RESTORE_START = 3,
    VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4,
    VSS_RME_RESTORE_AT_REBOOT = 5,
    VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6,
    VSS_RME_CUSTOM = 7,
    VSS_RME_RESTORE_STOP_START = 8,
}
Public Enum VSS_RESTOREMETHOD_ENUM As Integer
    VSS_RME_UNDEFINED = 0
    VSS_RME_RESTORE_IF_NOT_THERE = 1
    VSS_RME_RESTORE_IF_CAN_REPLACE = 2
    VSS_RME_STOP_RESTORE_START = 3
    VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4
    VSS_RME_RESTORE_AT_REBOOT = 5
    VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6
    VSS_RME_CUSTOM = 7
    VSS_RME_RESTORE_STOP_START = 8
End Enum
import enum

class VSS_RESTOREMETHOD_ENUM(enum.IntEnum):
    VSS_RME_UNDEFINED = 0
    VSS_RME_RESTORE_IF_NOT_THERE = 1
    VSS_RME_RESTORE_IF_CAN_REPLACE = 2
    VSS_RME_STOP_RESTORE_START = 3
    VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4
    VSS_RME_RESTORE_AT_REBOOT = 5
    VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6
    VSS_RME_CUSTOM = 7
    VSS_RME_RESTORE_STOP_START = 8
// VSS_RESTOREMETHOD_ENUM
pub const VSS_RME_UNDEFINED: i32 = 0;
pub const VSS_RME_RESTORE_IF_NOT_THERE: i32 = 1;
pub const VSS_RME_RESTORE_IF_CAN_REPLACE: i32 = 2;
pub const VSS_RME_STOP_RESTORE_START: i32 = 3;
pub const VSS_RME_RESTORE_TO_ALTERNATE_LOCATION: i32 = 4;
pub const VSS_RME_RESTORE_AT_REBOOT: i32 = 5;
pub const VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE: i32 = 6;
pub const VSS_RME_CUSTOM: i32 = 7;
pub const VSS_RME_RESTORE_STOP_START: i32 = 8;
// VSS_RESTOREMETHOD_ENUM
const (
	VSS_RME_UNDEFINED int32 = 0
	VSS_RME_RESTORE_IF_NOT_THERE int32 = 1
	VSS_RME_RESTORE_IF_CAN_REPLACE int32 = 2
	VSS_RME_STOP_RESTORE_START int32 = 3
	VSS_RME_RESTORE_TO_ALTERNATE_LOCATION int32 = 4
	VSS_RME_RESTORE_AT_REBOOT int32 = 5
	VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE int32 = 6
	VSS_RME_CUSTOM int32 = 7
	VSS_RME_RESTORE_STOP_START int32 = 8
)
const
  VSS_RME_UNDEFINED = 0;
  VSS_RME_RESTORE_IF_NOT_THERE = 1;
  VSS_RME_RESTORE_IF_CAN_REPLACE = 2;
  VSS_RME_STOP_RESTORE_START = 3;
  VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4;
  VSS_RME_RESTORE_AT_REBOOT = 5;
  VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6;
  VSS_RME_CUSTOM = 7;
  VSS_RME_RESTORE_STOP_START = 8;
// VSS_RESTOREMETHOD_ENUM
pub const VSS_RME_UNDEFINED: i32 = 0;
pub const VSS_RME_RESTORE_IF_NOT_THERE: i32 = 1;
pub const VSS_RME_RESTORE_IF_CAN_REPLACE: i32 = 2;
pub const VSS_RME_STOP_RESTORE_START: i32 = 3;
pub const VSS_RME_RESTORE_TO_ALTERNATE_LOCATION: i32 = 4;
pub const VSS_RME_RESTORE_AT_REBOOT: i32 = 5;
pub const VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE: i32 = 6;
pub const VSS_RME_CUSTOM: i32 = 7;
pub const VSS_RME_RESTORE_STOP_START: i32 = 8;
const
  VSS_RME_UNDEFINED* = 0
  VSS_RME_RESTORE_IF_NOT_THERE* = 1
  VSS_RME_RESTORE_IF_CAN_REPLACE* = 2
  VSS_RME_STOP_RESTORE_START* = 3
  VSS_RME_RESTORE_TO_ALTERNATE_LOCATION* = 4
  VSS_RME_RESTORE_AT_REBOOT* = 5
  VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE* = 6
  VSS_RME_CUSTOM* = 7
  VSS_RME_RESTORE_STOP_START* = 8
enum VSS_RESTOREMETHOD_ENUM : int {
    VSS_RME_UNDEFINED = 0,
    VSS_RME_RESTORE_IF_NOT_THERE = 1,
    VSS_RME_RESTORE_IF_CAN_REPLACE = 2,
    VSS_RME_STOP_RESTORE_START = 3,
    VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4,
    VSS_RME_RESTORE_AT_REBOOT = 5,
    VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6,
    VSS_RME_CUSTOM = 7,
    VSS_RME_RESTORE_STOP_START = 8,
}
#define global VSS_RME_UNDEFINED                           0x0
#define global VSS_RME_RESTORE_IF_NOT_THERE                0x1
#define global VSS_RME_RESTORE_IF_CAN_REPLACE              0x2
#define global VSS_RME_STOP_RESTORE_START                  0x3
#define global VSS_RME_RESTORE_TO_ALTERNATE_LOCATION       0x4
#define global VSS_RME_RESTORE_AT_REBOOT                   0x5
#define global VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE 0x6
#define global VSS_RME_CUSTOM                              0x7
#define global VSS_RME_RESTORE_STOP_START                  0x8