FSCTL_SHRINK_VOLUME IOCTL (winioctl.h)
Segnala che il volume deve essere preparato per eseguire l'operazione di compattazione, l'operazione di compattazione deve essere eseguita con commit o l'operazione di compattazione deve essere terminata.
Per eseguire questa operazione, chiamare la funzione DeviceIoControl con i parametri seguenti.
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
);
Commenti
Questo codice di controllo è supportato solo nei file system NTFS e RAW.
Per completare un'operazione di compattazione, è necessario:
- Chiamare CreateFile per aprire un handle al volume.
- Chiamare FSCTL_SHRINK_VOLUME. Impostare il membro ShrinkRequestType della struttura SHRINK_VOLUME_INFORMATION su ShrinkPrepare. Impostare il membro NewNumberOfSectors della stessa struttura su zero. Se questa chiamata ha esito positivo, il file system non alloca i cluster oltre la fine della nuova lunghezza del volume.
- Chiamare FSCTL_MOVE_FILE in tutti i file oltre il nuovo numero di settori e spostarli all'interno dell'intervallo valido. È responsabile dello spostamento di tutti i file interessati dall'operazione di compattazione.
- Chiamare FSCTL_SHRINK_VOLUME. Impostare il membro ShrinkRequestType della struttura SHRINK_VOLUME_INFORMATION su ShrinkCommit. Impostare il membro NewNumberOfSectors della stessa struttura su zero. Se tutti i file oltre la fine della nuova dimensione del volume non sono stati spostati, la chiamata non riesce con STATUS_ALREADY_COMMITTED (ERROR_ACCESS_DENIED). In caso contrario, il file system è stato ridotto.
- Chiamare IOCTL_DISK_GROW_PARTITION. Impostare il membro BytesToGrow della struttura DISK_GROW_PARTITION sul numero negativo che rappresenta il numero di byte da rimuovere.
In Windows 8 e Windows Server 2012 questo codice è supportato dalle tecnologie seguenti.
Tecnologia | Supportato |
---|---|
Protocollo SMB (Server Message Block) 3.0 | No |
Failover trasparente SMB 3.0 (TFO) | No |
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) | No |
File system del volume condiviso del cluster (CsvFS) | Vedere il commento |
È supportato solo nel nodo con NTFS montato.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Intestazione | winioctl.h (include Windows.h) |