Udostępnij przez


_getdiskfree

Uzyskaj informacje o dysku, takim jak łączna liczba klastrów, dostępne klastry, sektory na klaster i bajty na sektor.

Ważne

Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.

Składnia

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

Parametry

drive
Dysk, dla którego chcesz uzyskać informacje.

driveinfo
Struktura _diskfree_t , która zostanie wypełniona informacjami o dysku.

Wartość zwracana

Jeśli funkcja powiedzie się, zwracana wartość to zero. Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to kod błędu. errno Wartość jest ustawiana dla błędów zwracanych przez system operacyjny. Aby uzyskać więcej informacji na temat warunków błędów, które są wskazywane przez errnoprogram , zobacz errno stałe.

Uwagi

Struktura jest definiowana _diskfree_t w pliku 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.
};

Ta funkcja weryfikuje jego parametry. driveinfo Jeśli wskaźnik jest NULL lub drive określa nieprawidłowy dysk, ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca EINVAL i ustawia wartość errnoEINVAL. Prawidłowe dyski wahają się od 0 do 26. Wartość drive 0 określa bieżący dysk; następnie cyfry mapować na litery alfabetu angielskiego, tak aby 1 wskazuje dysk A, 3 wskazuje dysk C itd.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
_getdiskfree <direct.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

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

Zobacz też

Kontrolka katalogu