일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- linux
- 포트폴리오
- MyThread
- do it c
- C++
- win32
- 핵심 요약
- 정처기 독학
- tips강좌
- 김성엽
- MyTread
- C언어
- 유료강좌
- MFC 예제
- ListBox
- 미가공
- 별찍기
- 도움말
- 실습
- Tipsware
- Time
- 마이크로소프트
- mfc 실습
- mysql
- C
- 정보처리기사
- SSG
- 충무창업큐브
- MFC
- visual
- Today
- Total
History
[MFC] 컴퓨터 드라이브 정보 가져오기 본문
드라이브 종류와 용량 정보를 나타내는 프로그램을 만들어 보기로 하자. 아래는 현재 내 컴퓨터에 있는 드라이브 및 디스크 용량 정보이다.

우선 드라이버 및 디스크 정보를 가지고 오고 싶으면 API함수 GetLogicalDriveStrings함수를 이용해서 버퍼 시스템에서 유효한 드라이브를 지정하는 문자열로 채우는 함수이다.
함수의 원형은 아래와 같다.
DWORD GetLogicalDriveStringsW(
[in] DWORD nBufferLength,
[out] LPWSTR lpBuffer
);
[in] nBufferLength
lpBuffer가 가리키는 버퍼의 최대 크기이다. 이 매개 변수가 0이면 lpBuffer 가 사용되지 않는다.
[out] lpBuffer
시스템의 유효한 각 드라이브와 추가 null 문자를 포함하는 일련의 null로 끝나는 문자열을 수신하는 버퍼에 대한 포인터이다.
각 문자열은 디바이스 이름이다.
반환 값
버퍼에 복사된 문자열의 길이(문자)이다.
이제 GetLogicalDriveStrings를 사용해서 시스템 정보에 대한 문자열 길이를 읽어오고 이 정보를 바탕으로 반복문을 수행하여 사용자의 컴퓨터에 있는 모든 정보를 탐색할 것이다.
한 개의 드라이브 명 문자열 길이는 4Byte이다. ex) L"C:\(null)" 그러므로 4개 문자씩 문자열의 포인터 위치를 증가시킨다.
그리고 GetDriveType 함수를 사용하여 GetLogicalDriveStrings에서 받아온 문자열의 정보가 어떤 드라이브인지
각 드라이브의 정보를 확인한다.
GetDriveType 함수는 디스크 드라이브가 이동식, 고정, CD - ROM, RAM 디스크 또는 네트워크 드라이브인지 여부를 확인한다.
함수의 원형은 아래와 같다.
UINT GetDriveTypeA(
[in, optional] LPCSTR lpRootPathName
);
반환 값
반환 값은 다음 값 중 하나일 수 있는 드라이브 유형을 지정합니다.
DRIVE_UNKNOWN0 | 드라이브 유형을 확인할 수 없습니다. |
DRIVE_NO_ROOT_DIR1 | 루트 경로가 잘못되었습니다. 예를 들어 지정된 경로에 탑재된 볼륨이 없습니다. |
DRIVE_REMOVABLE2 | 드라이브에 이동식 미디어가 있습니다. 예를 들어 플로피 드라이브, 썸 드라이브 또는 플래시 카드 판독기입니다. |
DRIVE_FIXED3 | 드라이브에 고정 미디어가 있습니다. 예를 들어 하드 디스크 드라이브 또는 플래시 드라이브입니다. |
DRIVE_REMOTE4 | 드라이브는 원격(네트워크) 드라이브입니다. |
DRIVE_CDROM5 | 드라이브는 CD-ROM 드라이브입니다. |
DRIVE_RAMDISK6 | 드라이브가 RAM 디스크입니다. |
이제 위에 있는 정보를 바탕으로 필자는 switch문으로 작성하여 각 문자열의 드라이브가 위의 반환값으로 들어왔는지 체크하면서 드라이브 용량을 계산했다.
디스크 용량을 받아오는 함수는 GetDiskFreeSpace함수를 이용해서 용량을 받아오고 계산을 진행했다.
GetDiskFreeSpace함수의 도움말은 아래 블로깅한 링크를 남기겠다.
[MFC] GetDiskFreeSpace 함수 도움말
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getdiskfreespacea?redirectedfrom=MSDN&f1url=%3FappId%3DDev16IDEF1%26l%3DKO-KR%26k%3Dk(FILEAPI%252FGetDiskFreeSpace)%3Bk(GetDiskFreeSpace)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%
hard-go-head.tistory.com
아래는 실행 결과이다.

'MFC > 개인 실습' 카테고리의 다른 글
[MFC] 달력 만들기-Step 1 (1) | 2023.01.30 |
---|---|
[MFC] 트레이 아이콘 사용하기 (0) | 2023.01.28 |
[MFC] 움직이는 막대 그래프 (0) | 2023.01.27 |
[MFC]Alpha 채널을 사용해서 투명한 배경의 Png 이미지 파일 만들기 - Step 1 (0) | 2023.01.18 |
[MFC] 마우스 커서가 있는 위치 실시간으로 확대해서 표시하기_Step2 (0) | 2022.12.12 |