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)

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)

Vedi anche