MergeVirtualDisk 関数 (virtdisk.h)

差分チェーン内の子仮想ハード ディスク (VHD) を、チェーン内の 1 つ以上の親仮想ディスクとマージします。

構文

DWORD MergeVirtualDisk(
  [in]           HANDLE                         VirtualDiskHandle,
  [in]           MERGE_VIRTUAL_DISK_FLAG        Flags,
  [in]           PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                   Overlapped
);

パラメーター

[in] VirtualDiskHandle

開いている仮想ディスクへのハンドル。 VIRTUAL_DISK_ACCESS_METAOPS フラグを使用して開かれている必要があります。 仮想ディスクを開く方法については、 OpenVirtualDisk 関数を参照してください。

[in] Flags

MERGE_VIRTUAL_DISK_FLAG列挙のMERGE_VIRTUAL_DISK_FLAG_NONE値である必要があります。

[in] Parameters

マージ パラメーター データを含む有効な MERGE_VIRTUAL_DISK_PARAMETERS 構造体へのポインター。

[in, optional] Overlapped

非同期操作が必要な場合は、有効な OVERLAPPED 構造体への省略可能なポインター。

戻り値

要求の状態。

関数が成功した場合、戻り値は ERROR_SUCCESS

関数が失敗した場合、戻り値はエラー コードです。 詳細については、「 システム エラー コード」を参照してください。

解説

メモ このセクションの用語 ディスク のすべての出現箇所は、仮想ディスクを参照します。 "バッキング ストア" という用語は、VHD イメージ ファイルまたはファイルが存在する物理ディスク ストレージを指します。
 
MergeVirtualDisk 関数は、VirtualDiskHandle パラメーターによって参照される子ディスクからのデータ ブロックを使用して、1 つ以上の親ディスク内のすべてのデータ ブロックを更新します。 これは基本的にコピー操作です。

ディスクをマージするには、操作中に影響を受けるディスクをデタッチする必要があります。

呼び出し元には READ| が必要です。影響を受けるディスクのバッキング ストアへの書き込みアクセス。

ディスクの RWDepth は、 OPEN_VIRTUAL_DISK_PARAMETERSで指定されたマージ深度を超える必要があります。

マージにより、マージ先の親ディスクが変更されるため、その親に依存する他の差分ディスクは無効になります。

マージ対象の親ディスクは、マージが実行される子差分ディスクに保持されていたのと同じデータを表すように変更されます。

マージ先の親ディスク内の既存のデータはすべて上書きされます。

マージ操作が中断された場合でも、子ディスクは引き続き使用できます。 MergeVirtualDisk 関数を再実行してマージを完了できます。

マージ要求の深さは、マージする差分チェーン内の親 VHD イメージ ファイルの数です。 たとえば、 MergeDepth メンバーの値が 1 の場合、指定した差分ディスクのデータ ブロックは親に移動されます。 MergeDepth メンバーの値が 2 で、指定された差分ディスクの親が差分ディスクでもある場合 (つまり、チェーンに 3 番目のディスクがある場合)、最初のディスクと 2 番目のディスクの両方のデータ ブロックが 3 番目のディスクに移動されます (最後の操作の間、最初のディスクからのブロックが 2 番目のディスクのブロックよりも優先されます)。

完了すると、影響を受ける子ディスクは有効とは見なされなくなり、それらに対する今後の操作ではサポートされない結果になります。 前の例では、マージが正常に完了すると、3 番目のディスクは有効であり、1 番目と 2 番目のディスクは有効ではありません。 MergeVirtualDisk 関数は、無効なディスクを削除したり、差分リレーションシップの自動再接続を実行したりすることはありません。 これは、呼び出し元が明示的に行う必要があります。

差分ディスクの非リーフ ノードに対してマージ操作が実行される場合、マージされるディスクの子ノードの親情報を修正するのは呼び出し元の責任です。

要件

   
サポートされている最小のクライアント Windows 7
サポートされている最小のサーバー Windows Server 2008 R2
対象プラットフォーム Windows
ヘッダー virtdisk.h
Library VirtDisk.lib
[DLL] VirtDisk.dll

関連項目

VHD について

VHD リファレンス