FSCTL_GET_VOLUME_BITMAP IOCTL (winioctl.h)

Récupère une bitmap de clusters occupés et disponibles sur un volume.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to volume
  FSCTL_GET_VOLUME_BITMAP,      // 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_GET_VOLUME_BITMAP récupère une structure de données qui décrit l’état d’allocation de chaque cluster dans le système de fichiers du LCN de départ demandé au dernier cluster sur le volume. La bitmap utilise un bit pour représenter chaque cluster :

  • La valeur 1 indique que le cluster est alloué (en cours d’utilisation).
  • La valeur 0 indique que le cluster n’est pas alloué (gratuit).

Notez que la bitmap représente un point dans le temps et qu’elle peut être incorrecte dès qu’elle a été lue si le volume a une activité d’écriture. Ainsi, il est possible de tenter de déplacer un cluster vers un cluster alloué en dépit d’une image bitmap récente indiquant que le cluster n’est pas alloué. Les programmes utilisant la fonction DeviceIoControl avec le code de contrôle FSCTL_MOVE_FILE doivent être préparés pour cette possibilité.

Le handle utilisé ici doit être un handle de volume et avoir été ouvert avec n’importe quel accès. Notez que seuls les administrateurs peuvent ouvrir les handles de volume.

Le LCN de départ dans la mémoire tampon d’entrée peut être arrondi vers le bas avant le calcul de la bitmap. La limite d’arrondi dépend du système de fichiers.

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

Cette opération aligne la bitmap qu’elle retourne sur une limite de page.

Windows Server 2003 et Windows XP : Cette opération aligne la bitmap qu’elle retourne sur une limite d’octets.

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 No
Basculement transparent SMB 3.0 (TFO) No
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) No
Système de fichiers du volume partagé de cluster (CsvFS) Oui

Configuration requise

Condition requise Valeur
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