Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dapatkan informasi tentang drive disk seperti total kluster, kluster yang tersedia, sektor per kluster, dan byte per sektor.
Penting
API ini tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.
Sintaks
unsigned _getdiskfree(
unsigned drive,
struct _diskfree_t * driveinfo
);
Parameter
drive
Disk drive yang Anda inginkan informasinya.
driveinfo
Struktur _diskfree_t yang akan diisi dengan informasi tentang drive.
Nilai hasil
Jika fungsi berhasil, nilai yang dikembalikan adalah nol. Jika fungsi gagal, nilai yang dikembalikan adalah kode kesalahan. Nilai errno diatur untuk kesalahan apa pun yang dikembalikan oleh sistem operasi. Untuk informasi selengkapnya tentang kondisi kesalahan yang ditunjukkan oleh errno, lihat errno konstanta.
Keterangan
Struktur _diskfree_t didefinisikan dalam 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.
};
Fungsi ini memvalidasi parameternya. Jika pointer driveinfo adalah NULL atau drive menentukan drive yang tidak valid, fungsi ini memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan EINVAL dan mengatur errno ke EINVAL. Drive yang valid berkisar antara 0 hingga 26. drive Nilai 0 menentukan drive saat ini; setelah itu, angka dipetakan ke huruf alfabet bahasa Inggris sededingin 1 menunjukkan drive A, 3 menunjukkan drive C, dan sebagainya.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
| Rutin | Header yang diperlukan |
|---|---|
_getdiskfree |
<direct.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// crt_getdiskfree.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