Partager via


Méthode IVdsPack2 ::CreateVolume2 (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.]

Crée un volume dans un pack de disques avec un paramètre d’alignement facultatif.

Syntaxe

HRESULT CreateVolume2(
  [in]  VDS_VOLUME_TYPE type,
  [in]  VDS_INPUT_DISK  *pInputDiskArray,
  [in]  LONG            lNumberOfDisks,
  [in]  ULONG           ulStripeSize,
  [in]  ULONG           ulAlign,
  [out] IVdsAsync       **ppAsync
);

Paramètres

[in] type

Valeur de l’énumération VDS_VOLUME_TYPE qui indique le type de volume à créer.

[in] pInputDiskArray

Tableau de structures VDS_INPUT_DISK qui indiquent les disques sur lesquels créer le volume.

Note La taille de ce tableau doit être inférieure ou inférieure à 32 objets, car Windows impose une limite où pas plus de 32 disques peuvent être utilisés avec un seul volume.
 

[in] lNumberOfDisks

Nombre d’éléments dans le tableau pointé vers le paramètre pInputDiskArray .

[in] ulStripeSize

Taille de la bande, en octets, du nouveau volume.

Note La taille de la bande doit être 65536 si le type est VDS_VT_STRIPE ou VDS_VT_PARITY ; dans le cas contraire, la taille de la bande DOIT être 0.
 

[in] ulAlign

Nombre d’octets pour l’alignement du volume. Ce paramètre est facultatif et peut être égal à zéro. Si zéro est spécifié, le serveur détermine la valeur d’alignement en fonction de la taille du disque sur lequel le volume est créé.

Windows 7, Windows Server 2008 R2, Windows Vista et Windows Server 2008 : Sur un disque de base, la méthode CreateVolume2 ignore ce paramètre et la clé de RegistreHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment . Il s’agit d’un problème connu qui est en cours de résolution. Pour contourner ce problème, utilisez la méthode IVdsAdvancedDisk ::CreatePartition ou IVdsCreatePartitionEx ::CreatePartitionEx pour créer des partitions sur le disque de base afin qu’elles soient correctement alignées. Les partitions et volumes dynamiques sont alignés à l’aide des valeurs sous la clé de Registre suivante :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

L’alignement par défaut est de 1 Mo si le disque est de 4 Go ou plus, ou de 64 Ko si le disque est inférieur à 4 Go.

[out] ppAsync

Pointeur vers une interface IVdsAsync qui, une fois terminée, reçoit l’interface IVdsAsync pour surveiller et contrôler cette opération. Les appelants doivent libérer l’interface reçue lorsqu’ils en ont terminé. Si la méthode IVdsAsync ::Wait est appelée sur l’interface 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 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
Le volume a été créé avec succès.
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_S_UPDATE_BOOTFILE_FAILED
0x00042434L
Le volume est créé correctement, mais VDS n’a pas pu mettre à jour les options de démarrage dans le magasin bcD (Boot Configuration Data).
VDS_E_ALIGN_IS_ZERO
0x80042590L
L’alignement spécifié est égal à zéro.
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
0x8004258FL
L’alignement spécifié n’est pas une puissance de deux.
VDS_E_DISK_NOT_FOUND_IN_PACK
0x8004252DL
Les disques spécifiés n’appartiennent pas au même pack.
VDS_E_DMADMIN_METHOD_CALL_FAILED
0x80042420L
Le service LDM a échoué.
VDS_E_EXTENT_SIZE_LESS_THAN_MIN
0x80042433L
La taille d’étendue transmise est trop petite.
VDS_E_INVALID_DISK_COUNT
0x80042526L
Le nombre de disques spécifié n’est pas valide pour cette opération.
VDS_E_INVALID_MEMBER_COUNT
0x80042522L
Le nombre de membres pour le volume doit être supérieur à zéro.
VDS_E_INVALID_MEMBER_ORDER
0x80042524L
Les index membres doivent augmenter de façon monotone et commencer par zéro.
VDS_E_INVALID_OPERATION
0x80042415L
Le disque transmis est un cd-rom ou un périphérique DVD.
VDS_E_INVALID_PACK
0x8004251AL
Cette opération n’est pas autorisée sur ce pack de disque.
VDS_E_INVALID_PLEX_COUNT
0x80042521L
Le nombre de plex pour le volume doit être supérieur à zéro.
VDS_E_INVALID_PLEX_ORDER
0x80042523L
Les index plex doivent augmenter de façon monotone et commencer par zéro.
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
La taille de bande en octets doit être de 2 pour les types de volumes à bandes et RAID-5, et doit être égale à zéro pour tous les autres types de volumes.
VDS_E_MISSING_DISK
0x80042454L
Le disque spécifié est manquant.
VDS_E_NO_MEDIA
0x80042412L
Il n’existe aucun média dans un lecteur amovible transmis via le tableau de disques.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Il n’y a pas assez d’espace sur l’un des disques.
VDS_E_NOT_SUPPORTED
0x80042400L
Le type de volume n’est pas pris en charge.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
Au moins l’un des disques passés est introuvable.
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
Un seul disque ne peut pas contribuer à plusieurs membres ou plusieurs plex du même volume.
VDS_E_PACK_OFFLINE
0x80042444L
Le pack cible est inaccessible.
VDS_E_PARTITION_LIMIT_REACHED
0x80042407L
Le nombre maximal de partitions (partitions primaires ou partitions primaires avec une partition étendue) existe déjà lorsque l’appelant tente de créer une partition principale supplémentaire ou une partition étendue.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Le cache du fournisseur dynamique est endommagé.
VDS_E_VOLUME_DISK_COUNT_MAX_EXCEEDED
0x80042529L
Pas plus de 32 disques sont autorisés par volume.
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
La taille du volume est trop petite.

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

IVdsPack2

IVdsPack ::CreateVolume