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