Partager via


CreateVirtualDisk, fonction (virtdisk.h)

Crée un fichier image de disque dur virtuel (VHD), soit à l’aide des paramètres par défaut, soit à l’aide d’un disque virtuel ou d’un disque physique existant.

Syntaxe

DWORD CreateVirtualDisk(
  [in]           PVIRTUAL_STORAGE_TYPE           VirtualStorageType,
  [in]           PCWSTR                          Path,
  [in]           VIRTUAL_DISK_ACCESS_MASK        VirtualDiskAccessMask,
  [in, optional] PSECURITY_DESCRIPTOR            SecurityDescriptor,
  [in]           CREATE_VIRTUAL_DISK_FLAG        Flags,
  [in]           ULONG                           ProviderSpecificFlags,
  [in]           PCREATE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                    Overlapped,
  [out]          PHANDLE                         Handle
);

Paramètres

[in] VirtualStorageType

Pointeur vers une structure de VIRTUAL_STORAGE_TYPE qui contient le type de disque souhaité et les informations de fournisseur.

[in] Path

Pointeur vers une chaîne valide qui représente le chemin d’accès au nouveau fichier d’image de disque virtuel.

[in] VirtualDiskAccessMask

Valeur VIRTUAL_DISK_ACCESS_MASK à utiliser lors de l’ouverture du fichier de disque virtuel nouvellement créé. Si le membre Version du paramètre Parameters est défini sur CREATE_VIRTUAL_DISK_VERSION_2 seule la valeur VIRTUAL_DISK_ACCESS_NONE (0) peut être spécifiée.

[in, optional] SecurityDescriptor

Pointeur facultatif vers un SECURITY_DESCRIPTOR à appliquer au fichier image de disque virtuel. Si ce paramètre a la valeur NULL, le descripteur de sécurité du répertoire parent est utilisé.

[in] Flags

Indicateurs de création, qui doivent être une combinaison valide de l’énumération CREATE_VIRTUAL_DISK_FLAG .

[in] ProviderSpecificFlags

Indicateurs spécifiques au type de disque virtuel en cours de création. Peut être égal à zéro si aucun n’est requis.

[in] Parameters

Pointeur vers une structure CREATE_VIRTUAL_DISK_PARAMETERS valide qui contient des données de paramètre de création.

[in, optional] Overlapped

Pointeur facultatif vers une structure CHEVAUCHEMENT VALIDE si une opération asynchrone est souhaitée.

[out] Handle

Pointeur vers l’objet handle qui représente le disque virtuel nouvellement créé.

Valeur retournée

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS et le paramètre Handle contient un pointeur valide vers le nouvel objet de disque virtuel.

Si la fonction échoue, la valeur de retour est un code d’erreur et la valeur du paramètre Handle n’est pas définie. Pour plus d’informations, consultez Codes d’erreur système.

Remarques

Si la fonction CreateVirtualDisk échoue avec une valeur de code d’erreur ERROR_INVALID_PARAMETER, la cause peut être due à l’une des conditions suivantes :

  • Le paramètre VirtualStorageType a la valeur NULL.
  • Le paramètre Parameters a la valeur NULL.
  • Le membre Version du paramètre Parameters n’est pas défini sur CREATE_VIRTUAL_DISK_VERSION_1 ou CREATE_VIRTUAL_DISK_VERSION_2.
  • Le membre Version du paramètre Parameters a la valeur CREATE_VIRTUAL_DISK_VERSION_2 , mais le paramètre VirtualDiskAccessMask n’est pas défini sur VIRTUAL_DISK_ACCESS_NONE.
  • Le membre BlockSizeInBytes du paramètre Parametersn’est pas défini sur CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE (0), 0x80000 (512 Ko) ou 0x200000 (2 Mo).
  • Le membre MaximumSize du paramètre Parameters est inférieur à 3 Mo.
  • Le membre MaximumSize du paramètre Parameters n’est pas aligné avec la valeur du membre SectorSizeInBytes .
  • Le paramètre VirtualDiskAccessMask est défini sur une valeur de (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • Le paramètre Flags est supérieur à CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION.
Le volume hôte contenant le nouveau fichier d’image de disque virtuel ne peut pas être compressé ou chiffré PAR EFS.

Lors de la création des différents types de disques virtuels, les combinaisons suivantes de paramètres de création sont recommandées :

  • L’indicateur CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION doit être spécifié.
  • ParentPath ne doit pas être spécifié.
  • SourcePath peut être spécifié si vous le souhaitez.
  • L’indicateur CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION ne doit pas être spécifié.
  • ParentPath ne doit pas être spécifié.
  • SourcePath peut être spécifié si vous le souhaitez.
  • L’indicateur CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION ne doit pas être spécifié.
  • ParentPath doit être spécifié.
  • SourcePath ne doit pas être spécifié.
La fonction CreateVirtualDisk peut également être utilisée comme mécanisme pour convertir un type de disque virtuel en un autre ou comme disque physique en disque virtuel. Pour ce faire, utilisez le membre SourcePath de la structure CREATE_VIRTUAL_DISK_PARAMETERS pour préremplir le nouveau disque virtuel avec les données de bloc du disque source.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
Serveur minimal pris en charge Windows Server 2008 R2
Plateforme cible Windows
En-tête virtdisk.h
Bibliothèque VirtDisk.lib
DLL VirtDisk.dll

Voir aussi

À propos du disque dur virtuel

OpenVirtualDisk

Référence du disque dur virtuel