Partager via


FSCTL_REARRANGE_FILE IOCTL (ntifs.h)

FSCTL_REARRANGE_FILE réorganise l’allocation dans le fichier, en déplaçant les clusters d’une plage de sources contiguës demandée au sein d’un fichier vers un autre emplacement dans le même fichier.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Pointeur vers une structure REARRANGE_FILE_DATA qui décrit l’allocation à réorganiser. (Pour les appelants 32 bits, la mémoire tampon d’entrée est un pointeur vers une structure REARRANGE_FILE_DATA32 .)

Longueur de la mémoire tampon d’entrée

Taille en octets de la mémoire tampon d’entrée.

Mémoire tampon de sortie

Aucun; défini sur NULL.

Longueur de la mémoire tampon de sortie

Définit la valeur zéro.

Bloc d’état

Valeurs de retour

FSCTL_REARRANGE_FILE retourne STATUS_SUCCESS en cas de réussite de l’exécution ; sinon, il retourne un code NTSTATUS tel que l’un des éléments suivants.

Code de retour Signification
STATUS_ACCESS_DENIED Seuls les appels en mode noyau sont autorisés.
STATUS_BUFFER_TOO_SMALL La longueur de la mémoire tampon d’entrée spécifiée est inférieure à sizeof(REARRANGE_FILE_DATA).
STATUS_PENDING La fin de l’opération est en attente.

Remarques

Les paramètres de requête contiennent des décalages d’octets de fichier source et de fichier cible, ainsi que la longueur en octets de la région source à déplacer, qui doivent tous être alignés sur le cluster.

  • Si vous déplacez des clusters vers le bas, le décalage de fichier cible indique le point auquel la limite inférieure de la plage source mobile doit être alignée.
  • Si vous déplacez des clusters vers le haut, le décalage de fichier cible indique le point auquel la limite supérieure de la plage source doit être alignée.

Dans les deux cas, le décalage cible indique que la plage source doit être insérée avant le cluster qui commence au décalage cible, la distinction étant forcée par la contrainte selon laquelle la taille d’allocation reste fixe.

Contrairement à FSCTL_SHUFFLE_FILE, FSCTL_REARRANGE_FILE n’autorise pas l’ajout d’allocations contenant des données aléatoires.

Pour effectuer cette opération, appelez FltFsControlFile ou ZwFsControlFile avec les paramètres suivants.

Paramètre Description
Instance [in] Pour FltFsControlFile uniquement. Pointeur de instance opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.
FileObject [in] Pour FltFsControlFile uniquement. Pointeur d’objet de fichier pour le fichier ou le répertoire qui est la cible de cette demande. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.
FileHandle [in] Pour ZwFsControlFile uniquement. Handle de fichier du fichier ou du répertoire qui est la cible de cette demande. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.
IoStatusBlock [out] Pour ZwFsControlFile uniquement. Pointeur vers une structure de IO_STATUS_BLOCK qui contient le status final de la demande.
FsControlCode [in] Définissez sur FSCTL_REARRANGE_FILE.
InputBuffer [in] Consultez Paramètres IOCTL.
InputBufferLength [in] Consultez Paramètres IOCTL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1809
En-tête ntifs.h

Voir aussi

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile