Как отобразить метку безымянного диска? - PullRequest
3 голосов
/ 17 мая 2010

Я хочу получить имя или метку диска.

Я использую эту функцию:

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)?

1 Ответ

4 голосов
/ 17 мая 2010

Я считаю, что «Локальный диск» и «DVD RW Drive» используются для заполнителей, когда нет меток тома. От MSDN :

Метка - это удобное имя, которое назначается на том, как правило, конечный пользователь, чтобы облегчить признать. Том может иметь метку, буква диска, оба или ни одного.

Не уверен, поможет ли это, но вы можете использовать GetDriveType и сгенерировать метки на основе возвращаемого значения. Хотя GetDriveType различает жесткие диски, съемные дисководы и дисководы типа CD, я не думаю, что он не разделяет дисководы CD-ROM / CD-RW / DVD-ROM / DVD-RW.

...