Funzione MergeVirtualDisk (virtdisk.h)
Unisce un disco rigido virtuale figlio (VHD) in una catena di differenze con uno o più dischi virtuali padre nella catena.
Sintassi
DWORD MergeVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] MERGE_VIRTUAL_DISK_FLAG Flags,
[in] PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped
);
Parametri
[in] VirtualDiskHandle
Handle per il disco virtuale aperto, che deve essere stato aperto usando il flag di VIRTUAL_DISK_ACCESS_METAOPS . Per informazioni su come aprire un disco virtuale, vedere la funzione OpenVirtualDisk .
[in] Flags
Deve essere il valore MERGE_VIRTUAL_DISK_FLAG_NONE dell'enumerazione MERGE_VIRTUAL_DISK_FLAG .
[in] Parameters
Puntatore a una struttura di MERGE_VIRTUAL_DISK_PARAMETERS valida contenente i dati dei parametri di merge.
[in, optional] Overlapped
Puntatore facoltativo a una struttura OVERLAPPED valida se si desidera eseguire un'operazione asincrona .
Valore restituito
Stato della richiesta.
Se la funzione ha esito positivo, il valore restituito viene ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito è un codice di errore. Per altre informazioni, vedere Codici di errore di sistema.
Commenti
L'unione di un disco richiede che i dischi interessati vengano scollegati durante l'operazione.
Il chiamante deve avere READ|Accesso IN SCRITTURA all'archivio di backup per i dischi interessati.
Il RWDepth del disco deve essere maggiore della profondità di unione specificata dal OPEN_VIRTUAL_DISK_PARAMETERS.
L'unione modifica il disco padre in cui viene eseguito il merge, pertanto qualsiasi altro disco diverso dipendente da tale elemento padre non sarà più valido.
Il disco padre in cui viene eseguito il merge viene modificato in modo da rappresentare gli stessi dati contenuti nel disco figlio in cui viene eseguita l'unione.
Tutti i dati preesistenti nel disco padre in cui viene eseguito il merge vengono sovrascritti.
Se un'operazione di unione viene interrotta, il disco figlio è ancora utilizzabile. È possibile rieseguire la funzione MergeVirtualDisk per completare l'unione.
La profondità di una richiesta di merge è il numero di file di immagine del disco rigido virtuale padre nella catena di differenze da unire. Ad esempio, se il membro MergeDepth ha un valore pari a 1, i blocchi di dati del disco differenze specificato vengono spostati nel relativo elemento padre. Se il membro MergeDepth ha un valore pari a 2 e l'elemento padre del disco che differisce specificato è anche un disco diverso (vale a dire c'è un terzo disco nella catena), i blocchi di dati sia dal primo che dal secondo disco vengono spostati nel terzo disco (con blocchi dal primo disco che ha la precedenza sui blocchi rispetto al secondo durante l'operazione finale).
Al termine, i dischi figlio interessati non sono più considerati validi e tutte le operazioni future su di esse avranno risultati non supportati. Nell'esempio precedente, al completamento dell'unione, il terzo disco è valido e il primo e il secondo non sono. La funzione MergeVirtualDisk non eliminerà i dischi non validi né eseguirà alcuna riconnessione automatica delle relazioni di differenze. Questa operazione deve essere eseguita in modo esplicito dal chiamante.
Se un'operazione di merge viene eseguita su un nodo non sordo di un disco diverso, è responsabilità del chiamante correggere le informazioni padre per i nodi figlio del disco da unire.
Requisiti
Client minimo supportato | Windows 7 |
Server minimo supportato | Windows Server 2008 R2 |
Piattaforma di destinazione | Windows |
Intestazione | virtdisk.h |
Libreria | VirtDisk.lib |
DLL | VirtDisk.dll |