2010-05-17 3 views
3

드라이브의 이름이나 라벨을 원합니다. 예를 들어이름없는 드라이브의 레이블을 표시하는 방법은 무엇입니까?

function GetVolumeLabel(DriveChar: Char): string; 
var 
    NotUsed:  DWORD; 
    VolumeFlags: DWORD; 
    VolumeInfo: array[0..MAX_PATH] of Char; 
    VolumeSerialNumber: DWORD; 
    Buf: array [0..MAX_PATH] of Char; 
begin 
    GetVolumeInformation(PChar(DriveChar + ':\'), 
    Buf, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed, 
    VolumeFlags, nil, 0); 

    SetString(Result, Buf, StrLen(Buf)); { Set return result } 
    Result:=AnsiUpperCase(Result) 
end; 

, Windows 탐색기에서 바로 여기에 내 드라이브 :

나는이 기능을 사용

Local Disk (C:) 
Data (D:) 
DVD RW Drive (E:) 

코드의 출력 :

C: 
D: DATA 
E: 

라벨 C와 E는 비어 있습니다. 이름이없는 드라이브 (C 및 E)의 레이블을 표시하려면 어떤 winapi/function을 사용해야합니까?

답변

4

"로컬 디스크"와 "DVD RW 드라이브"는 볼륨 레이블이 없을 때 자리 표시 자로 사용됩니다. MSDN에서 :

레이블은 이 인식하기 쉽도록하기 위해, 일반적으로 최종 사용자가 볼륨에 할당하는 사용자에게 친숙한 이름입니다. 볼륨의 레이블은 이고 드라이브 문자는 둘 다 또는 둘 다 아닐 수 있습니다.

이 방법이 도움이되는지 확신 할 수 없지만 GetDriveType을 사용하고 반환 값을 기반으로 레이블을 생성하고자 할 수 있습니다. GetDriveType은 하드 드라이브, 이동식 드라이브 및 CD 유형 드라이브를 구별하지만 CD-ROM/CD-RW/DVD-ROM/DVD-RW 드라이브는 분리하지 않는다고 생각합니다.

관련 문제