FSCTL_SET_ZERO_DATA IOCTL (winioctl.h)
Preenche um intervalo especificado de um arquivo com zeros (0). Se o arquivo for esparso ou compactado, o sistema de arquivos NTFS poderá desalocar o espaço em disco no arquivo. Isso define o intervalo de bytes como zeros (0) sem estender o tamanho do arquivo.
Para executar essa operação, chame a função DeviceIoControl com os parâmetros a seguir.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to a file
FSCTL_SET_ZERO_DATA, // 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
Para obter as implicações de E/S sobreposta nesta operação, consulte a seção Comentários do tópico DeviceIoControl .
Se você usar a função WriteFile para gravar zeros (0) em um arquivo esparso, o sistema de arquivos alocará espaço em disco para os dados que você está gravando. Se você usar o código de controle FSCTL_SET_ZERO_DATA para gravar zeros (0) em um arquivo esparso e a região zero (0) for grande o suficiente, o sistema de arquivos poderá não alocar espaço em disco.
Se você usar o código de controle FSCTL_SET_ZERO_DATA para gravar zeros (0) em um arquivo não esparso, zeros (0) serão gravados no arquivo. O sistema aloca armazenamento em disco para todo o intervalo zero (0), que é equivalente a usar a função WriteFile para gravar zeros (0) em um arquivo.
Os carimbos de data/hora podem não ser atualizados corretamente para um arquivo remoto. Para garantir resultados consistentes, use E/S sem buffer.
No Windows 8 e no 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 | Sim |
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) | Sim |
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) | Sim |
ReFS (Sistema de Arquivos Resiliente) | Sim |
Requisitos
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) |