Partilhar via


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

Definido 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.

Observações

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 do 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 de FSCTL_SHUFFLE_FILE, FSCTL_REARRANGE_FILE não permite adicionar alocações que contêm dados aleatórios.

Para executar essa operação, chame FltFsControlFile ou ZwFsControlFile com os parâmetros a seguir.

Parâmetro Descrição
da Instância de [in] Para FltFsControlFile. Um ponteiro de instância opaco para o chamador. Esse parâmetro é necessário e não pode ser NULL.
FileObject [in] 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] Para ZwFsControlFile. Identificador de arquivo do arquivo ou diretório que é o destino desta solicitação. Esse parâmetro é necessário e não pode ser NULL.
IoStatusBlock [out] Para ZwFsControlFile. Ponteiro para uma estrutura IO_STATUS_BLOCK que contém o status final da solicitação.
FsControlCode [in] Definido como FSCTL_REARRANGE_FILE.
InputBuffer [in] Consulte os parâmetros IOCTL.
InputBufferLength [in] Consulte os parâmetros IOCTL.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10, versão 1809
cabeçalho ntifs.h

Consulte também

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile