FSCTL_GET_VOLUME_BITMAP IOCTL (winioctl.h)

Recupera una bitmap di cluster occupati e disponibili in un volume.

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

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

Commenti

Il codice di controllo FSCTL_GET_VOLUME_BITMAP recupera una struttura di dati che descrive lo stato di allocazione di ogni cluster nel file system dall'LCN richiesto all'ultimo cluster nel volume. La bitmap usa un bit per rappresentare ogni cluster:

  • Il valore 1 indica che il cluster viene allocato (in uso).
  • Il valore 0 indica che il cluster non è allocato (gratuito).

Si noti che la bitmap rappresenta un punto in tempo e può essere errata non appena è stata scritta se il volume ha attività di scrittura. È quindi possibile tentare di spostare un cluster in un cluster allocato, nonostante una bitmap recente che indica che il cluster non è assegnato. I programmi che usano la funzione DeviceIoControl con il codice di controllo FSCTL_MOVE_FILE devono essere preparati per questa possibilità.

L'handle usato qui deve essere un handle volume ed è stato aperto con qualsiasi accesso. Si noti che solo gli amministratori possono aprire handle di volume.

LCN iniziale nel buffer di input può essere arrotondato prima che venga calcolata la bitmap. Il limite di arrotondamento dipende dal file system.

Per le implicazioni dell'I/O sovrapposta in questa operazione, vedere la sezione Osservazioni dell'argomento DeviceIoControl .

Questa operazione allinea la bitmap restituita su un limite di pagina.

Windows Server 2003 e Windows XP: Questa operazione allinea la bitmap restituita su un limite di byte.

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

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

Requisiti

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

Vedi anche