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。
如果函式失敗,傳回值就是錯誤碼。 如需詳細資訊,請參閱 系統錯誤碼。
備註
合併磁片需要在作業期間卸離受影響的磁片。
呼叫端必須具有 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 |