Compartir a través de


FSCTL_MOVE_FILE IOCTL (winioctl.h)

Reubica uno o varios clústeres virtuales de un archivo de un clúster lógico a otro dentro del mismo volumen. Esta operación se usa durante la desfragmentación.

Para realizar esta operación, llame a la función DeviceIoControl con los siguientes parámetros.

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to volume
  FSCTL_MOVE_FILE,              // dwIoControlCode
  (LPVOID) lpInBuffer,          // MOVE_FILE_DATA structure
  (DWORD) nInBufferSize,        // size of input buffer
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Comentarios

El código de control FSCTL_MOVE_FILE reubica uno o varios clústeres virtuales de un archivo de un clúster lógico a otro dentro del mismo volumen. Si el archivo que se va a mover es un archivo disperso o comprimido, la granularidad del movimiento es de 16 clústeres; de lo contrario, la granularidad es un clúster.

Para marcar un archivo abierto para que no se desfragmente, llame a la función DeviceIoControl con el código de control FSCTL_MARK_HANDLE con MARK_HANDLE_PROTECT_CLUSTERS en el miembro HandleInfo de la estructura MARK_HANDLE_INFO pasada en el parámetro lpInBuffer .

Tenga en cuenta que el mapa de bits devuelto por la función DeviceIoControl con el código de control FSCTL_GET_VOLUME_BITMAP representa un momento dado y puede ser incorrecto en cuanto se haya leído si el volumen tiene actividad de escritura. Por lo tanto, es posible intentar mover un clúster a un clúster asignado a pesar de un mapa de bits reciente que indica que el clúster no está asignado. Los programas que usan FSCTL_MOVE_FILE deben estar preparados para esta posibilidad.

Para conocer las implicaciones de la E/S superpuesta en esta operación, consulte la sección Comentarios del tema DeviceIoControl .

Para obtener una lista de archivos, secuencias y tipos de flujo admitidos por el código de control de FSCTL_MOVE_FILE , consulte la sección Archivos, secuencias y tipos de flujo admitidos para la desfragmentación del tema Archivos de desfragmentación .

En Windows 8 y Windows Server 2012, este código es compatible con las siguientes tecnologías.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0 No
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de Volumen compartido de clúster (CsvFS)

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado winioctl.h (incluye Windows.h)

Consulte también