我想获得驱动器的名称或标签。
我使用这个功能:
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的标签是空的。我应该使用什么winapi /函数来显示未命名的驱动器(C和E)的标签?
答案 0 :(得分:4)
我认为当没有卷标时,“本地磁盘”和“DVD RW驱动器”用于占位符。来自MSDN:
标签是用户友好的名称 被分配给一个卷,通常由一个 最终用户,使其更容易 认识。卷可以有标签, 驱动器号,两者,或两者都没有。
不确定这是否有帮助,但您可能希望使用GetDriveType并根据返回值生成标签。虽然GetDriveType区分硬盘驱动器,可移动驱动器和CD类型驱动器,但我认为它不会在CD-ROM / CD-RW / DVD-ROM / DVD-RW驱动器之间分开。