FSCTL_REARRANGE_FILE IOCTL (ntifs.h)
FSCTL_REARRANGE_FILE reorganiza a alocação dentro do arquivo, movendo clusters de um intervalo de origem contíguo solicitado dentro de um arquivo para outro local dentro do mesmo arquivo.
Código principal
Buffer de entrada
Ponteiro para uma estrutura REARRANGE_FILE_DATA que descreve a alocação a ser reorganizada. (Para chamadores de 32 bits, o buffer de entrada é um ponteiro para uma estrutura REARRANGE_FILE_DATA32 .)
Comprimento do buffer de entrada
Tamanho em bytes do buffer de entrada.
Buffer de saída
Nenhum; definido como NULL.
Comprimento do buffer de saída
Defina como zero.
Bloco de status
Valores retornados
FSCTL_REARRANGE_FILE retorna STATUS_SUCCESS após a conclusão bem-sucedida; caso contrário, ele retorna um código NTSTATUS, como um dos seguintes.
Código de retorno | Significado |
---|---|
STATUS_ACCESS_DENIED | Somente chamadas no modo kernel são permitidas. |
STATUS_BUFFER_TOO_SMALL | O comprimento do buffer de entrada especificado é menor que sizeof(REARRANGE_FILE_DATA). |
STATUS_PENDING | A conclusão da operação está pendente. |
Comentários
Os parâmetros de solicitação contêm deslocamentos de bytes de arquivo de origem e de destino e comprimento em bytes da região de origem a serem movidos, todos os quais devem ser alinhados ao cluster.
- Se estiver movendo clusters para baixo, o deslocamento do arquivo de destino indicará o ponto no qual o limite inferior do intervalo de origem móvel deve ser alinhado.
- Se mover clusters para cima, o deslocamento de arquivo de destino indicará o ponto no qual o limite superior do intervalo de origem deve ser alinhado.
Em ambos os casos, o deslocamento de destino indica que o intervalo de origem deve ser inserido antes do cluster que começa no deslocamento de destino, sendo a distinção forçada pela restrição de que o tamanho da alocação permanece fixo.
Ao contrário FSCTL_SHUFFLE_FILE, FSCTL_REARRANGE_FILE não permite adicionar alocações que contenham dados aleatórios.
Para executar essa operação, chame FltFsControlFile ou ZwFsControlFile com os parâmetros a seguir.
Parâmetro | Descrição |
---|---|
Instância | [in] Somente para FltFsControlFile . Um ponteiro de instância opaco para o chamador. Esse parâmetro é necessário e não pode ser NULL. |
FileObject | [in] Somente para FltFsControlFile . Um ponteiro de objeto de arquivo para o arquivo ou diretório que é o destino dessa solicitação. Esse parâmetro é necessário e não pode ser NULL. |
FileHandle | [in] Somente para ZwFsControlFile . Identificador de arquivo do arquivo ou diretório que é o destino dessa solicitação. Esse parâmetro é necessário e não pode ser NULL. |
IoStatusBlock | [out] Somente para ZwFsControlFile . Ponteiro para uma estrutura IO_STATUS_BLOCK que contém o status final da solicitação. |
FsControlCode | [in] Defina como FSCTL_REARRANGE_FILE. |
Inputbuffer | [in] Confira Parâmetros IOCTL. |
InputBufferLength | [in] Confira Parâmetros IOCTL. |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 1809 |
Cabeçalho | ntifs.h |