Compartir a través de


FSCTL_REARRANGE_FILE IOCTL (ntifs.h)

FSCTL_REARRANGE_FILE reorganiza la asignación dentro del archivo, moviendo clústeres de un intervalo de origen contiguo solicitado dentro de un archivo a otra ubicación dentro del mismo archivo.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

Puntero a una estructura de REARRANGE_FILE_DATA que describe la asignación que se va a reorganizar. (Para los autores de llamadas de 32 bits, el búfer de entrada es un puntero a una estructura de REARRANGE_FILE_DATA32 ).

Longitud del búfer de entrada

Tamaño en bytes del búfer de entrada.

Búfer de salida

Ninguno; se establece en NULL.

Longitud del búfer de salida

Establecer en cero.

Bloque de estado

Valores devueltos

FSCTL_REARRANGE_FILE devuelve STATUS_SUCCESS tras completarse correctamente; de lo contrario, devuelve un código NTSTATUS, como uno de los siguientes.

Código de retorno Significado
STATUS_ACCESS_DENIED Solo se permiten llamadas en modo kernel.
STATUS_BUFFER_TOO_SMALL La longitud del búfer de entrada especificada es menor que sizeof(REARRANGE_FILE_DATA).
STATUS_PENDING La finalización de la operación está pendiente.

Comentarios

Los parámetros de solicitud contienen desplazamientos de bytes de archivo de origen y de destino, y longitud en bytes de la región de origen que se va a mover, todos los cuales deben estar alineados con el clúster.

  • Si mueve los clústeres hacia abajo, el desplazamiento del archivo de destino indica el punto en el que se debe alinear el límite inferior del intervalo de origen móvil.
  • Si mueve los clústeres hacia arriba, el desplazamiento del archivo de destino indica el punto en el que se debe alinear el límite superior del intervalo de origen.

En ambos casos, el desplazamiento de destino indica que el intervalo de origen debe insertarse antes del clúster que comienza en el desplazamiento de destino, la distinción que fuerza la restricción de que el tamaño de asignación permanece fijo.

A diferencia de FSCTL_SHUFFLE_FILE, FSCTL_REARRANGE_FILE no permite agregar asignaciones que contengan datos aleatorios.

Para realizar esta operación, llame a FltFsControlFile o ZwFsControlFile con los parámetros siguientes.

Parámetro Descripción
Instancia [in] Solo para FltFsControlFile . Puntero de instancia opaco para el autor de la llamada. Este parámetro es obligatorio y no puede ser NULL.
FileObject [in] Solo para FltFsControlFile . Puntero de objeto de archivo para el archivo o directorio que es el destino de esta solicitud. Este parámetro es obligatorio y no puede ser NULL.
FileHandle [in] Solo para ZwFsControlFile . Identificador de archivo del archivo o directorio que es el destino de esta solicitud. Este parámetro es obligatorio y no puede ser NULL.
IoStatusBlock [out] Solo para ZwFsControlFile . Puntero a una estructura de IO_STATUS_BLOCK que contiene el estado final de la solicitud.
FsControlCode [in] Establezca en FSCTL_REARRANGE_FILE.
InputBuffer [in] Consulte parámetros de IOCTL.
InputBufferLength [in] Consulte parámetros de IOCTL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1809
Encabezado ntifs.h

Consulte también

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile