Freigeben über


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

Hinweis Alle Vorkommen des Begriffs Datenträger in diesem Abschnitt beziehen sich auf virtuelle Datenträger. Der Begriff Sicherungsspeicher bezieht sich auf den physischen Datenträgerspeicher, in dem sich die VHD-Imagedatei oder -Dateien befinden.
 
Die MergeVirtualDisk-Funktion aktualisiert alle Datenblöcke auf einem oder mehreren übergeordneten Datenträgern mit den Datenblöcken des untergeordneten Datenträgers, auf den der VirtualDiskHandle-Parameter verweist. Dies ist im Wesentlichen ein Kopiervorgang.

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

Weitere Informationen

Informationen zu VHD

VHD-Referenz