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