Compartir a través de


Función OpenVirtualDisk (virtdisk.h)

Abre un disco duro virtual (VHD) o un archivo de imagen de CD o DVD (ISO) para su uso.

Sintaxis

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
);

Parámetros

[in] VirtualStorageType

Puntero a una estructura de VIRTUAL_STORAGE_TYPE válida.

[in] Path

Puntero a una ruta de acceso válida a la imagen de disco virtual que se va a abrir.

[in] VirtualDiskAccessMask

Valor válido de la enumeración VIRTUAL_DISK_ACCESS_MASK .

[in] Flags

Combinación válida de valores de la enumeración OPEN_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

Puntero opcional a una estructura de OPEN_VIRTUAL_DISK_PARAMETERS válida. Puede ser NULL.

[out] Handle

Puntero al objeto handle que representa el disco virtual abierto.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS (0) y el parámetro Handle contiene un puntero válido al nuevo objeto de disco virtual.

Si se produce un error en la función, el valor devuelto es un código de error y el valor del parámetro Handle no está definido. Para obtener más información, vea Códigos de error del sistema.

Comentarios

Para evitar un error de solicitud abierta al intentar abrir un identificador en un disco virtual conectado permanentemente, se aplican los siguientes requisitos:

  • El parámetro VirtualDiskAccessMask debe incluir la marca VIRTUAL_DISK_ACCESS_DETACH (0x00040000).
  • No se debe solicitar acceso de escritura al archivo si la operación de apertura original que creó el disco virtual conectado permanentemente solo solicitó acceso de lectura.
Si se produce un error en la función OpenVirtualDisk con un valor de código de error de ERROR_INVALID_PARAMETER (87), la causa puede deberse a cualquiera de las condiciones siguientes:
  • El parámetro VirtualStorageType es NULL.
  • El parámetro Path es NULL.
  • El parámetro VirtualDiskAccessMask se establece en un valor de (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • El parámetro Flags se establece en un valor de (Flags & ~(OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS | OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE)).
  • El miembro Version del parámetro Parameters no está establecido en OPEN_VIRTUAL_DISK_VERSION_1 o OPEN_VIRTUAL_DISK_VERSION_2.
El volumen de host que contiene el archivo de imagen de disco virtual no se puede comprimir ni cifrar EFS. Esta función producirá un error ERROR_UNSUPPORTED_COMPRESSION (618) si el volumen de host se ha comprimido o con el error ERROR_FILE_ENCRYPTED (6002) si el volumen de host se ha cifrado después de la creación inicial del disco virtual.

La ruta de acceso a la que apunta el parámetro Path no puede estar en un recurso compartido de red local (es decir, un recurso compartido de red a través de bucle invertido). Esta función producirá un error ERROR_FILE_SYSTEM_LIMITATION (665) si la ruta de acceso está en un recurso compartido de red local. Esta función producirá un error ERROR_FILE_CORRUPT (1392) si se abre un disco virtual ISO y el tamaño del archivo no es incluso un múltiplo de 2 KB (2048 bytes), es de al menos 34 KB (34 816 bytes) o el descriptor de estructura de volumen no contiene un identificador de volumen UDFS o CDFS conocido.

Cuando una aplicación termine de usar el identificador de objeto devuelto en el parámetro Handle , use la función CloseHandle para cerrar el identificador.

Los archivos de imagen de CD y DVD (ISO) no se admiten antes de Windows 8 y Windows Server 2012.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7
Servidor mínimo compatible Windows Server 2008 R2
Plataforma de destino Windows
Encabezado virtdisk.h
Library VirtDisk.lib
Archivo DLL VirtDisk.dll

Consulte también

Acerca de VHD

CreateVirtualDisk

Referencia de VHD