_getdiskfree
Ottenere informazioni su un'unità disco, ad esempio cluster totali, cluster disponibili, settori per cluster e byte per settore.
Importante
Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
unsigned _getdiskfree(
unsigned drive,
struct _diskfree_t * driveinfo
);
Parametri
drive
L'unità disco per cui si desidera ottenere informazioni.
driveinfo
Una struttura _diskfree_t
che verrà popolata con informazioni sull'unità disco.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è zero. Se la funzione ha esito negativo, il valore restituito è il codice di errore. Il valore errno
è impostato per tutti gli errori restituiti dal sistema operativo. Per altre informazioni sulle condizioni di errore indicate da errno
, vedere errno
costanti.
Osservazioni:
La struttura _diskfree_t
è definita in Direct.h.
struct _diskfree_t {
unsigned total_clusters; // The total number of clusters, both used and available, on the disk.
unsigned avail_clusters; // The number of unused clusters on the disk.
unsigned sectors_per_cluster; // The number of sectors in each cluster.
unsigned bytes_per_sector; // The size of each sector in bytes.
};
Questa funzione convalida i relativi parametri. Se il driveinfo
puntatore è NULL
o drive
specifica un'unità non valida, questa funzione richiama un gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce EINVAL
e imposta errno
su EINVAL
. Le unità valide sono comprese tra 0 e 26. Un valore drive
pari a 0 specifica l'unità corrente; successivamente, i numeri vengono associati alle lettere dell'alfabeto inglese in modo che 1 indica l'unità A, 3 indica l'unità C e così via.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_getdiskfree |
<direct.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// crt_getdiskfree.c
// compile with: /c
#include <windows.h>
#include <direct.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
ULONG uDriveMask = _getdrives();
for (unsigned uDrive = 1; uDrive <= 26; ++uDrive)
{
if (uDriveMask & 1)
{
struct _diskfree_t df = { 0 };
unsigned uErr = _getdiskfree(uDrive, &df);
printf("\nDrive: %c\n", uDrive + 'A' - 1);
if (uErr == 0)
{
printf("\tTotal clusters: %11u\n", df.total_clusters);
printf("\tAvailable clusters: %11u\n", df.avail_clusters);
printf("\tSectors per cluster: %11u\n", df.sectors_per_cluster);
printf("\tBytes per sector: %11u\n", df.bytes_per_sector);
}
else
{
WCHAR errMsg[80];
unsigned uLen = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL,
uErr, 0, errMsg, sizeof(errMsg), NULL);
printf("%S\n", errMsg);
}
}
uDriveMask >>= 1;
}
}
Drive: C
Total clusters: 249754111
Available clusters: 160184686
Sectors per cluster: 8
Bytes per sector: 512