_getdiskfree

Rufen Sie Informationen zu einem Datenträgerlaufwerk ab, z. B. Cluster insgesamt, verfügbare Cluster, Sektoren pro Cluster und Bytes pro Sektor.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).

Syntax

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

Parameter

drive
Das Laufwerk, zu dem Sie Informationen abrufen möchten.

driveinfo
Eine _diskfree_t-Struktur, die mit Informationen über den Datenträger aufgefüllt wird.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert „0“. Wenn die Funktion fehlerhaft ist, wird der Fehlercode als Rückgabewert ausgegeben. Der Wert errno wird für Fehler festgelegt, die durch das Betriebssystem zurückgegeben werden. Weitere Informationen zu Fehlerbedingungen, die durch errnoangegeben werden, finden Sie unter errno Konstanten.

Hinweise

Die _diskfree_t-Struktur wurde in „Direct.h“ definiert.

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

Diese Funktion überprüft ihre Parameter. Wenn der driveinfo Zeiger ein ungültiges Laufwerk ist NULL oder drive angibt, ruft diese Funktion einen ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt die Funktion EINVAL zurück und setzt errno auf EINVAL. Der gültige Laufwerksbereich liegt zwischen 0 und 26. Ein drive-Wert von „0“ gibt das aktuelle Laufwerk an. Danach werden Zahlen Buchstaben des englischen Alphabets zugeordnet, „1“ deutet demnach auf Laufwerk A, „3“ auf Laufwerk C usw. hin.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Anforderungen

Routine Erforderlicher Header
_getdiskfree <direct.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Siehe auch

Verzeichnissteuerelement