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)

Confira também