Получить от ОС сообщение о монтирование устроиства?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Получить от ОС сообщение о монтирование устроиства?

Сообщение McLion »

Всем привет,

кто подскажет, как надежно получать от Windows сообщение о монтирование (mount) или размонтирование (umount) устройства?

Пасиб!
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

McLion
Когда-то давно делал, чтобы ловить за руку юзеров, подключающих флэшку с вирусом, поскольку отключить флэшки совсем было нельзя.
Если коротко - создать невидимое окно с минимумом аттрибутов и отлавливать в нём (в процедуре WndProc) единственное сообщение - WM_CHANGEDEVICE.
wParam = DBT_DEVICEARRIVAL - флэшка подключена,
wParam = DBT_DEVICEREMOVECOMPLETE - флэшка отключена.
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Это не работает если подсоединен Card Reader и втыкается флэш-карта. Device в этом случае не меняется. Поэтому я ищу код, который узнает монтирование.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Есть один интересненький файл в винде. По огромным просьбам мелкие выложили его краткое применение.
Он позволяет запоминать все необходимые устройства. А потом не позволяет подключать что либо из юсб подобного. Т.е. на файл ставится ограничение на запись (только чтение).

К чему я. В момент подключения винда в этот файл сбрасывает информацию о устройстве и его статусе. Только, хоть убей, уже не помню имя файла. Давно я винду не смотрел :)
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

McLion писал(а):кто подскажет, как надежно получать от Windows сообщение о монтирование (mount) или размонтирование (umount) устройства?

Любые события загоняются в журналы. Можно создать свои задания на их основе (код события не указывай). Вот навскидку:
Apps / TWinUI
Kernel-PnP
DeviceSetupManager
PushNotifications-Platform
UserPnp

Точнее сам ищи какие журналы протоколируют твой кард-ридер.
На двух флешках и PSP работает, причем пишется в разные журналы. Отчего так не знаю, но пишутся все.

McLion писал(а):Пасиб!

Фу быть таким.
http://evo-lutio.livejournal.com/69924.html
Ответить