FSCTL_FILE_LEVEL_TRIM IOCTL (winioctl.h)

Indica intervalos dentro do arquivo especificado que não precisam ser armazenados pelo sistema de armazenamento.

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_FILE_LEVEL_TRIM,            // dwIoControlCode
  (LPVOID) lpInBuffer,              // Input buffer
  (DWORD) nInBufferSize,            // Size of input buffer
  (LPVOID) lpOutBuffer,             // Output buffer
  (DWORD) nOutBufferSize,           // Size of output buffer
  (LPDWORD) lpBytesReturned,        // Number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

Comentários

O código de controle FSCTL_FILE_LEVEL_TRIM é uma dica para o sistema de armazenamento subjacente. Quando um intervalo de bytes tiver sido cortado, se esse intervalo for lido mais tarde novamente, os dados retornados poderão ser os dados originais antes da operação de corte — todos os zeros (0x00 bytes), todos os (0xff bytes) ou uma combinação desses. Antes que a operação de corte seja passada para o sistema de armazenamento subjacente, os intervalos de entrada são reduzidos para alinhar com limites de página (4.096 bytes em edições baseadas em 32 bits e x64 do Windows, 8.192 bytes em edições Itanium-Based do Windows).

Se ocorrer um erro ao processar as entradas de FILE_LEVEL_TRIM_RANGE que seguem a estrutura FILE_LEVEL_TRIM no buffer de entrada apontado pelo parâmetro lpInBuffer , o processamento será interrompido e o membro NumRangesProcessed da estrutura FILE_LEVEL_TRIM_OUTPUT apontada pelo parâmetro lpOutBuffer indicará os intervalos processados com êxito. Quaisquer intervalos entre NumRangesProcessed e o membro NumRanges da estrutura FILE_LEVEL_TRIM não foram processados.

O código de controle FSCTL_FILE_LEVEL_TRIM não é compatível com arquivos criptografados ou compactados (GetFileAttributes retorna FILE_ATTRIBUTE_ENCRYPTED ou FILE_ATTRIBUTE_COMPRESSED) e falhará com ERROR_INVALID_PARAMETER. Há suporte para arquivos esparsos (indicados por FILE_ATTRIBUTE_SPARSE_FILE), mas somente os intervalos alocados podem ser cortados. Há suporte para arquivos em volumes criptografados pela tecnologia BitLocker, enquanto arquivos criptografados individualmente não são.

O código de controle FSCTL_FILE_LEVEL_TRIM não participa de transações. Se um código de controle FSCTL_FILE_LEVEL_TRIM for processado durante uma transação e a transação for anulada, o corte não será revertido com a transação.

Os intervalos cortados com êxito serão removidos do cache do sistema de arquivos.

Os intervalos cortados podem estar além do VDL (comprimento de dados) válido até o EOF (fim do arquivo).

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

Requisitos

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

Confira também