Condividi tramite


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

Impostare su zero.

Blocco di stato

Valori restituiti

FSCTL_REARRANGE_FILE restituisce STATUS_SUCCESS al completamento; 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.

Osservazioni

parametri request contengono offset di byte di file 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 i 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 in corrispondenza dell'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
dell'istanza di [in] Solo per FltFsControlFile. Puntatore a un'istanza opaca per il chiamante. Questo parametro è obbligatorio e non può essere NULL.
FileObject [in] Solo per FltFsControlFile. Puntatore all'oggetto file per il file o la directory che rappresenta la destinazione di questa richiesta. Questo parametro è obbligatorio e non può essere NULL.
fileHandle [in] Solo per ZwFsControlFile. Handle di file del file o della directory che rappresenta la 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.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 1809
intestazione ntifs.h

Vedere anche

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile