MergeVirtualDisk, fonction (virtdisk.h)
Fusionne un disque dur virtuel enfant dans une chaîne de différenciation avec un ou plusieurs disques virtuels parents dans la chaîne.
Syntaxe
DWORD MergeVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] MERGE_VIRTUAL_DISK_FLAG Flags,
[in] PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped
);
Paramètres
[in] VirtualDiskHandle
Handle du disque virtuel ouvert, qui doit avoir été ouvert à l’aide de l’indicateur VIRTUAL_DISK_ACCESS_METAOPS . Pour plus d’informations sur l’ouverture d’un disque virtuel, consultez la fonction OpenVirtualDisk .
[in] Flags
Doit être la valeur MERGE_VIRTUAL_DISK_FLAG_NONE de l’énumération MERGE_VIRTUAL_DISK_FLAG .
[in] Parameters
Pointeur vers une structure de MERGE_VIRTUAL_DISK_PARAMETERS valide qui contient des données de paramètre de fusion.
[in, optional] Overlapped
Pointeur facultatif vers une structure OVERLAPPED valide si une opération asynchrone est souhaitée.
Valeur retournée
Statut de la demande.
Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.
Si la fonction échoue, la valeur de retour est un code d’erreur. Pour plus d’informations, consultez Codes d’erreur système.
Remarques
La fusion d’un disque nécessite que les disques affectés soient détachés pendant l’opération.
L’appelant doit avoir READ|Accès EN ÉCRITURE au magasin de stockage pour les disques affectés.
La valeur RWDepth du disque doit être supérieure à la profondeur de fusion spécifiée par le OPEN_VIRTUAL_DISK_PARAMETERS.
La fusion modifie le disque parent en cours de fusion. Par conséquent, tous les autres disques de différenciation dépendant de ce parent ne seront plus valides.
Le disque parent en cours de fusion est modifié pour représenter les mêmes données que celles contenues dans le disque de différenciation enfant sur lequel la fusion est effectuée.
Toutes les données préexistantes dans le disque parent en cours de fusion sont remplacées.
Si une opération de fusion est interrompue, le disque enfant est toujours utilisable. La fonction MergeVirtualDisk peut être réexécutée pour terminer la fusion.
La profondeur d’une demande de fusion correspond au nombre de fichiers image de disque dur virtuel parent dans la chaîne de différenciation à fusionner. Par exemple, si le membre MergeDepth a la valeur 1, les blocs de données du disque de différenciation spécifié sont déplacés vers son parent. Si le membre MergeDepth a une valeur de 2 et que le parent du disque de différenciation spécifié est également un disque de différenciation (ce qui signifie qu’il y a un troisième disque dans la chaîne), les blocs de données des premier et deuxième disques sont déplacés vers le troisième disque (les blocs du premier disque prenant la priorité sur les blocs du deuxième lors de la dernière opération).
Une fois l’opération terminée, les disques enfants affectés ne sont plus considérés comme valides, et toutes les opérations futures sur ceux-ci auront des résultats non pris en charge. Dans l’exemple précédent, une fois la fusion terminée, le troisième disque est valide et le premier et le second ne le sont pas. La fonction MergeVirtualDisk ne supprime pas les disques qui ne sont pas valides ou n’effectue pas de reconnexion automatique de relation de différenciation. Cette opération doit être effectuée explicitement par l’appelant.
Si une opération de fusion est effectuée sur un nœud non-feuille d’un disque de différenciation, il incombe à l’appelant de corriger les informations parentes pour les nœuds enfants du disque en cours de fusion.
Configuration requise
Client minimal pris en charge | Windows 7 |
Serveur minimal pris en charge | Windows Server 2008 R2 |
Plateforme cible | Windows |
En-tête | virtdisk.h |
Bibliothèque | VirtDisk.lib |
DLL | VirtDisk.dll |