Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Получение сведений о диске, таких как общее количество кластеров, доступных кластеров, секторов для каждого кластера и байтов в каждом секторе.
Внимание
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
unsigned _getdiskfree(
unsigned drive,
struct _diskfree_t * driveinfo
);
Параметры
drive
Диск, для которого требуются сведения.
driveinfo
Структура _diskfree_t, которая будет заполнена сведениями о диске.
Возвращаемое значение
Если вызов функции заканчивается удачно, возвращается нулевое значение. Если функция завершается с ошибкой, возвращается значение кода ошибки. Значение параметра errno задается для всех ошибок, возвращаемых операционной системой. Дополнительные сведения об условиях ошибки, указанных в errnoerrno константах.
Замечания
Структура _diskfree_t определена в файле 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.
};
Эта функция проверяет свои параметры. driveinfo Если указатель имеет NULL или drive задает недопустимый диск, эта функция вызывает недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, функция возвращает EINVAL и устанавливает для параметра errno значение EINVAL. Допустимый диапазон дисков: от 0 до 26. Значение drive, равное 0, означает текущий диск; таким образом, числа сопоставляются с буквами английского алфавита, при этом 1 указывает на диск А, 3 — на диск C и т. д.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
| Маршрут | Обязательный заголовок |
|---|---|
_getdiskfree |
<direct.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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