FSCTL_MOVE_FILE IOCTL (winioctl.h)

Realoca um ou mais clusters virtuais de um arquivo de um cluster lógico para outro dentro do mesmo volume. Essa operação é usada durante a desfragmentação.

Para executar essa operação, chame a função DeviceIoControl com os parâmetros a seguir.

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
);

Comentários

O código de controle FSCTL_MOVE_FILE realoca um ou mais clusters virtuais de um arquivo de um cluster lógico para outro dentro do mesmo volume. Se o arquivo a ser movido for um arquivo esparso ou compactado, a granularidade da movimentação será de 16 clusters; caso contrário, a granularidade é um cluster.

Para marcar um arquivo aberto para que ele não seja desfragmentado, chame a função DeviceIoControl com o código de controle FSCTL_MARK_HANDLE com MARK_HANDLE_PROTECT_CLUSTERS no membro HandleInfo da estrutura MARK_HANDLE_INFO passada no parâmetro lpInBuffer .

Observe que o bitmap retornado pela função DeviceIoControl com o código de controle FSCTL_GET_VOLUME_BITMAP representa um ponto no tempo e pode estar incorreto assim que tiver sido lido se o volume tiver atividade de gravação. Portanto, é possível tentar mover um cluster para um cluster alocado, apesar de um bitmap recente indicando que o cluster não está alocado. Os programas que usam FSCTL_MOVE_FILE devem estar preparados para essa possibilidade.

Para obter as implicações de E/S sobrepostas nessa operação, consulte a seção Comentários do tópico DeviceIoControl .

Para obter uma lista de arquivos, fluxos e tipos de fluxo compatíveis com o código de controle FSCTL_MOVE_FILE , consulte a seção Arquivos, fluxos e tipos de fluxo com suporte para desfragmentação do tópico Arquivos de Desfragmentação .

Em Windows 8 e Windows Server 2012, esse código é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Sim

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho winioctl.h (inclua Windows.h)

Confira também