다음을 통해 공유


_getdiskfree

총 클러스터, 사용 가능한 클러스터, 클러스터당 섹터 및 섹터당 바이트와 같은 디스크 드라이브에 대한 정보를 가져옵니다.

Important

이 API는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다. 자세한 내용은 유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수를 참조하세요.

구문

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

매개 변수

drive
정보를 표시할 디스크 드라이브입니다.

driveinfo
드라이브에 대한 정보로 채워질 _diskfree_t 구조체입니다.

반환 값

함수가 성공할 경우 반환 값은 0입니다. 함수가 실패할 경우 반환 값은 오류 코드입니다. 운영 체제에서 반환되는 모든 오류에 대해 errno 값이 설정됩니다. 표시되는 errno오류 조건에 대한 자세한 내용은 상수(constants)를 참조 errno 하세요.

설명

_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 잘못된 드라이브이거나 drive 지정된 경우 이 함수는 NULL 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우 함수가 EINVAL를 반환하며 errnoEINVAL로 설정합니다. 올바른 드라이브의 범위는 0에서 26 사이입니다. drive 값 0은 현재 드라이브를 지정합니다. 따라서 1이 드라이브 A, 3이 드라이브 C 등을 가리키는 것과 같이 숫자가 영어 알파벳 문자에 매핑됩니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT의 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
_getdiskfree <direct.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

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

참고 항목

디렉터리 컨트롤