Fonction CompactVirtualDisk (virtdisk.h)
Réduit la taille d’un fichier de stockage de stockage de disque dur virtuel (VHD).
Syntaxe
DWORD CompactVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] COMPACT_VIRTUAL_DISK_FLAG Flags,
[in, optional] PCOMPACT_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 dans le paramètre VirtualDiskAccessMask passé à OpenVirtualDisk. Pour plus d’informations sur l’ouverture d’un disque virtuel, consultez la fonction OpenVirtualDisk .
[in] Flags
Doit être la valeur COMPACT_VIRTUAL_DISK_FLAG_NONE (0) de l’énumération COMPACT_VIRTUAL_DISK_FLAG .
[in, optional] Parameters
Pointeur facultatif vers une structure COMPACT_VIRTUAL_DISK_PARAMETERS valide qui contient des données de paramètres de compactage.
[in, optional] Overlapped
Pointeur facultatif vers une structure CHEVAUCHEMENT 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
Le compactage ne peut être exécuté que sur un disque virtuel pouvant être développé dynamiquement ou différent.
Il existe deux types de compactage différents.
- Le premier type, le compactage prenant en charge le système de fichiers, utilise le système de fichiers NTFS pour déterminer l’espace libre. Pour ce faire, attachez le disque dur virtuel en tant qu’appareil en lecture seule en incluant les indicateurs VIRTUAL_DISK_ACCESS_METAOPS et VIRTUAL_DISK_ACCESS_ATTACH_RO dans le paramètre VirtualDiskAccessMask passé à OpenVirtualDisk, en attachant le disque dur virtuel en appelant AttachVirtualDisk et pendant que le disque dur virtuel est attaché en appelant CompactVirtualDisk. Le détachement du disque dur virtuel avant l’exécution du compactage peut entraîner un échec de compactage avant qu’il ne soit terminé (similaire à l’annulation du compactage).
- Le deuxième type, le compactage indépendant du système de fichiers, n’implique pas le système de fichiers, mais recherche uniquement les blocs de disque dur virtuel entièrement remplis de zéros (0). Pour ce faire, incluez l’indicateur VIRTUAL_DISK_ACCESS_METAOPS dans le paramètre VirtualDiskAccessMask passé à OpenVirtualDisk et appelez CompactVirtualDisk.
Une opération de compactage sur un disque virtuel peut être interrompue en toute sécurité et réexécuter ultérieurement. La réouverture d’un fichier de disque virtuel qui a été interrompu peut entraîner la réduction de la taille d’un fichier de disque virtuel au moment de l’ouverture.
Le compactage peut nécessiter beaucoup d’UC et/ou d’E/S, selon la taille du disque virtuel et le nombre de blocs nécessitant un déplacement.
La fonction CompactVirtualDisk s’exécute sur le disque virtuel dans le même contexte de sécurité que l’appelant.
Configuration requise
Condition requise | Valeur |
---|---|
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 |