Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Доп. информация об устройствах.


OlegNik ©   (2009-02-10 11:12:00) 

GetLogicalDrives
GetDriveType
спасибо спасибо.
Ну и еще вопрос. Как получить информацию такого рода.

контроллер IDE/ATAPI PCMCIA диск (H) или
Запоминающее устроиство для USB диск (I)


OlegNik   (2009-02-12 12:49:00) [1]

Свершилось делюсь и жду критиков.
Подход следующий.

Получаю список всех дисков: GetLogicalDriveStrings();

Лезу в  реестр
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCMCIA
за что спасибо clickmaker ©  (да открываю ключи только на чтение)
PCMCIA али USB здесь не суть.
Собираю имена всех подкаталогов.
Далее по списку дисков через DeviceIoControl получаю паспорт диска
(производитель и т.д.)
Далее сравнеие паспортов диска с списком из реестра. Совпало хорошо
PCMCIA(USB) есть нет плохо.
проверял на NT,XP (PCMCIA шт. 10 от разных производителей ну личную USB проверил проверку вынесла и PCMCIA тоже)


clickmaker   (2009-02-11 13:15:00) [2]

> винда это отслеживает. Но вот как?

plug-and-play
контроллер устройства оповещает систему, что в него что-то воткнули.
Винда в свою очередь рассылает сообщение WM_DEVICECHANGE

вообще, много чего можно узнать из реестра
отсюда, например
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum


OlegNik   (2009-02-11 12:26:00) [3]

раскрою тему:
мне необходимо работать с ВЗУ тип PCMCIA.
При этом программа в автоматически должна определять есть ли такое
или его нет на компе (я не имею слот а саму флеш).
Изыскания решения ввели меня в уныние и вот почему.
Используя функции
  I :=  GetLogicalDriveStrings()
  и далее по I
   GetDriveType();
  вроде и однозначно отвечала мне кто есть кто.
  До определенного момента. вставил флеш размером 512м, а она
возьми да и определись  как основной диск (DRIVE_FIXED). Ну и попутно
мелькнула мысль что USB флеш будет DRIVE_REMOVABLE, а это уже не
моя задача.
  Понятно что винда это отслеживает. Но вот как? Может кто ответит. а?


Smile   (2009-02-10 19:28:00) [4]

Заляни сюда
http://www.delphi3000.com/articles/article_4841.asp?SK=USB
и сюда
http://www.delphi3000.com/articles/article_4077.asp?SK=USB
возможно, что и найдешь что-то по интересующему тебя вопросу.


Eraser   (2009-02-10 17:34:00) [5]

> А подробние можно.

можно - msdn.com


OlegNik   (2009-02-10 14:09:00) [6]


> через WMI, наверно
> класс Win32_DiskDrive

А подробние можно.


clickmaker   (2009-02-10 11:59:00) [7]

через WMI, наверно
класс Win32_DiskDrive


Наверх

Титульная страница Поиск, карта сайта Написать письмо