FSCTL_FILE_LEVEL_TRIM IOCTL (winioctl.h)

Indica gli intervalli all'interno del file specificato che non devono essere archiviati dal sistema di archiviazione.

Per eseguire questa operazione, chiamare la funzione DeviceIoControl con i parametri seguenti.

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

Commenti

Il codice di controllo FSCTL_FILE_LEVEL_TRIM è un suggerimento per il sistema di archiviazione sottostante. Quando un intervallo di byte è stato tagliato, se tale intervallo viene letto di nuovo in un secondo momento, i dati restituiti potrebbero essere i dati originali prima dell'operazione di taglio, ovvero tutti gli zeri (0x00 byte), tutti quelli (0xff byte) o una combinazione di questi. Prima che l'operazione di taglio venga passata al sistema di archiviazione sottostante, gli intervalli di input vengono ridotti in modo da allinearsi ai limiti di pagina (4.096 byte in edizioni basate su 32 bit e x64 di Windows, 8.192 byte nelle edizioni Itanium-Based di Windows).

Se si verifica un errore durante l'elaborazione delle voci FILE_LEVEL_TRIM_RANGE che seguono la struttura FILE_LEVEL_TRIM nel buffer di input a cui punta il parametro lpInBuffer , l'elaborazione si arresta e il membro NumRangesProcessed della struttura FILE_LEVEL_TRIM_OUTPUT a cui punta il parametro lpOutBuffer indicherà gli intervalli elaborati correttamente. Gli intervalli tra NumRangesProcessed e il membro NumRanges della struttura FILE_LEVEL_TRIM non sono stati elaborati.

Il codice di controllo FSCTL_FILE_LEVEL_TRIM non è compatibile con i file crittografati o compressi (GetFileAttributes restituisce FILE_ATTRIBUTE_ENCRYPTED o FILE_ATTRIBUTE_COMPRESSED) e avrà esito negativo con ERROR_INVALID_PARAMETER. I file sparse (indicati da FILE_ATTRIBUTE_SPARSE_FILE) sono supportati, ma è possibile tagliare solo gli intervalli allocati. I file nei volumi crittografati dalla tecnologia BitLocker sono supportati, mentre i file crittografati singolarmente non sono.

Il codice di controllo FSCTL_FILE_LEVEL_TRIM non partecipa alle transazioni. Se un codice di controllo FSCTL_FILE_LEVEL_TRIM viene elaborato durante una transazione e la transazione viene interrotta, il rollback dell'operazione non verrà eseguito con la transazione.

Gli intervalli tagliati correttamente verranno rimossi dalla cache del file system.

Gli intervalli tagliati possono superare la lunghezza dei dati (VDL) valida fino alla fine del file (EOF).

In Windows 8 e Windows Server 2012 questo codice è supportato dalle tecnologie seguenti.

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0
Failover trasparente SMB 3.0 (TFO)
SMB 3.0 con condivisioni file di scalabilità orizzontale (SO)
File system del volume condiviso cluster (CsvFS)
Resilient File System (ReFS) No

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Intestazione winioctl.h (include Windows.h)

Vedi anche