FSCTL_REARRANGE_FILE IOCTL (ntifs.h)

FSCTL_REARRANGE_FILE riorganizzare l'allocazione all'interno del file, spostando i cluster da un intervallo di origine contiguo richiesto all'interno di un file in un altro percorso all'interno dello stesso file.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Puntatore a una struttura REARRANGE_FILE_DATA che descrive l'allocazione da riorganiare. Per i chiamanti a 32 bit, il buffer di input è un puntatore a una struttura REARRANGE_FILE_DATA32 .

Lunghezza del buffer di input

Dimensioni in byte del buffer di input.

Buffer di output

Nessuno; impostato su NULL.

Lunghezza del buffer di output

Imposta su zero.

Blocco dello stato

Valori restituiti

FSCTL_REARRANGE_FILE restituisce STATUS_SUCCESS al completamento positivo; in caso contrario, restituisce un codice NTSTATUS, ad esempio uno dei seguenti.

Codice restituito Significato
STATUS_ACCESS_DENIED Sono consentite solo chiamate in modalità kernel.
STATUS_BUFFER_TOO_SMALL La lunghezza del buffer di input specificata è inferiore a sizeof(REARRANGE_FILE_DATA).
STATUS_PENDING Il completamento dell'operazione è in sospeso.

Commenti

I parametri della richiesta contengono offset di byte di origine e di destinazione e lunghezza in byte dell'area di origine da spostare, tutti i quali devono essere allineati al cluster.

  • Se si spostano cluster verso il basso, l'offset del file di destinazione indica il punto in cui deve essere allineato il limite inferiore dell'intervallo di origine mobile.
  • Se si spostano cluster verso l'alto, l'offset del file di destinazione indica il punto in cui deve essere allineato il limite superiore dell'intervallo di origine.

In entrambi i casi, l'offset di destinazione indica che l'intervallo di origine deve essere inserito prima del cluster che inizia con l'offset di destinazione, la distinzione forzata dal vincolo che le dimensioni di allocazione rimangono fisse.

A differenza di FSCTL_SHUFFLE_FILE, FSCTL_REARRANGE_FILE non consente l'aggiunta di allocazioni contenenti dati casuali.

Per eseguire questa operazione, chiamare FltFsControlFile o ZwFsControlFile con i parametri seguenti.

Parametro Descrizione
Istanza [in] Solo per FltFsControlFile . Puntatore opaco dell'istanza per il chiamante. Questo parametro è obbligatorio e non può essere NULL.
FileObject [in] Solo per FltFsControlFile . Puntatore a oggetti file per il file o la directory di destinazione di questa richiesta. Questo parametro è obbligatorio e non può essere NULL.
FileHandle [in] Solo per ZwFsControlFile . Handle file del file o della directory di destinazione di questa richiesta. Questo parametro è obbligatorio e non può essere NULL.
IoStatusBlock [out] Solo per ZwFsControlFile . Puntatore a una struttura IO_STATUS_BLOCK che contiene lo stato finale della richiesta.
FsControlCode [in] Impostare su FSCTL_REARRANGE_FILE.
Inputbuffer [in] Vedere parametri IOCTL.
InputBufferLength [in] Vedere parametri IOCTL.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1809
Intestazione ntifs.h

Vedi anche

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile