Méthode IVdsPack ::CreateVolume (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 le pack. Le pointeur d’interface pour le nouvel objet de volume peut être récupéré en appelant IVdsAsync ::Wait via le paramètre ppAsync . La structure VDS_ASYNC_OUTPUT retournée contient le pointeur d’interface d’objet volume dans le membre cv.pVolumeUnk .
Syntaxe
HRESULT CreateVolume(
[in] VDS_VOLUME_TYPE type,
[in] VDS_INPUT_DISK *pInputDiskArray,
[in] LONG lNumberOfDisks,
[in] ULONG ulStripeSize,
[out] IVdsAsync **ppAsync
);
Paramètres
[in] type
Type de volume énuméré par VDS_VOLUME_TYPE. Les volumes sur les disques de base ne peuvent avoir qu’une seule étendue, et seul l’indicateur VDS_VT_SIMPLE est valide.
[in] pInputDiskArray
Pointeur vers un tableau de structures VDS_INPUT_DISK ; une structure pour chaque disque. Un disque ne peut être inclus dans le tableau qu’une seule fois. Tous les disques du tableau doivent être utilisés, sinon la méthode échoue. Les appelants doivent allouer et initialiser le tableau, et libérer la mémoire lorsque l’appel est retourné.
[in] lNumberOfDisks
Nombre total de disques contribuant au volume.
[in] ulStripeSize
Si le volume est rayé, la taille de chaque bande en octets. Transmettez zéro octet pour VDS_VT_SIMPLE, VDS_VT_SPAN et VDS_VT_MIRROR ; 64 kilo-octets pour VDS_VT_STRIPE et VDS_VT_PARITY.
[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 le status de l’opération.
Si vous appelez IVdsAsync ::Wait sur cette méthode et qu’une valeur HRESULT de réussite 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 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 |
---|---|
|
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 de données de configuration de démarrage (BCD).
Windows Server 2003 : Les options de démarrage sont stockées dans le fichier boot.ini sur un système x86 ou x64 ou nvRAM sur un système Itanium. |
|
Les disques spécifiés n’appartiennent pas au même pack. |
|
Le service LDM a échoué une méthode. |
|
La taille d’extension passée 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 dvd. |
|
Cette opération n’est pas autorisée sur ce pack de disques. |
|
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 la bande en octets doit être une puissance 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’y a aucun média dans un lecteur amovible transmis via le tableau de disques. |
|
L’espace est insuffisant sur l’un des disques. |
|
Le type de volume n’est pas pris en charge ou un volume existe déjà sur le disque amovible passé dans la méthode . Un disque amovible ne peut avoir qu’un seul volume. |
|
Au moins l’un des disques passés est introuvable. |
|
Un seul disque ne peut pas contribuer à plusieurs membres ou plusieurs plexes du même volume. |
|
Le pack cible est inaccessible. |
|
Le nombre maximal de partitions (partitions principales ou partitions primaires avec une partition étendue) existe déjà lorsque l’appelant tente de créer une partition principale ou une partition étendue supplémentaire. |
|
Le cache du fournisseur dynamique est endommagé. |
|
Pas plus de 32 disques sont autorisés par volume. |
|
La taille du volume est trop petite. |
Remarques
Les disques de base ne peuvent contenir que des volumes simples. Les disques dynamiques peuvent contenir des volumes de tous types tant que le système d’exploitation prend en charge l’opération de liaison ; Les plateformes non serveur ne prennent pas en charge les opérations de liaison à tolérance de panne. Tous les volumes nouvellement créés ne disposent pas d’une lettre de lecteur.
Sur un disque de base, cette méthode crée une partition principale. S’il existe déjà trois partitions principales sur le disque, il crée une partition étendue pour couvrir la plus grande étendue d’espace disque disponible contiguë restant sur le disque, puis crée un lecteur logique dans la partition étendue.
Un disque ne peut pas contribuer à plusieurs plex du même volume ; Toutefois, un seul disque peut contribuer à plusieurs volumes. Un volume simple n’a qu’une seule structure VDS_INPUT_DISK , tandis que les volumes répartis, entrelacés, mis en miroir et RAID-5 ont une structure pour chaque disque contributeur.
La taille du disque spécifiée dans la structure VDS_INPUT_DISK peut être le disque complet ou une partie du disque. Lorsque deux disques forment un volume mis en miroir, VDS utilise le plus petit disque pour calculer la taille de la miroir. (La stratégie du fournisseur détermine le décalage, la longueur et le nombre réels d’extensions de disque allouées sur un disque d’entrée donné.) Utilisez la méthode IVdsPack ::QueryVolumes pour déterminer la taille exacte du volume créé.
Pour créer un volume logique avec un paramètre d’alignement facultatif, utilisez la méthode IVdsPack2 ::CreateVolume2 ou utilisez la clé de RegistreHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment pour spécifier la valeur d’alignement en octets.
Windows 7, Windows Server 2008 R2, Windows Vista et Windows Server 2008 : Sur un disque de base, la méthode CreateVolume ignore 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.
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
Condition requise | Valeur |
---|---|
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 |