FSCTL_MOVE_FILE IOCTL (winioctl.h)
Sposta uno o più cluster virtuali di un file da un cluster logico a un altro all'interno dello stesso volume. Questa operazione viene usata durante la deframmentazione.
Per eseguire questa operazione, chiamare la funzione DeviceIoControl con i parametri seguenti.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to volume
FSCTL_MOVE_FILE, // dwIoControlCode
(LPVOID) lpInBuffer, // MOVE_FILE_DATA structure
(DWORD) nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Commenti
Il codice di controllo FSCTL_MOVE_FILE sposta uno o più cluster virtuali di un file da un cluster logico a un altro all'interno dello stesso volume. Se il file da spostare è un file sparse o compresso, la granularità dello spostamento è di 16 cluster; in caso contrario, la granularità è un cluster.
Per contrassegnare un file aperto in modo che non venga deframmentato, chiamare la funzione DeviceIoControl con il codice di controllo FSCTL_MARK_HANDLE con MARK_HANDLE_PROTECT_CLUSTERS nel membro HandleInfodella struttura MARK_HANDLE_INFO passata nel parametro lpInBuffer .
Si noti che la bitmap restituita dalla funzione DeviceIoControl con il codice di controllo FSCTL_GET_VOLUME_BITMAP rappresenta un punto nel tempo e può essere errata non appena è stata scritta se il volume ha attività di scrittura. È quindi possibile tentare di spostare un cluster in un cluster allocato, nonostante una bitmap recente che indica che il cluster non è assegnato. I programmi che usano FSCTL_MOVE_FILE devono essere preparati per questa possibilità.
Per le implicazioni dell'I/O sovrapposta in questa operazione, vedere la sezione Osservazioni dell'argomento DeviceIoControl .
Per un elenco di file, flussi e tipi di flusso supportati dal codice di controllo FSCTL_MOVE_FILE , vedere la sezione File, flussi e tipi di flusso supportati per la deframmentazione dell'argomento File di deframmentazione .
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) | Sì |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | winioctl.h (include Windows.h) |