_getdiskfree
Obtenez des informations sur un lecteur de disque, comme le nombre total de clusters, les clusters disponibles, les secteurs par cluster et les octets par secteur.
Important
Cette API ne peut pas être utilisée dans les applications qui s’exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.
Syntaxe
unsigned _getdiskfree(
unsigned drive,
struct _diskfree_t * driveinfo
);
Paramètres
drive
Lecteur de disque pour lequel vous voulez obtenir des informations.
driveinfo
Structure _diskfree_t
qui sera remplie avec les informations sur le lecteur.
Valeur retournée
Si la fonction aboutit, la valeur de retour est égale à zéro. Si la fonction échoue, la valeur de retour est le code d'erreur. La valeur errno
est définie pour les erreurs retournées par le système d'exploitation. Pour plus d’informations sur les conditions d’erreur indiquées par errno
, consultez errno
les constantes.
Notes
La structure _diskfree_t
est définie dans 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.
};
Cette fonction valide ses paramètres. Si le driveinfo
pointeur est NULL
ou drive
spécifie un lecteur non valide, cette fonction appelle un gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à continuer, cette fonction retourne EINVAL
et définit à errno
à EINVAL
. Plage de lecteurs valide de 0 à 26. Avec la valeur 0, drive
désigne le lecteur actif ; après quoi, les nombres sont mappés aux lettres de l'alphabet anglais, si bien que 1 indique le lecteur A, 3 le lecteur C, etc.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Routine | En-tête requis |
---|---|
_getdiskfree |
<direct.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// 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