Функция CompactVirtualDisk (virtdisk.h)
Уменьшает размер файла резервного хранилища виртуального жесткого диска (VHD).
Синтаксис
DWORD CompactVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] COMPACT_VIRTUAL_DISK_FLAG Flags,
[in, optional] PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped
);
Параметры
[in] VirtualDiskHandle
Дескриптор открытого виртуального диска, который должен быть открыт с помощью флага VIRTUAL_DISK_ACCESS_METAOPS в параметре VirtualDiskAccessMask , переданном в OpenVirtualDisk. Сведения об открытии виртуального диска см. в разделе Функция OpenVirtualDisk .
[in] Flags
Должно быть COMPACT_VIRTUAL_DISK_FLAG_NONE значением (0) перечисления COMPACT_VIRTUAL_DISK_FLAG .
[in, optional] Parameters
Необязательный указатель на допустимую структуру COMPACT_VIRTUAL_DISK_PARAMETERS , содержащую данные параметров сжатия.
[in, optional] Overlapped
Необязательный указатель на допустимую структуру OVERLAPPED , если требуется асинхронная операция.
Возвращаемое значение
Состояние запроса.
Если функция завершается успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, возвращаемое значение представляет собой код ошибки. Дополнительные сведения см. в разделе Системные коды ошибок.
Комментарии
Сжатие можно выполнять только на виртуальном диске, который динамически расширяется или отличается друг от друга.
Существует два разных типа сжатия.
- Первый тип, сжатие с учетом файловой системы, использует файловую систему NTFS для определения свободного места. Это делается путем подключения виртуального жесткого диска в качестве устройства только для чтения, включив флаги VIRTUAL_DISK_ACCESS_METAOPS и VIRTUAL_DISK_ACCESS_ATTACH_RO в параметр VirtualDiskAccessMask , переданный в OpenVirtualDisk, присоединение VHD путем вызова AttachVirtualDisk, а при подключении виртуального жесткого диска вызывается CompactVirtualDisk. Отсоединение виртуального жесткого диска до завершения сжатия может привести к сбою сжатия до его завершения (аналогично отмене сжатия).
- Второй тип, не зависящая от файловой системы, не связан с файловой системой, а ищет только блоки VHD, заполненные нулями (0). Это делается путем включения флага VIRTUAL_DISK_ACCESS_METAOPS в параметр VirtualDiskAccessMask , переданного в OpenVirtualDisk, и вызова CompactVirtualDisk.
Операцию сжатия на виртуальном диске можно безопасно прервать и повторно выполнить позже. Повторное открытие прерванного файла виртуального диска может привести к уменьшению размера файла виртуального диска во время открытия.
Сжатие может быть ресурсоемким для ЦП или операций ввода-вывода в зависимости от размера виртуального диска и количества блоков, требующих перемещения.
Функция CompactVirtualDisk выполняется на виртуальном диске в том же контексте безопасности, что и вызывающий объект.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 |
Минимальная версия сервера | Windows Server 2008 R2 |
Целевая платформа | Windows |
Header | virtdisk.h |
Библиотека | VirtDisk.lib |
DLL | VirtDisk.dll |