Compartir a través de


Función CreateVirtualDisk (virtdisk.h)

Crea un archivo de imagen de disco duro virtual (VHD), ya sea mediante parámetros predeterminados o mediante un disco virtual o un disco físico existente.

Sintaxis

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

Parámetros

[in] VirtualStorageType

Puntero a una estructura de VIRTUAL_STORAGE_TYPE que contiene el tipo de disco deseado y la información del proveedor.

[in] Path

Puntero a una cadena válida que representa la ruta de acceso al nuevo archivo de imagen de disco virtual.

[in] VirtualDiskAccessMask

Valor de VIRTUAL_DISK_ACCESS_MASK que se va a usar al abrir el archivo de disco virtual recién creado. Si el miembro Version del parámetro Parameters se establece en CREATE_VIRTUAL_DISK_VERSION_2 , solo se puede especificar el valor de VIRTUAL_DISK_ACCESS_NONE (0).

[in, optional] SecurityDescriptor

Puntero opcional a un SECURITY_DESCRIPTOR que se va a aplicar al archivo de imagen de disco virtual. Si este parámetro es NULL, se usará el descriptor de seguridad del directorio primario.

[in] Flags

Marcas de creación, que deben ser una combinación válida de la enumeración CREATE_VIRTUAL_DISK_FLAG .

[in] ProviderSpecificFlags

Marcas específicas del tipo de disco virtual que se va a crear. Puede ser cero si no se requiere ninguno.

[in] Parameters

Puntero a una estructura de CREATE_VIRTUAL_DISK_PARAMETERS válida que contiene datos de parámetros de creación.

[in, optional] Overlapped

Puntero opcional a una estructura SUPERPUESTA válida si se desea una operación asincrónica .

[out] Handle

Puntero al objeto handle que representa el disco virtual recién creado.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto se ERROR_SUCCESS 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

Si se produce un error en la función CreateVirtualDisk con un valor de código de error de ERROR_INVALID_PARAMETER, la causa puede deberse a cualquiera de las condiciones siguientes:

  • El parámetro VirtualStorageType es NULL.
  • El parámetro Parameters es NULL.
  • El miembro Version del parámetro Parameters no está establecido en CREATE_VIRTUAL_DISK_VERSION_1 o CREATE_VIRTUAL_DISK_VERSION_2.
  • El miembro Version del parámetro Parameters se establece en CREATE_VIRTUAL_DISK_VERSION_2 pero el parámetro VirtualDiskAccessMask no está establecido en VIRTUAL_DISK_ACCESS_NONE.
  • El miembro BlockSizeInBytes del parámetro Parameters no se establece en CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE (0), 0x80000 (512 KB) o 0x200000 (2 MB).
  • El miembro MaximumSize del parámetro Parameters es inferior a 3 MB.
  • El miembro MaximumSize del parámetro Parameters no está alineado con el valor del miembro SectorSizeInBytes .
  • El parámetro VirtualDiskAccessMask se establece en un valor de (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • El parámetro Flags es mayor que CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION.
El volumen de host que contiene el nuevo archivo de imagen de disco virtual no se puede comprimir ni cifrar EFS.

Al crear los distintos tipos de discos virtuales, se recomiendan las siguientes combinaciones de parámetros de creación:

  • Se debe especificar la marca CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION .
  • No se debe especificar ParentPath.
  • SourcePath se puede especificar si lo desea.
  • No se debe especificar la marca CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION .
  • No se debe especificar ParentPath.
  • SourcePath se puede especificar si lo desea.
  • No se debe especificar la marca CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION .
  • Se debe especificar ParentPath.
  • SourcePath no debe especificarse.
La función CreateVirtualDisk también se puede usar como mecanismo para convertir un tipo de disco virtual en otro o un disco físico en un disco virtual. Esto se logra mediante el uso del miembro SourcePath de la estructura de CREATE_VIRTUAL_DISK_PARAMETERS para rellenar previamente el nuevo disco virtual con datos de bloque del disco de origen.

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

OpenVirtualDisk

Referencia de VHD