Compartilhar via


FSCTL_SHRINK_VOLUME IOCTL (winioctl.h)

Sinaliza que o volume deve estar preparado para executar a operação de redução, a operação de redução deve ser confirmada ou a operação de redução deve ser encerrada.

Para executar essa operação, chame a função DeviceIoControl com os parâmetros a seguir.

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

Comentários

Esse código de controle só tem suporte em sistemas de arquivos NTFS e RAW.

Para concluir uma operação de redução, você deve:

  1. Chame CreateFile para abrir um identificador para o volume.
  2. Chame FSCTL_SHRINK_VOLUME. Defina o membro ShrinkRequestType da estrutura SHRINK_VOLUME_INFORMATION como ShrinkPrepare. Defina o membro NewNumberOfSectors da mesma estrutura como zero. Se essa chamada for bem-sucedida, o sistema de arquivos não alocará clusters além do final do novo comprimento do volume.
  3. Chame FSCTL_MOVE_FILE em todos os arquivos além do novo número de setores e mova-os dentro do intervalo válido. Você é responsável por mover todos os arquivos afetados pela operação de redução.
  4. Chame FSCTL_SHRINK_VOLUME. Defina o membro ShrinkRequestType da estrutura SHRINK_VOLUME_INFORMATION como ShrinkCommit. Defina o membro NewNumberOfSectors da mesma estrutura como zero. Se todos os arquivos além do final do novo tamanho do volume não tiverem sido movidos, a chamada falhará com STATUS_ALREADY_COMMITTED (ERROR_ACCESS_DENIED). Caso contrário, o sistema de arquivos agora foi reduzido.
  5. Chame IOCTL_DISK_GROW_PARTITION. Defina o membro BytesToGrow da estrutura DISK_GROW_PARTITION como o número negativo que representa o número de bytes a serem removidos.

Em Windows 8 e Windows Server 2012, esse código é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Ver comentário

Só há suporte no nó que tem NTFS montado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho winioctl.h (inclua Windows.h)

Confira também