Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Начиная с Windows 8 и Windows Server 2012 COM-интерфейс службы виртуальных дисков заменен API управления хранилищами Windows.]
Уменьшает размер тома и всех лексей и возвращает выпущенные экстенты в свободное место.
Синтаксис
HRESULT Shrink(
[in] ULONGLONG ullNumberOfBytesToRemove,
[out] IVdsAsync **ppAsync
);
Параметры
[in] ullNumberOfBytesToRemove
Размер уменьшения байтов.
[out] ppAsync
Адрес указателя интерфейса IVdsAsync . VDS инициализирует интерфейс при возврате. Вызывающие элементы должны освободить интерфейс. Используйте этот интерфейс для отмены, ожидания или запроса состояния операции. Если вызывается IVdsAsync::Wait и возвращается значение HRESULT успешно, интерфейсы, возвращаемые в структуре VDS_ASYNC_OUTPUT , должны быть освобождены путем вызова метода IUnknown::Release для каждого указателя интерфейса. Однако если ожидание возвращает значение HRESULT сбоя или если параметр pHrResult в Wait получает значение HRESULT сбоя, указатели интерфейса в структуре VDS_ASYNC_OUTPUT имеют значение NULL и не нужно выпускать. Вы можете протестировать значения HRESULT успешно или неудачно, используя макросы SUCCESSED и FAILED , определенные в Winerror.h.
Возвращаемое значение
Этот метод может возвращать стандартные значения HRESULT, такие как E_INVALIDARG или E_OUTOFMEMORY, а также возвращаемые значения VDS. Он также может возвращать преобразованные системные коды ошибок с помощью макроса HRESULT_FROM_WIN32 . Ошибки могут возникать из самого VDS или от используемого поставщика VDS . Возможные возвращаемые значения включают следующие значения.
| Возврат кода или значения | Description |
|---|---|
|
Метод успешно завершен. |
|
Кэш поставщика поврежден. Это означает проблему программного обеспечения или связи внутри поставщика, который кэширует сведения о подключенных устройствах. Вызывающий объект может использовать метод IVdsHwProvider::Reenumerate , за которым следует метод IVdsHwProvider::Refresh для восстановления кэша. |
|
Том не может быть сжат, так как файловая система не поддерживает ее. |
|
Операция не поддерживается на съемных носителях. |
|
Указанный размер сжатия меньше минимального допустимого размера сжатия. |
|
Указанный размер сжатия слишком велик и приведет к тому, что объем будет меньше минимального размера тома. |
Замечания
Этот метод является оболочкой для метода IVdsVolumeShrink::Shrink . При вызове IVdsVolume::Shrink значение параметра uNumberOfBytesToRemove используется для параметра ullDesiredNumberOfReclaimableBytes и ullMinNumberOfReclaimableBytesiVdsVolumeShrink::Shrink.
Операции сжатия и расширения поддерживаются только в томах NTFS и RAW.
Используйте этот метод для сжатия файловой системы и тома. Если VDS не удается уменьшить том, он останавливает операцию без сжатия файловой системы.
Для каждого тома можно выполнять только одну операцию сжатия или дефрагментации. Windows Server 2008 и Windows Vista: На компьютере может выполняться только одна операция сжатия или дефрагментации.
Если значение uNumberOfBytesToRemove равно нулю, метод завершается ошибкой. В противном случае VDS округляет uNumberOfBytesToRemove до нескольких размеров кластера файловой системы.
Реализующие должны вернуть указатель на интерфейс IVdsAsync для этого метода, даже если вызов не инициирует асинхронную операцию.
Метод IVdsVolumeShrink::QueryMaxReclaimableBytes можно использовать для оценки количества байтов, которые будут удалены операцией сжатия. Однако QueryMaxReclaimableBytes может возвращать больше байтов, чем фактически доступны.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows Vista [только классические приложения] |
| минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
| целевая платформа | Виндоус |
| Header | vds.h |
| Library | Uuid.lib |