FSCTL_SHRINK_VOLUME IOCTL (winioctl.h)
Сигнализирует о том, что том должен быть подготовлен к выполнению операции сжатия, операция сжатия должна быть зафиксирована или операция сжатия должна быть завершена.
Для выполнения этой операции вызовите функцию DeviceIoControl со следующими параметрами.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
FSCTL_SHRINK_VOLUME, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
nInBufferSize, // size of input buffer
NULL, // output buffer
O, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Комментарии
Этот код элемента управления поддерживается только в файловых системах NTFS и RAW.
Чтобы завершить операцию сжатия, необходимо:
- Вызовите CreateFile , чтобы открыть дескриптор тома.
- Вызов FSCTL_SHRINK_VOLUME. Задайте для элемента ShrinkRequestType структуры SHRINK_VOLUME_INFORMATION значение ShrinkPrepare. Задайте для элемента NewNumberOfSectors той же структуры нулевое значение. Если этот вызов будет выполнен успешно, файловая система не будет выделять кластеры после окончания новой длины тома.
- Вызовите FSCTL_MOVE_FILE для всех файлов за пределами нового количества секторов и переместите их в допустимый диапазон. Вы несете ответственность за перемещение всех файлов, затронутых операцией сжатия.
- Вызов FSCTL_SHRINK_VOLUME. Задайте для элемента ShrinkRequestType структуры SHRINK_VOLUME_INFORMATION значение ShrinkCommit. Задайте для элемента NewNumberOfSectors той же структуры нулевое значение. Если все файлы за пределами нового размера тома не были перемещены, вызов завершается сбоем с STATUS_ALREADY_COMMITTED (ERROR_ACCESS_DENIED). В противном случае файловая система теперь сократилась.
- Вызов IOCTL_DISK_GROW_PARTITION. Задайте для элемента BytesToGrow структуры DISK_GROW_PARTITION отрицательное число, представляющее число удаляемых байтов.
В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Нет |
Прозрачная отработка отказа (TFO) SMB 3.0 | Нет |
SMB 3.0 с масштабируемыми общими папками (SO) | Нет |
Файловая система общего тома кластера (CSVFS) | См. комментарий |
Поддерживается только на узле с подключенной системой NTFS.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Верхняя часть | winioctl.h (включая Windows.h) |