Compartir a través de


Método IVdsPack2::CreateVolume2 (vds.h)

[A partir de Windows 8 y Windows Server 2012, la interfaz COM del servicio de disco virtual se sustituye por la API de administración de almacenamiento de Windows.]

Crea un volumen en un paquete de discos con un parámetro de alineación opcional.

Sintaxis

HRESULT CreateVolume2(
  [in]  VDS_VOLUME_TYPE type,
  [in]  VDS_INPUT_DISK  *pInputDiskArray,
  [in]  LONG            lNumberOfDisks,
  [in]  ULONG           ulStripeSize,
  [in]  ULONG           ulAlign,
  [out] IVdsAsync       **ppAsync
);

Parámetros

[in] type

Valor de la enumeración VDS_VOLUME_TYPE que indica el tipo de volumen que se va a crear.

[in] pInputDiskArray

Matriz de estructuras de VDS_INPUT_DISK que indican los discos en los que se va a crear el volumen.

Nota El tamaño de esta matriz debe ser de 32 objetos o menos, ya que Windows impone un límite en el que no se pueden usar más de 32 discos con un único volumen.
 

[in] lNumberOfDisks

Número de elementos de la matriz a los que apunta el parámetro pInputDiskArray .

[in] ulStripeSize

Tamaño de franja, en bytes, del nuevo volumen.

Nota El tamaño de franja debe ser 65536 si el tipo es VDS_VT_STRIPE o VDS_VT_PARITY; de lo contrario, el tamaño de franja DEBE ser 0.
 

[in] ulAlign

Número de bytes para la alineación del volumen. Este parámetro es opcional y puede ser cero. Si se especifica cero, el servidor determinará el valor de alineación en función del tamaño del disco en el que se cree el volumen.

Windows 7, Windows Server 2008 R2, Windows Vista y Windows Server 2008: En un disco básico, el método CreateVolume2 omite este parámetro y la clave del RegistroHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment . Se trata de un problema conocido y se está solucionando. Como solución alternativa, use el método IVdsAdvancedDisk::CreatePartition o IVdsCreatePartitionEx::CreatePartitionEx para crear particiones en el disco básico para que estén alineados correctamente. Las particiones dinámicas y los volúmenes se alinean con los valores de la siguiente clave del Registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

La alineación predeterminada es de 1 MB si el disco es de 4 GB o más, o 64 KB si el disco es inferior a 4 GB.

[out] ppAsync

Puntero a una interfaz IVdsAsync que al finalizar correctamente recibe la interfaz IVdsAsync para supervisar y controlar esta operación. Los autores de llamadas deben liberar la interfaz recibida cuando terminen con ella. Si se llama al método IVdsAsync::Wait en la interfaz y se devuelve un valor HRESULT correcto, las interfaces devueltas en la estructura de VDS_ASYNC_OUTPUT deben liberarse llamando al método IUnknown::Release en cada puntero de interfaz. Sin embargo, si Wait devuelve un valor HRESULT de error o si el parámetro pHrResult de Wait recibe un valor HRESULT de error, los punteros de interfaz de la estructura VDS_ASYNC_OUTPUT son NULL y no es necesario liberar. Puede probar los valores HRESULT correctos o erróneos mediante las macros SUCCEEDED y FAILED definidas en Winerror.h.

Valor devuelto

Este método puede devolver valores HRESULT estándar, como E_INVALIDARG o E_OUTOFMEMORY, y valores devueltos específicos de VDS. También puede devolver códigos de error del sistema convertidos mediante la macro HRESULT_FROM_WIN32 . Los errores pueden originarse en VDS en sí o en el proveedor de VDS subyacente que se está usando. Entre los valores devueltos posibles se incluyen los siguientes.

Código o valor devuelto Descripción
S_OK
El volumen se creó correctamente.
VDS_S_NO_NOTIFICATION
0x00042517L
No se recibió ninguna notificación de llegada de volumen. Es posible que tenga que llamar a IVdsService::Refresh.
VDS_S_UPDATE_BOOTFILE_FAILED
0x00042434L
El volumen se crea correctamente, pero VDS no pudo actualizar las opciones de arranque en el almacén de datos de configuración de arranque (BCD).
VDS_E_ALIGN_IS_ZERO
0x80042590L
La alineación especificada es cero.
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
0x8004258FL
La alineación especificada no es una potencia de dos.
VDS_E_DISK_NOT_FOUND_IN_PACK
0x8004252DL
Los discos especificados no pertenecen al mismo paquete.
VDS_E_DMADMIN_METHOD_CALL_FAILED
0x80042420L
Error en el servicio LDM de un método.
VDS_E_EXTENT_SIZE_LESS_THAN_MIN
0x80042433L
El tamaño de extensión pasado es demasiado pequeño.
VDS_E_INVALID_DISK_COUNT
0x80042526L
El número de discos especificados no es válido para esta operación.
VDS_E_INVALID_MEMBER_COUNT
0x80042522L
El número de miembros del volumen debe ser mayor que cero.
VDS_E_INVALID_MEMBER_ORDER
0x80042524L
Los índices de miembro deben aumentar de forma monotónica y comenzar con cero.
VDS_E_INVALID_OPERATION
0x80042415L
El disco pasado es un dispositivo CD-ROM o DVD.
VDS_E_INVALID_PACK
0x8004251AL
Esta operación no se permite en este paquete de discos.
VDS_E_INVALID_PLEX_COUNT
0x80042521L
El recuento de plex para el volumen debe ser mayor que cero.
VDS_E_INVALID_PLEX_ORDER
0x80042523L
Los índices de plex deben aumentar monotónicamente y comenzar con cero.
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
El tamaño de franja en bytes debe ser una potencia de 2 para los tipos de volumen seccionados y RAID-5 y debe ser cero para todos los demás tipos de volumen.
VDS_E_MISSING_DISK
0x80042454L
Falta el disco especificado.
VDS_E_NO_MEDIA
0x80042412L
No hay ningún medio en una unidad extraíble que se pasa a través de la matriz de discos.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
No hay suficiente espacio en uno de los discos.
VDS_E_NOT_SUPPORTED
0x80042400L
No se admite el tipo de volumen.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
No se encuentra al menos uno de los discos pasados.
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
Un único disco no puede contribuir a varios miembros o a varios plexos del mismo volumen.
VDS_E_PACK_OFFLINE
0x80042444L
No se puede acceder al paquete de destino.
VDS_E_PARTITION_LIMIT_REACHED
0x80042407L
El número máximo de particiones (particiones principales o particiones principales con una partición extendida) ya existe cuando el autor de la llamada intenta crear una partición principal adicional o una partición extendida.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
La caché del proveedor dinámico está dañada.
VDS_E_VOLUME_DISK_COUNT_MAX_EXCEEDED
0x80042529L
No se permiten más de 32 discos por volumen.
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
El tamaño del volumen es demasiado pequeño.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado vds.h
Library Uuid.lib

Consulte también

IVdsPack2

IVdsPack::CreateVolume