2015-03-09 3 views
-1

Итак, вчера я спросил, как происходит определение точки монтирования, Мне удалось запустить его несколько, но некоторые сообщения, похоже, не проходят.Точное монтирование/демонтаж не обнаружено должным образом

При использовании кода найден in this question (click here) written by the user Aid Vllasaliu (me) мое приложение уведомляется Windows, всякий раз, когда задана точка монтирования (в данном случае «E:») установлен ... иногда ...

Точка монтирования «E: «в моем случае это SD-карта, вставленная в устройство чтения карт памяти USB SD.

Проблема Подход:

  1. Установка USB ридера SD Card БЕЗ SD-карты, вставленной дает уведомление GUID_IO_VOLUME_MOUNT, и он делает это каждую минуту или две

  2. как читатель карточки USB SD вставлен, я вставляю в него карту SD и получаю следующие уведомления: GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE, GUID_IO_VOLUME_FVE_STATUS_CHANGE и GUID_IO_VOLUME_MOUNT и 1 минута - GUID_IO_VOLUME_MOUNT - остановки обновления. Это кажется правильным.

  3. Когда я иду выбросить SD-карту, я получаю уведомления GUID_IO_VOLUME_LOCK и GUID_IO_VOLUME_UNLOCK. Хмммм ... не должен ли я также получить уведомление GUID_IO_VOLUME_DISMOUNT? Или что-то, что указывает на то, что точка монтирования была снята? Также снова начинается 1-минутный GUID_IO_VOLUME_MOUNT -update.

  4. Когда SD-карта снята с USB-устройства чтения карт SD и вставлена ​​снова, когда устройство SD Card Reader подключено, уведомление о точке монтирования не получено повторно. Я должен физически отключить SD Card Reader и снова подключить его. Зачем?

Проблема

Как получилось, что никакого уведомления отправляется Windows, когда демонтируется объем, выталкивается или что-нибудь в этой моде?

Что я сделал до сих пор

Я прочитал, перечитал и вновь перечитать статью MSDN о Device Events, а также искали образцы кода в Интернете, а также статьи о устройстве События, и даже посмотрел код C++, чтобы полностью понять, что может вызвать проблемы, которые у меня возникают.

ответ

0

Я тоже работаю над этой точной проблемой. Мое чтение (и экспериментирование), по-видимому, указывает на то, что вы можете получать только оповещенные GUID_IO_VOLUME_DISMOUNT устройства. Другими словами, вы можете запросить только это уведомление для определенного тома, который был установлен. Это не общее уведомление обо всех устройствах.

Я думаю, что для того, чтобы он работал для вашей ситуации, вы должны зарегистрировать его для своей точки монтирования, вашей USB-SD-карты, после ее установки. У меня еще больше экспериментов.

Смежные вопросы