Compartir a través de


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

Reduce el tamaño del volumen y todos los plexos y devuelve las extensiones liberados al espacio libre.

Sintaxis

HRESULT Shrink(
  [in]  ULONGLONG ullNumberOfBytesToRemove,
  [out] IVdsAsync **ppAsync
);

Parámetros

[in] ullNumberOfBytesToRemove

Tamaño de la reducción en bytes.

[out] ppAsync

Dirección de un puntero de interfaz IVdsAsync . VDS inicializa la interfaz devuelta. Los autores de llamadas deben liberar la interfaz . Use esta interfaz para cancelar, esperar o consultar el estado de la operación. Si se llama a IVdsAsync::Wait y se devuelve un valor HRESULT correcto, las interfaces devueltas en la estructura 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 método se completó correctamente.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
La memoria caché del proveedor está dañada. Esto indica un problema de software o comunicación dentro de un proveedor que almacena en caché información sobre los dispositivos conectados. El autor de la llamada puede usar el método IVdsHwProvider::Reenumerate seguido del método IVdsHwProvider::Refresh para restaurar la memoria caché.
VDS_E_CANNOT_SHRINK
0x8004251EL
El volumen no se puede reducir porque el sistema de archivos no lo admite.
VDS_E_DISK_REMOVEABLE
0x8004255AL
La operación no se admite en medios extraíbles.
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
El tamaño de reducción especificado es menor que el tamaño de reducción mínimo permitido.
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
El tamaño de reducción especificado es demasiado grande y hará que el volumen sea menor que el tamaño mínimo del volumen.

Comentarios

Este método es un contenedor para el método IVdsVolumeShrink::Shrink . Si llama a IVdsVolume::Shrink, se usa el valor del parámetro uNumberOfBytesToRemove para los parámetros ullDesiredNumberOfReclaimableBytes y ullMinNumberOfReclaimableBytes de IVdsVolumeShrink::Shrink.

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

Use este método para reducir el sistema de archivos y el volumen. Si VDS no puede reducir el volumen, detiene la operación sin reducir el sistema de archivos.

Solo se puede realizar una operación de reducción o desfragmentación a la vez en cada volumen. Windows Server 2008 y Windows Vista: Solo se puede realizar una operación de reducción o desfragmentación a la vez en un equipo.

Si uNumberOfBytesToRemove es cero, se produce un error en el método. De lo contrario, VDS redondea uNumberOfBytesToRemove a un múltiplo del tamaño del clúster del sistema de archivos.

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

Puede usar el método IVdsVolumeShrink::QueryMaxReclaimableBytes para calcular el número de bytes que debe reclamar la operación de reducción. Sin embargo, QueryMaxReclaimableBytes puede devolver más bytes de los que realmente están disponibles.

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

IVdsAsync

IVdsVolume

IVdsVolume::Extend