FSCTL_FILE_LEVEL_TRIM IOCTL (winioctl.h)
Indique les plages dans le fichier spécifié qui n’ont pas besoin d’être stockées par le système de stockage.
Pour effectuer cette opération, appelez la fonction DeviceIoControl avec les paramètres suivants.
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
);
Remarques
Le code de contrôle FSCTL_FILE_LEVEL_TRIM est un indicateur pour le système de stockage sous-jacent. Lorsqu’une plage d’octets a été supprimée, si cette plage est ensuite lue à nouveau, les données retournées peuvent être les données d’origine avant l’opération de découpage : tous les zéros (0x00 octets), tous les (0xff octets) ou une combinaison de ceux-ci. Avant que l’opération de découpage ne soit passée au système de stockage sous-jacent, les plages d’entrée sont réduites pour s’aligner sur les limites de page (4 096 octets sur les éditions 32 bits et x64 de Windows, 8 192 octets sur Itanium-Based éditions de Windows).
Si une erreur se produit lors du traitement des entrées FILE_LEVEL_TRIM_RANGE qui suivent la structure FILE_LEVEL_TRIM dans la mémoire tampon d’entrée pointée par le paramètre lpInBuffer , les arrêts de traitement et le membre NumRangesProcessed de la structure FILE_LEVEL_TRIM_OUTPUT pointée par le paramètre lpOutBuffer indique les plages qui ont été traitées avec succès. Les plages entre NumRangesProcessed et le membre NumRanges de la structure FILE_LEVEL_TRIM n’ont pas été traitées.
Le code de contrôle FSCTL_FILE_LEVEL_TRIM n’est pas compatible avec les fichiers chiffrés ou compressés (GetFileAttributes retourne FILE_ATTRIBUTE_ENCRYPTED ou FILE_ATTRIBUTE_COMPRESSED) et échoue avec ERROR_INVALID_PARAMETER. Les fichiers partiellement alloués (indiqués par FILE_ATTRIBUTE_SPARSE_FILE) sont pris en charge, mais seules les plages qui ont été allouées peuvent être supprimées. Les fichiers sur les volumes chiffrés par la technologie BitLocker sont pris en charge, contrairement aux fichiers chiffrés individuellement.
Le code de contrôle FSCTL_FILE_LEVEL_TRIM ne participe pas aux transactions. Si un code de contrôle FSCTL_FILE_LEVEL_TRIM est traité pendant une transaction et que la transaction est abandonnée, le découpage n’est pas restauré avec la transaction.
Les plages qui sont correctement supprimées sont supprimées du cache du système de fichiers.
Les plages qui sont supprimées peuvent dépasser la longueur de données valide (VDL) jusqu’à la fin du fichier (EOF).
Dans Windows 8 et Windows Server 2012, ce code est pris en charge par les technologies suivantes.
Technologie | Prise en charge |
---|---|
Protocole Server Message Block (SMB) 3.0 | Oui |
Basculement transparent SMB 3.0 (TFO) | Oui |
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) | Oui |
Système de fichiers du volume partagé de cluster (CsvFS) | Oui |
Système de fichiers résilient (ReFS) | No |
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau uniquement] |
En-tête | winioctl.h (inclure Windows.h) |