IVdsVolume ::Shrink, méthode (vds.h)

[À compter de Windows 8 et Windows Server 2012, l’interface COM du service de disque virtuel est remplacée par l’API gestion du stockage Windows.]

Réduit la taille du volume et de tous les plex, et retourne les étendues libérées à l’espace libre.

Syntaxe

HRESULT Shrink(
  [in]  ULONGLONG ullNumberOfBytesToRemove,
  [out] IVdsAsync **ppAsync
);

Paramètres

[in] ullNumberOfBytesToRemove

Taille de la réduction en octets.

[out] ppAsync

Adresse d’un pointeur d’interface IVdsAsync . VDS initialise l’interface au retour. Les appelants doivent libérer l’interface. Utilisez cette interface pour annuler, attendre ou interroger le status de l’opération. Si IVdsAsync ::Wait est appelé et qu’une valeur HRESULT de réussite est retournée, les interfaces retournées dans la structure VDS_ASYNC_OUTPUT doivent être libérées en appelant la méthode IUnknown ::Release sur chaque pointeur d’interface. Toutefois, si Wait renvoie une valeur HRESULT d’échec, ou si le paramètre pHrResult de Wait reçoit une valeur HRESULT d’échec, les pointeurs d’interface dans la structure VDS_ASYNC_OUTPUT sont NULL et n’ont pas besoin d’être libérés. Vous pouvez tester les valeurs HRESULT de réussite ou d’échec à l’aide des macros SUCCEEDED et FAILED définies dans Winerror.h.

Valeur retournée

Cette méthode peut retourner des valeurs HRESULT standard, telles que E_INVALIDARG ou E_OUTOFMEMORY, et des valeurs de retour spécifiques à VDS. Il peut également retourner des codes d’erreur système convertis à l’aide de la macro HRESULT_FROM_WIN32 . Les erreurs peuvent provenir de VDS lui-même ou du fournisseur VDS sous-jacent utilisé. Les valeurs de retour possibles sont les suivantes.

Code/valeur de retour Description
S_OK
La commande s'est correctement terminée.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Le cache du fournisseur est endommagé. Cela indique un problème logiciel ou de communication à l’intérieur d’un fournisseur qui met en cache des informations sur les appareils attachés. L’appelant peut utiliser la méthode IVdsHwProvider ::Reenumerate suivie de la méthode IVdsHwProvider ::Refresh pour restaurer le cache.
VDS_E_CANNOT_SHRINK
0x8004251EL
Le volume ne peut pas être réduit, car le système de fichiers ne le prend pas en charge.
VDS_E_DISK_REMOVEABLE
0x8004255AL
L’opération n’est pas prise en charge sur un support amovible.
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
La taille de réduction spécifiée est inférieure à la taille de réduction minimale autorisée.
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
La taille de réduction spécifiée est trop grande et le volume est inférieur à la taille de volume minimale.

Remarques

Cette méthode est un wrapper pour la méthode IVdsVolumeShrink ::Shrink . Si vous appelez IVdsVolume ::Shrink, la valeur du paramètre uNumberOfBytesToRemove est utilisée pour les paramètres ullDesiredNumberOfReclaimableBytes et ullMinNumberOfReclaimableBytes de IVdsVolumeShrink ::Shrink.

Les opérations de réduction et d’extension sont prises en charge uniquement sur les volumes NTFS et RAW.

Utilisez cette méthode pour réduire le système de fichiers et le volume. Si VDS ne parvient pas à réduire le volume, il arrête l’opération sans réduire le système de fichiers.

Une seule opération de réduction ou de défragmentation peut être effectuée à la fois sur chaque volume. Windows Server 2008 et Windows Vista : Une seule opération de réduction ou de défragmentation peut être effectuée à la fois sur un ordinateur.

Si uNumberOfBytesToRemove est égal à zéro, la méthode échoue. Sinon, VDS arrondit uNumberOfBytesToRemove à un multiple de la taille du cluster de système de fichiers.

Les implémenteurs doivent retourner un pointeur vers l’interface IVdsAsync pour cette méthode, même si l’appel ne lance pas d’opération asynchrone.

Vous pouvez utiliser la méthode IVdsVolumeShrink ::QueryMaxReclaimableBytes pour estimer le nombre d’octets à récupérer par l’opération de réduction. Toutefois, QueryMaxReclaimableBytes peut retourner plus d’octets que ce qui est réellement disponible.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête vds.h
Bibliothèque Uuid.lib

Voir aussi

IVdsAsync

IVdsVolume

IVdsVolume ::Extend