_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 errno
angegeben 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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der 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