FSCTL_FILE_LEVEL_TRIM IOCTL (winioctl.h)

Indica los intervalos dentro del archivo especificado que el sistema de almacenamiento no necesita almacenar.

Para realizar esta operación, llame a la función DeviceIoControl con los siguientes parámetros.

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

Comentarios

El código de control FSCTL_FILE_LEVEL_TRIM es una sugerencia para el sistema de almacenamiento subyacente. Cuando se ha recortado un intervalo de bytes, si ese intervalo se vuelve a leer más tarde, los datos devueltos pueden ser los datos originales antes de la operación de recorte( todos los ceros (0x00 bytes), todos los (0xff bytes) o una combinación de estos. Antes de pasar la operación de recorte al sistema de almacenamiento subyacente, los intervalos de entrada se reducen para alinearse con los límites de página (4096 bytes en ediciones de 32 bits y x64 de Windows, 8192 bytes en Itanium-Based ediciones de Windows).

Si se produce un error al procesar las entradas FILE_LEVEL_TRIM_RANGE que siguen a la estructura FILE_LEVEL_TRIM en el búfer de entrada al que apunta el parámetro lpInBuffer , el procesamiento se detiene y el miembro NumRangesProcessed de la estructura de FILE_LEVEL_TRIM_OUTPUT señalado por el parámetro lpOutBuffer indicará los intervalos que se procesaron correctamente. No se procesaron los intervalos entre NumRangesProcessed y el miembro NumRanges de la estructura FILE_LEVEL_TRIM .

El código de control de FSCTL_FILE_LEVEL_TRIM no es compatible con archivos cifrados o comprimidos (GetFileAttributes devuelve FILE_ATTRIBUTE_ENCRYPTED o FILE_ATTRIBUTE_COMPRESSED) y producirá un error con ERROR_INVALID_PARAMETER. Se admiten archivos dispersos (indicados por FILE_ATTRIBUTE_SPARSE_FILE), pero solo se pueden recortar los intervalos asignados. Se admiten archivos en volúmenes cifrados por la tecnología BitLocker, mientras que los archivos cifrados individualmente no.

El código de control FSCTL_FILE_LEVEL_TRIM no participa en transacciones. Si se procesa un código de control de FSCTL_FILE_LEVEL_TRIM durante una transacción y se anula la transacción, el recorte no se revertirá con la transacción.

Los intervalos que se recortan correctamente se quitarán de la memoria caché del sistema de archivos.

Los intervalos que se recortan pueden estar más allá de la longitud de datos válida (VDL) hasta el final del archivo (EOF).

En Windows 8 y Windows Server 2012, este código es compatible con las siguientes tecnologías.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0
Conmutación por error transparente (TFO) de SMB 3.0
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO)
Sistema de archivos de Volumen compartido de clúster (CsvFS)
Sistema de archivos resistente a errores (ReFS) No

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Encabezado winioctl.h (incluye Windows.h)

Consulte también