FSCTL_SET_COMPRESSION IOCTL (winioctl.h)
Define o estado de compactação de um arquivo ou diretório em um volume cujo sistema de arquivos dá suporte à compactação por arquivo e por diretório. Você pode usar FSCTL_SET_COMPRESSION para compactar ou descompactar um arquivo ou diretório nesse volume.
Para executar essa operação, chame a função DeviceIoControl com os parâmetros a seguir.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file or directory
FSCTL_SET_COMPRESSION, // dwIoControlCode
(LPVOID) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Comentários
O algoritmo de compactação LZNT1 é o único algoritmo de compactação implementado. Como resultado, o algoritmo de compactação LZNT1 é usado como o método de compactação DEFAULT.
Se o sistema de arquivos do volume que contém o arquivo ou diretório especificado não oferecer suporte a compactação por arquivo ou por diretório, a operação falhará.
A alteração do estado de compactação do arquivo ou diretório ocorre de forma síncrona com a chamada para DeviceIoControl.
Para recuperar o estado de compactação de um arquivo ou diretório, use o código de controle FSCTL_GET_COMPRESSION .
Para recuperar o atributo de compactação de um arquivo ou diretório, use a função GetFileAttributes . O atributo de compactação indica se um arquivo ou diretório é compactado. O estado de compactação indica se um arquivo ou diretório é compactado e, se for, o formato dos dados compactados.
Os diretórios não são realmente compactados por essa operação. Em vez disso, a operação define o estado padrão para arquivos criados no diretório a serem compactados.
Observe que os carimbos de data/hora podem não ser atualizados corretamente para um arquivo remoto. Para garantir resultados consistentes, use E/S sem cofres.
Há suporte para compactação de arquivos de um tamanho máximo não compactado de 30 gigabytes.
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 | Sim |
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) | Confira o comentário |
ReFS (Sistema de Arquivos Resiliente) | No |
CsvFs não dá suporte à criação de um diretório compactado. CsvFs permite tornar o arquivo compactado somente quando o arquivo é aberto exclusivamente por um nó. O Failover Transparente do SMB 3.0 e o Scale-Out não dão suporte a arquivos compactados NTFS. A chamada FSCTL não está bloqueada, mas não tem suporte."
Operações transacionadas
Não é possível alterar o estado de compactação de um arquivo aberto com CreateFileTransacted.Para obter mais informações sobre transações, consulte NTFS transacional.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Cabeçalho | winioctl.h (inclua Windows.h) |