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

IRP_MJ_DEVICE_CONTROL

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

Confira também

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile