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