FSCTL_SET_ZERO_DATA IOCTL (winioctl.h)

Remplit avec des zéros (0) une plage spécifiée d’un fichier. Si le fichier est partiellement alloué ou compressé, le système de fichiers NTFS peut libérer de l’espace disque dans le fichier. Cela définit la plage d’octets sur zéros (0) sans étendre la taille du fichier.

Pour effectuer cette opération, appelez la fonction DeviceIoControl avec les paramètres suivants.

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

Remarques

Pour connaître les implications des E/S qui se chevauchent sur cette opération, consultez la section Remarques de la rubrique DeviceIoControl .

Si vous utilisez la fonction WriteFile pour écrire des zéros (0) dans un fichier partiellement alloué, le système de fichiers alloue de l’espace disque pour les données que vous écrivez. Si vous utilisez le code de contrôle FSCTL_SET_ZERO_DATA pour écrire des zéros (0) dans un fichier épars et que la région zéro (0) est suffisamment grande, le système de fichiers risque de ne pas allouer d’espace disque.

Si vous utilisez le code de contrôle FSCTL_SET_ZERO_DATA pour écrire des zéros (0) dans un fichier non partiellement alloué, les zéros (0) sont écrits dans le fichier. Le système alloue le stockage sur disque pour l’ensemble de la plage de zéro (0), ce qui équivaut à utiliser la fonction WriteFile pour écrire des zéros (0) dans un fichier.

Les horodatages peuvent ne pas être mis à jour correctement pour un fichier distant. Pour garantir des résultats cohérents, utilisez les E/S sans débogage.

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

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête winioctl.h (inclure Windows.h)

Voir aussi