Partager via


IVdsVolumeShrink ::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 le volume et tous les plexes et retourne les extensions publiées.

Syntaxe

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

Paramètres

[in] ullDesiredNumberOfReclaimableBytes

Nombre maximal d’octets par lesquels réduire la taille du volume. La valeur de ce paramètre doit être supérieure ou égale à la valeur du paramètre ullMinNumberOfReclaimableBytes . Si le nombre d’octets spécifié n’est pas un multiple de la taille du cluster du système de fichiers, la méthode Shrink arrondit cette valeur au multiple suivant de la taille du cluster du système de fichiers.

[in] ullMinNumberOfReclaimableBytes

Nombre minimal d’octets par lesquels réduire la taille du volume. Si la taille du volume ne peut pas être réduite d’au moins ce nombre d’octets, la méthode Shrink échoue. Si le nombre d’octets spécifié n’est pas un multiple de la taille du cluster du système de fichiers, la méthode Shrink arrondit cette valeur au multiple suivant de la taille du cluster du système de fichiers. Spécifiez zéro pour indiquer qu’aucun nombre minimal d’octets récupérables n’est requis pour que la méthode Shrink réussisse.

[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_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_INTERNAL_ERROR
0x80042448L
Une erreur interne s’est produite. Pour plus d’informations, consultez le journal des événements.
VDS_S_NO_NOTIFICATION
0x00042517L
Aucune notification d’arrivée de volume n’a été reçue. Vous devrez peut-être appeler IVdsService ::Refresh.
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.
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_VOLUME_NOT_HEALTHY
0x8004243EL
Le volume n’est pas sain.
VDS_E_VOLUME_SIMPLE_SPANNED
0x80042589L
L’opération n’est prise en charge que sur des volumes simples ou délimités.

Remarques

La méthode Shrink déplace les fichiers afin qu’ils soient aussi proches que possible du début du volume, afin de consolider l’espace libre à la fin du volume. (La quantité d’espace libre qui peut être consolidée à la fin du volume détermine la quantité de volume qui peut être réduite.) Il tronque ensuite le volume du système de fichiers, en réduisant sa taille, puis tronque la partition ou le volume dynamique.

Dans presque tous les cas, il y aura des dossiers qui sont immobiles (c’est-à-dire des dossiers qui ne peuvent pas être déplacés). Par exemple, les fichiers de métadonnées du système de fichiers et du pilote de stockage sont susceptibles d’être inamovibles. Pour cette raison, la quantité par laquelle un volume peut être réduit est généralement inférieure à la quantité totale d’espace libre sur le volume.

Le nombre et l’emplacement des fichiers immobiles peuvent varier d’un ordinateur à l’autre, même si les deux ordinateurs sont configurés de façon identique.

Il est possible qu’un dossier soit provisoirement immobile. Pour cette raison, une application peut être en mesure de récupérer de l’espace supplémentaire si elle appelle cette méthode une deuxième fois avec les mêmes paramètres.

Si les paramètres ullDesiredNumberOfReclaimableBytes et ullMinNumberOfReclaimableBytes sont tous les deux zéros, la méthode Shrink réduit le volume autant que possible.

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.

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.

Cette méthode est identique à la méthode IVdsVolume ::Shrink .

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

IVdsVolume ::Extend

IVdsVolumeShrink