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.
[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.
[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 |
---|---|
|
El volumen se creó correctamente. |
|
No se recibió ninguna notificación de llegada de volumen. Es posible que tenga que llamar a IVdsService::Refresh. |
|
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). |
|
La alineación especificada es cero. |
|
La alineación especificada no es una potencia de dos. |
|
Los discos especificados no pertenecen al mismo paquete. |
|
Error en el servicio LDM de un método. |
|
El tamaño de extensión pasado es demasiado pequeño. |
|
El número de discos especificados no es válido para esta operación. |
|
El número de miembros del volumen debe ser mayor que cero. |
|
Los índices de miembro deben aumentar de forma monotónica y comenzar con cero. |
|
El disco pasado es un dispositivo CD-ROM o DVD. |
|
Esta operación no se permite en este paquete de discos. |
|
El recuento de plex para el volumen debe ser mayor que cero. |
|
Los índices de plex deben aumentar monotónicamente y comenzar con cero. |
|
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. |
|
Falta el disco especificado. |
|
No hay ningún medio en una unidad extraíble que se pasa a través de la matriz de discos. |
|
No hay suficiente espacio en uno de los discos. |
|
No se admite el tipo de volumen. |
|
No se encuentra al menos uno de los discos pasados. |
|
Un único disco no puede contribuir a varios miembros o a varios plexos del mismo volumen. |
|
No se puede acceder al paquete de destino. |
|
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. |
|
La caché del proveedor dinámico está dañada. |
|
No se permiten más de 32 discos por volumen. |
|
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 |