Aracılığıyla paylaş


_getdiskfree

Toplam kümeler, kullanılabilir kümeler, küme başına kesimler ve kesim başına bayt sayısı gibi bir disk sürücüsü hakkında bilgi edinin.

Önemli

Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.

Sözdizimi

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

Parametreler

drive
Bilgi almak istediğiniz disk sürücüsü.

driveinfo
_diskfree_t Sürücü hakkındaki bilgilerle doldurulacak bir yapı.

Dönüş değeri

İşlev başarılı olursa, dönüş değeri sıfır olur. İşlev başarısız olursa, dönüş değeri hata kodudur. değer errno , işletim sistemi tarafından döndürülen hatalar için ayarlanır. tarafından errnobelirtilen hata koşulları hakkında daha fazla bilgi için bkz errno . sabitler.

Açıklamalar

Yapı _diskfree_t Direct.h içinde tanımlanır.

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.
};

Bu işlev parametrelerini doğrular. driveinfo İşaretçi geçersiz bir sürücüyse NULL veya drive belirtiyorsa, bu işlev Parametre doğrulama bölümünde açıklandığı gibi geçersiz bir parametre işleyicisi çağırır. Yürütmenin devam etmesi için izin verilirse, işlevi döndürür EINVAL ve olarak EINVALayarlanırerrno. Geçerli sürücüler 0 ile 26 arasında değişir. drive 0 değeri geçerli sürücüyü belirtir; bundan sonra sayılar İngiliz alfabesinin harfleriyle eşler; 1, A sürücüsünü gösterir, 3 sürücü C'yi gösterir ve bu şekilde devam eder.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

Yordam Gerekli başlık
_getdiskfree <direct.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

Ayrıca bkz.

Dizin denetimi