Método IVdsVolume::Extend (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.]

Expande el tamaño del volumen actual agregando extensiones de disco a cada miembro de cada plex.

Sintaxis

HRESULT Extend(
  [in]  VDS_INPUT_DISK *pInputDiskArray,
  [in]  LONG           lNumberOfDisks,
  [out] IVdsAsync      **ppAsync
);

Parámetros

[in] pInputDiskArray

Puntero a una matriz de estructuras VDS_INPUT_DISK ; una estructura para cada disco.

Nota Los autores de llamadas no deben usar un índice de miembro predeterminado junto con el método Extend , a menos que el volumen solo tenga un plex con un solo miembro.
 

[in] lNumberOfDisks

Número total de discos del volumen. Los autores de llamadas pueden pasar cero cuando los plexos de volumen contienen suficiente espacio para extender el volumen; pInputDiskArray debe ser NULL.

[out] ppAsync

Dirección de un puntero de interfaz IVdsAsync , que VDS inicializa al devolver. Los autores de llamadas deben liberar la interfaz. Use este puntero para cancelar, esperar o consultar el estado de la operación. Si llama al método IVdsAsync::Wait en esta interfaz y se devuelve un valor HRESULT correcto, debe liberar las interfaces devueltas en la estructura de VDS_ASYNC_OUTPUT 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 se pueden originar en VDS en sí o en el proveedor de VDS subyacente que se está usando. Entre los posibles valores devueltos se incluyen los siguientes.

Código o valor devuelto Descripción
S_OK
El método compitió correctamente.
VDS_E_CANNOT_EXTEND
0x8004240EL
No se puede extender el volumen porque el sistema de archivos del volumen no admite la operación.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
No hay suficiente espacio para extender el volumen.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
El volumen no es correcto.

Comentarios

Este método extiende un volumen simple en el mismo disco o crea un volumen distribuido extendiendo el volumen a varios discos. Los autores de llamadas pueden extender un volumen en un disco básico, pero la extensión del disco debe ser contigua con el volumen.

VDS extiende automáticamente el sistema de archivos para ajustarse al tamaño de volumen extendido. El sistema de archivos debe admitir esta operación. VDS extiende el sistema de archivos, pero no el volumen, si un autor de la llamada no puede especificar las extensiones que se van a usar.

Las operaciones de extensión y reducción solo se admiten en volúmenes NTFS y RAW.

VDS aplica las siguientes reglas al extender un volumen:

  • Para los tipos de plex simples y distribuidos, VDS extiende el único miembro del plex con cualquier extensión de disco que aún no contribuye a otro plex, independientemente de si la extensión está en el mismo disco o no. VDS usa extensiones de disco en el orden proporcionado por el autor de la llamada, ignorando el índice de miembro de la extensión. A menos que esté en un disco básico, VDS puede extender el único miembro de un plex con cualquier extensión de disco en el mismo disco o en otro disco.
  • Para los tipos seccionados y seccionados con paridad plex, VDS asigna una extensión al miembro del plex de la siguiente manera:
    • La extensión va al índice de miembro especificado por el autor de la llamada.
    • La extensión va al índice de miembro que ocupa el mismo disco cuando el autor de la llamada no puede especificar un identificador de miembro.
    VDS nunca asigna una extensión a varios miembros en el mismo disco. El autor de la llamada debe especificar un miembro para todas las extensiones o ninguna; el autor de la llamada no puede especificar un miembro para algunas extensiones y no para otros.
Cuando el llamador pasa NULL para pInputDiskArray y cero para lNumberOfDisks, VDS devuelve S_FALSE en el objeto asincrónico y S_OK para el método. En este caso, S_OK indica que VDS ha iniciado la operación, pero la operación es sincrónica.

Los implementadores deben devolver un puntero a la interfaz IVdsAsync de este método, independientemente de si la llamada inicia una operación asincrónica.

Requisitos

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

Vea también

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK