Partager via


_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

Voir aussi

Contrôle d’annuaire