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.
[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.
[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 |
---|---|
|
Le volume a été créé avec succès. |
|
Aucune notification d’arrivée de volume n’a été reçue. Vous devrez peut-être appeler IVdsService ::Refresh. |
|
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). |
|
L’alignement spécifié est égal à zéro. |
|
L’alignement spécifié n’est pas une puissance de deux. |
|
Les disques spécifiés n’appartiennent pas au même pack. |
|
Le service LDM a échoué. |
|
La taille d’étendue transmise est trop petite. |
|
Le nombre de disques spécifié n’est pas valide pour cette opération. |
|
Le nombre de membres pour le volume doit être supérieur à zéro. |
|
Les index membres doivent augmenter de façon monotone et commencer par zéro. |
|
Le disque transmis est un cd-rom ou un périphérique DVD. |
|
Cette opération n’est pas autorisée sur ce pack de disque. |
|
Le nombre de plex pour le volume doit être supérieur à zéro. |
|
Les index plex doivent augmenter de façon monotone et commencer par zéro. |
|
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. |
|
Le disque spécifié est manquant. |
|
Il n’existe aucun média dans un lecteur amovible transmis via le tableau de disques. |
|
Il n’y a pas assez d’espace sur l’un des disques. |
|
Le type de volume n’est pas pris en charge. |
|
Au moins l’un des disques passés est introuvable. |
|
Un seul disque ne peut pas contribuer à plusieurs membres ou plusieurs plex du même volume. |
|
Le pack cible est inaccessible. |
|
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. |
|
Le cache du fournisseur dynamique est endommagé. |
|
Pas plus de 32 disques sont autorisés par volume. |
|
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 |