Как отобразить метку безымянного диска?
Я хочу получить имя или метку диска.
Я использую эту функцию:
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 Explorer:
Local Disk (C:)
Data (D:)
DVD RW Drive (E:)
Вывод кода:
C:
D: DATA
E:
Метки C и E пусты. Какую winapi/ функцию я должен использовать для отображения метки безымянного диска (C и E)?
1 ответ
Я считаю, что "Локальный диск" и "DVD RW Drive" используются для заполнителей, когда нет меток тома. Из MSDN:
Метка - это удобное имя, которое назначается тому, обычно конечным пользователем, чтобы его было легче распознать. Том может иметь метку, букву диска, оба или ни того, ни другого.
Не уверен, поможет ли это, но вы можете использовать GetDriveType и генерировать метки на основе возвращаемого значения. Хотя GetDriveType различает жесткие диски, съемные дисководы и дисководы типа CD, я не думаю, что он не разделяет дисководы CD-ROM/CD-RW/DVD-ROM/DVD-RW.