_getdiskfree
Uzyskaj informacje o dysku, takim jak łączna liczba klastrów, dostępne klastry, sektory na klaster i bajty na sektor.
Ważne
Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
unsigned _getdiskfree(
unsigned drive,
struct _diskfree_t * driveinfo
);
Parametry
drive
Dysk, dla którego chcesz uzyskać informacje.
driveinfo
Struktura _diskfree_t
, która zostanie wypełniona informacjami o dysku.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość to zero. Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to kod błędu. errno
Wartość jest ustawiana dla błędów zwracanych przez system operacyjny. Aby uzyskać więcej informacji na temat warunków błędów, które są wskazywane przez errno
program , zobacz errno
stałe.
Uwagi
Struktura jest definiowana _diskfree_t
w pliku 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.
};
Ta funkcja weryfikuje jego parametry. driveinfo
Jeśli wskaźnik jest NULL
lub drive
określa nieprawidłowy dysk, ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca EINVAL
i ustawia wartość errno
EINVAL
. Prawidłowe dyski wahają się od 0 do 26. Wartość drive
0 określa bieżący dysk; następnie cyfry mapować na litery alfabetu angielskiego, tak aby 1 wskazuje dysk A, 3 wskazuje dysk C itd.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_getdiskfree |
<direct.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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