_getdiskfree

Získejte informace o diskové jednotce, jako jsou celkové clustery, dostupné clustery, sektory na cluster a bajty na sektor.

Důležité

Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.

Syntaxe

unsigned _getdiskfree(
   unsigned drive,
   struct _diskfree_t * driveinfo
);

Parametry

drive
Disková jednotka, pro kterou chcete informace.

driveinfo
Struktura _diskfree_t , která se naplní informacemi o jednotce.

Vrácená hodnota

Pokud je funkce úspěšná, návratová hodnota je nula. Pokud funkce selže, návratová hodnota je kód chyby. Hodnota errno je nastavena pro všechny chyby, které vrací operační systém. Další informace o chybových podmínkách, které jsou označeny errno, naleznete v tématu errno konstanty.

Poznámky

Struktura _diskfree_t je definována v 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.
};

Tato funkce ověří své parametry. driveinfo Pokud je NULL ukazatel nebo drive určuje neplatnou jednotku, vyvolá tato funkce neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, funkce vrátí EINVAL a nastaví errno na EINVAL. Platné jednotky jsou v rozsahu od 0 do 26. Hodnota drive 0 určuje aktuální jednotku; potom čísla mapují na písmena anglické abecedy tak, že 1 označuje jednotku A, 3 označuje jednotku C a tak dále.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor
_getdiskfree <direct.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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

Viz také

Ovládací prvek adresář