Bagikan melalui


_getdiskfree

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

Lihat juga

Kontrol direktori