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 source contiguë demandée dans 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éfini sur zéro.

Bloc d’état

Valeurs de retour

FSCTL_REARRANGE_FILE retourne STATUS_SUCCESS une fois l’achèvement réussi ; sinon, elle retourne un code NTSTATUS tel que l’un des éléments suivants.

Retourner le code Signification
STATUS_ACCESS_DENIED Seuls les appels en mode noyau sont autorisés.
STATUS_BUFFER_TOO_SMALL La longueur de mémoire tampon d’entrée spécifiée est inférieure à sizeof(REARRANGE_FILE_DATA).
STATUS_PENDING L’achèvement de l’opération est en attente.

Remarques

paramètres de requête contiennent des décalages d’octets de fichier source et 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 que 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 d’instance opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.
FileObject [in] Pour FltFsControlFile uniquement. Pointeur d’objet de fichier pour le fichier ou le répertoire qui est la cible de cette requête. Ce paramètre est obligatoire et ne peut pas être NULL.
FileHandle [in] Pour ZwFsControlFile uniquement. Handle de fichier du fichier ou du répertoire qui est la cible de cette requête. Ce paramètre est obligatoire et ne peut pas être NULL.
IoStatusBlock [out] Pour ZwFsControlFile uniquement. Pointeur vers une structure IO_STATUS_BLOCK qui contient l’état final de la requête.
FsControlCode [in] Défini sur FSCTL_REARRANGE_FILE.
InputBuffer [in] Consultez les paramètres IOCTL.
InputBufferLength [in] Consultez les paramètres IOCTL.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10, version 1809
d’en-tête ntifs.h

Voir aussi

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile