Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Имя устройства


Автор: nda 2.5.2014, 13:02
Народ подскажите как узнать имя диска по названию устройства.
WD My Passport 074A USB Device соответствует диску H:\
или наоборот зная имя диска узнать имя устройства

Автор: navodri 23.7.2014, 11:04
Просто не будет. Есть вариант с библиотекой SetupAPI.

Пример вместе с SetupAPI...

Автор: kami 23.7.2014, 12:34
Цитата(nda @  2.5.2014,  13:02 Найти цитируемый пост)
имя диска по названию устройства.

Хммм. а у меня 1 диск Hitachi чего-то-там разделен на 4 диска. Какое имя из C: D: E: F: нужно вывести?
А второй hdd пока не форматирован, у него нет "имени диска". Как быть с ним?

Цитата(nda @  2.5.2014,  13:02 Найти цитируемый пост)
или наоборот зная имя диска узнать имя устройства

Есть диск Z, которого на самом деле нет (диспетчер управления дисками из админской панели его не видит), на самом деле это E:\Music\Enigmatic . Как быть с ним?

Автор: navodri 23.7.2014, 12:59
Не хотите разбираться с примером? Я понял. Тогда простой вариант чтения лейбла:

Код

function GetDriveVolume(myDisk: String): String;
var
 VolumeName, FileSystemName : array [0..MAX_PATH-1] of Char;
 VolumeSerialNo : DWord;
 MaxComponentLength,FileSystemFlags : DWord;
begin
 GetVolumeInformation(PChar(myDisk + ':\'),VolumeName, MAX_PATH, @VolumeSerialNo,
   MaxComponentLength, FileSystemFlags, FileSystemName, MAX_PATH);
 Result := VolumeName;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 caption :=  GetDriveVolume('D');
end;

Автор: Keeper89 2.8.2014, 20:30
Можно заюзать WMI. Проще это сделать, используя http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/ и например, класс http://msdn.microsoft.com/en-us/library/aa394515%28v=VS.85%29.aspx.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)