Partager via


IVdsVolume::Extend, 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.]

Étend la taille du volume actuel en ajoutant des étendues de disque à chaque membre de chaque plex.

Syntaxe

HRESULT Extend(
  [in]  VDS_INPUT_DISK *pInputDiskArray,
  [in]  LONG           lNumberOfDisks,
  [out] IVdsAsync      **ppAsync
);

Paramètres

[in] pInputDiskArray

Pointeur vers un tableau de structures VDS_INPUT_DISK ; une structure pour chaque disque.

Note Les appelants ne doivent pas utiliser d’index membre par défaut conjointement avec la méthode Extend , sauf si le volume n’a qu’un seul plex avec un seul membre.
 

[in] lNumberOfDisks

Nombre total de disques dans le volume. Les appelants peuvent passer zéro lorsque les plex de volume contiennent suffisamment d’espace pour étendre le volume ; pInputDiskArray doit avoir la valeur NULL.

[out] ppAsync

Adresse d’un pointeur d’interface IVdsAsync , que VDS initialise au retour. Les appelants doivent libérer l’interface. Utilisez ce pointeur pour annuler, attendre ou interroger l’état de l’opération. Si vous appelez la méthode IVdsAsync::Wait sur cette interface et qu’une valeur HRESULT réussie est retournée, vous devez libérer les interfaces retournées dans la structure VDS_ASYNC_OUTPUT en appelant la méthode IUnknown::Release sur chaque pointeur d’interface. Toutefois, si Wait retourne 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 la réussite ou l’échec des valeurs HRESULT à 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 méthode a été en concurrence avec succès.
VDS_E_CANNOT_EXTEND
0x8004240EL
Impossible d’étendre le volume, car le système de fichiers sur le volume ne prend pas en charge l’opération.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Il n’y a pas assez d’espace pour étendre le volume.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
Le volume n’est pas sain.

Remarques

Cette méthode étend un volume simple sur le même disque ou crée un volume étendu en étendant le volume à plusieurs disques. Les appelants peuvent étendre un volume sur un disque de base, mais l’étendue du disque doit être contiguë au volume.

VDS étend automatiquement le système de fichiers pour s’adapter à la taille de volume étendue. Le système de fichiers doit prendre en charge cette opération. VDS étend le système de fichiers, mais pas le volume, si un appelant ne parvient pas à spécifier les étendues à utiliser.

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

VDS applique les règles suivantes lors de l’extension d’un volume :

  • Pour les types plex simples et étendus, VDS étend le seul membre du plex avec toute étendue de disque qui ne contribue pas déjà à un autre plex, que l’étendue se trouve sur le même disque ou non. VDS utilise des étendues de disque dans l’ordre donné par l’appelant, en ignorant l’index membre de l’étendue. Sauf sur un disque de base, VDS peut étendre le seul membre d’un plex avec n’importe quelle étendue de disque sur le même disque ou sur un autre disque.
  • Pour les types plex à bandes et à bandes avec parité, VDS affecte une étendue au membre du plex comme suit :
    • L’étendue va à l’index membre spécifié par l’appelant.
    • L’étendue va à l’index membre qui occupe le même disque lorsque l’appelant ne parvient pas à spécifier un ID de membre.
    VDS n’affecte jamais d’étendue à plusieurs membres sur le même disque. L’appelant doit spécifier un membre pour toutes les étendues ou aucune ; l’appelant ne peut pas spécifier de membre pour certaines étendues et pas pour d’autres.
Lorsque l’appelant transmet null pour pInputDiskArray et zéro pour lNumberOfDisks, VDS retourne S_FALSE dans l’objet asynchrone et S_OK pour la méthode. Dans ce cas, S_OK indique que VDS a démarré l’opération, mais que l’opération est synchrone.

Les implémenteurs doivent retourner un pointeur vers l’interface IVdsAsync pour cette méthode, que l’appel lance ou non une opération asynchrone.

Configuration requise

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

Voir aussi

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK