共用方式為


MergeVirtualDisk 函式 (virtdisk.h)

在差異鏈結中,將子虛擬硬碟 (VHD) 與鏈結中的一或多個父虛擬磁片合併。

語法

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參數所參考子磁片的資料區塊,更新一或多個父磁片中的所有資料區塊。 這基本上是複製作業。

合併磁片需要在作業期間卸離受影響的磁片。

呼叫端必須具有 READ|受影響磁片備份存放區的寫入存取權。

磁片的 RWDepth 必須大於 OPEN_VIRTUAL_DISK_PARAMETERS指定的合併深度。

合併會修改要合併的父磁片,因此相依于該父系的任何其他差異磁片將不再有效。

合併至 的父磁片會變更為代表與執行合併所在子差異磁片中保留的資料相同。

系統會覆寫要合併到之父磁片中任何預先存在的資料。

如果合併作業中斷,子磁片仍可使用。 MergeVirtualDisk函式可以重新執行以完成合併。

合併要求的深度是要合併之差異鏈結中的父 VHD 映射檔數目。 例如,如果 MergeDepth 成員的值為 1,則來自指定差異磁片的資料區塊會移至其父系。 如果 MergeDepth 成員的值為 2,且指定的差異磁片父系也是差異磁片 (表示鏈結) 有第三個磁片,則第一個和第二個磁片的資料區塊都會移至第三個磁片 (,而第一個磁片的區塊會優先于最後一個作業期間的第二個磁片區塊) 。

完成時,受影響的子磁片不再被視為有效,而且它們上的任何未來作業都會有不支援的結果。 在上一個範例中,成功完成合併時,第三個磁片有效,第一個和第二個磁片則無效。 MergeVirtualDisk函式不會刪除任何不正確磁片,或執行任何自動差異關聯性重新連線。 呼叫端必須明確完成此動作。

如果在差異磁片的非分葉節點上執行合併作業,呼叫端必須負責修正所合併磁片子節點的父資訊。

規格需求

   
最低支援的用戶端 Windows 7
最低支援的伺服器 Windows Server 2008 R2
目標平台 Windows
標頭 virtdisk.h
程式庫 VirtDisk.lib
Dll VirtDisk.dll

另請參閱

關於 VHD

VHD 參考