MergeVirtualDisk-Funktion (virtdisk.h)
Führt eine untergeordnete virtuelle Festplatte (VHD) in einer differenzierenden Kette mit einem oder mehreren übergeordneten virtuellen Datenträgern in der Kette zusammen.
Syntax
DWORD MergeVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] MERGE_VIRTUAL_DISK_FLAG Flags,
[in] PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped
);
Parameter
[in] VirtualDiskHandle
Ein Handle für den geöffneten virtuellen Datenträger, der mit dem VIRTUAL_DISK_ACCESS_METAOPS-Flag geöffnet worden sein muss. Informationen zum Öffnen eines virtuellen Datenträgers finden Sie in der OpenVirtualDisk-Funktion .
[in] Flags
Muss der MERGE_VIRTUAL_DISK_FLAG_NONE Wert der MERGE_VIRTUAL_DISK_FLAG-Enumeration sein.
[in] Parameters
Ein Zeiger auf eine gültige MERGE_VIRTUAL_DISK_PARAMETERS-Struktur , die Mergeparameterdaten enthält.
[in, optional] Overlapped
Ein optionaler Zeiger auf eine gültige OVERLAPPED-Struktur , wenn ein asynchroner Vorgang gewünscht ist.
Rückgabewert
Status der Anforderung.
Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.
Wenn die Funktion fehlschlägt, ist der Rückgabewert ein Fehlercode. Weitere Informationen finden Sie unter Systemfehlercodes.
Hinweise
Das Zusammenführen eines Datenträgers erfordert, dass die betroffenen Datenträger während des Vorgangs getrennt werden.
Der Aufrufer muss über READ|SCHREIBzugriff auf den Sicherungsspeicher für die betroffenen Datenträger.
Die RWDepth des Datenträgers muss größer als die mergetiefe sein, die vom OPEN_VIRTUAL_DISK_PARAMETERS angegeben wird.
Merge ändert den übergeordneten Datenträger, in den zusammengeführt wird, daher sind alle anderen differenzierenden Datenträger, die von diesem übergeordneten Element abhängig sind, nicht mehr gültig.
Der übergeordnete Datenträger, der in zusammengeführt wird, wird so geändert, dass er dieselben Daten darstellt, die auf dem untergeordneten Differenzdatenträger gespeichert wurden, auf dem die Zusammenführung durchgeführt wird.
Alle bereits vorhandenen Daten auf dem übergeordneten Datenträger, mit dem zusammengeführt wird, werden überschrieben.
Wenn ein Mergevorgang unterbrochen wird, ist der untergeordnete Datenträger weiterhin verwendbar. Die MergeVirtualDisk-Funktion kann erneut ausgeführt werden, um den Merge abzuschließen.
Die Tiefe einer Mergeanforderung ist die Anzahl der übergeordneten VHD-Bilddateien in der Differenzierungskette, die zusammengeführt werden sollen. Wenn das MergeDepth-Element beispielsweise den Wert 1 aufweist, werden die Datenblöcke des angegebenen differenzierenden Datenträgers in sein übergeordnetes Element verschoben. Wenn das MergeDepth-Element den Wert 2 aufweist und der angegebene übergeordnete Datenträger auch ein differenzierender Datenträger ist (d. h. es gibt einen dritten Datenträger in der Kette), werden die Datenblöcke sowohl vom ersten als auch vom zweiten Datenträger auf den dritten Datenträger verschoben (wobei Blöcke vom ersten Datenträger während des letzten Vorgangs Vorrang vor Blöcken aus dem zweiten haben).
Nach Abschluss werden die betroffenen untergeordneten Datenträger nicht mehr als gültig betrachtet, und alle zukünftigen Vorgänge auf ihnen werden nicht unterstützte Ergebnisse aufweisen. Im vorherigen Beispiel ist nach erfolgreichem Abschluss der Zusammenführung der dritte Datenträger gültig, und der erste und der zweite Datenträger nicht. Die MergeVirtualDisk-Funktion löscht keine datenträger, die ungültig sind, und führt keine automatischen unterschiedliche Beziehungsverbindungen aus. Dies muss explizit vom Aufrufer erfolgen.
Wenn ein Zusammenführungsvorgang auf einem nicht verleerten Knoten eines differenzierenden Datenträgers ausgeführt wird, liegt es in der Verantwortung des Aufrufers, die übergeordneten Informationen für die untergeordneten Knoten des datenträgers zu korrigieren, der zusammengeführt wird.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 7 |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 |
Zielplattform | Windows |
Kopfzeile | virtdisk.h |
Bibliothek | VirtDisk.lib |
DLL | VirtDisk.dll |