Partager via


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

Note Toutes les occurrences du terme disque dans cette section font référence à des disques virtuels. Le terme magasin de stockage fait référence au stockage sur disque physique où résident le ou les fichiers image du disque dur virtuel.
 
La fonction MergeVirtualDisk met à jour tous les blocs de données d’un ou de plusieurs disques parents avec les blocs de données du disque enfant auquel fait référence le paramètre VirtualDiskHandle . Il s’agit essentiellement d’une opération de copie.

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

Voir aussi

À propos du disque dur virtuel

Référence du disque dur virtuel