FSCTL_SHRINK_VOLUME IOCTL (winioctl.h)

Indica que el volumen se va a preparar para realizar, confirmar o finalizar la operación de reducción.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to device
  FSCTL_SHRINK_VOLUME,          // dwIoControlCode
  (LPVOID) lpInBuffer,          // input buffer
  nInBufferSize,                // size of input buffer    
  NULL,                         // output buffer
  O,                            // size of output buffer
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Comentarios

Este código de control solo se admite en sistemas de archivos NTFS y RAW.

Para completar una operación de reducción, debe hacer lo siguiente:

  1. Llame a CreateFile para abrir un identificador en el volumen.
  2. Llame a FSCTL_SHRINK_VOLUME. Establezca el miembro ShrinkRequestType de la estructura SHRINK_VOLUME_INFORMATION en ShrinkPrepare. Establezca el miembro NewNumberOfSectors de la misma estructura en cero. Si esta llamada se realiza correctamente, el sistema de archivos no asignará clústeres más allá del final de la nueva longitud del volumen.
  3. Llame a FSCTL_MOVE_FILE en todos los archivos más allá del nuevo número de sectores y muévalos dentro del intervalo válido. Usted es responsable de mover los archivos que se ven afectados por la operación de reducción.
  4. Llame a FSCTL_SHRINK_VOLUME. Establezca el miembro ShrinkRequestType de la estructura SHRINK_VOLUME_INFORMATION en ShrinkCommit. Establezca el miembro NewNumberOfSectors de la misma estructura en cero. Si no se han movido todos los archivos más allá del final del nuevo tamaño de volumen, se produce un error en la llamada a STATUS_ALREADY_COMMITTED (ERROR_ACCESS_DENIED). De lo contrario, el sistema de archivos ahora se ha reducido.
  5. Llame a IOCTL_DISK_GROW_PARTITION. Establezca el miembro BytesToGrow de la estructura DISK_GROW_PARTITION en el número negativo que representa el número de bytes que se van a quitar.

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) Ver comentario

Solo se admite en el nodo que tiene NTFS montado.

Requisitos

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

Consulte también