Partager via


OpenVirtualDisk, fonction (virtdisk.h)

Ouvre un disque dur virtuel (VHD) ou un fichier image CD ou DVD (ISO) à utiliser.

Syntaxe

DWORD OpenVirtualDisk(
  [in]           PVIRTUAL_STORAGE_TYPE         VirtualStorageType,
  [in]           PCWSTR                        Path,
  [in]           VIRTUAL_DISK_ACCESS_MASK      VirtualDiskAccessMask,
  [in]           OPEN_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] POPEN_VIRTUAL_DISK_PARAMETERS Parameters,
  [out]          PHANDLE                       Handle
);

Paramètres

[in] VirtualStorageType

Pointeur vers une structure VIRTUAL_STORAGE_TYPE valide.

[in] Path

Pointeur vers un chemin d’accès valide à l’image de disque virtuel à ouvrir.

[in] VirtualDiskAccessMask

Valeur valide de l’énumération VIRTUAL_DISK_ACCESS_MASK .

[in] Flags

Combinaison valide de valeurs de l’énumération OPEN_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

Pointeur facultatif vers une structure OPEN_VIRTUAL_DISK_PARAMETERS valide. Peut être NULL.

[out] Handle

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

Valeur retournée

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS (0) 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

Pour éviter l’échec d’une demande ouverte lors de la tentative d’ouverture d’un handle sur un disque virtuel attaché de manière permanente, les conditions suivantes s’appliquent :

  • Le paramètre VirtualDiskAccessMask doit inclure l’indicateur VIRTUAL_DISK_ACCESS_DETACH (0x00040000).
  • L’accès en écriture au fichier ne doit pas être demandé si l’opération d’ouverture d’origine qui a créé le disque virtuel attaché en permanence demandait uniquement l’accès en lecture.
Si la fonction OpenVirtualDisk échoue avec une valeur de code d’erreur ERROR_INVALID_PARAMETER (87), la cause peut être due à l’une des conditions suivantes :
  • Le paramètre VirtualStorageType a la valeur NULL.
  • Le paramètre Path a la valeur NULL.
  • Le paramètre VirtualDiskAccessMask est défini sur une valeur de (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • Le paramètre Flags est défini sur une valeur de (Flags & ~(OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS | OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE)).
  • Le membre Version du paramètre Parameters n’est pas défini sur OPEN_VIRTUAL_DISK_VERSION_1 ou OPEN_VIRTUAL_DISK_VERSION_2.
Le volume hôte qui contient le fichier d’image de disque virtuel ne peut pas être compressé ou chiffré EFS. Cette fonction échoue avec l’erreur ERROR_UNSUPPORTED_COMPRESSION (618) si le volume hôte a été compressé ou avec l’erreur ERROR_FILE_ENCRYPTED (6002) si le volume hôte a été chiffré EFS après la création initiale du disque virtuel.

Le chemin d’accès pointé par le paramètre Path ne peut pas se trouver sur un partage réseau local (c’est-à-dire un partage réseau via un bouclage). Cette fonction échoue avec l’erreur ERROR_FILE_SYSTEM_LIMITATION (665) si le chemin se trouve sur un partage réseau local. Cette fonction échoue avec l’erreur ERROR_FILE_CORRUPT (1392) si un disque virtuel ISO est ouvert et que la taille du fichier n’est pas un multiple pair de 2 Ko (2 048 octets), si elle est d’au moins 34 Ko (34 816 octets), ou si le descripteur de structure de volume ne contient pas d’identificateur de volume CDFS ou UDFS connu.

Lorsqu’une application a terminé d’utiliser le handle d’objet retourné dans le paramètre Handle , utilisez la fonction CloseHandle pour fermer le handle.

Les fichiers image CD et DVD (ISO) ne sont pas pris en charge avant Windows 8 et Windows Server 2012.

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

CreateVirtualDisk

Référence du disque dur virtuel