_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 errno
belirtilen 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 EINVAL
ayarlanı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