Обнаружить запрос на извлечение съемного носителя в службе Windows - PullRequest
2 голосов
/ 24 января 2011

У меня есть служба Windows, написанная на C # с платформой .NET 2.0, которая использует FileSystemWatcher для мониторинга определенных каталогов на предмет изменений.Некоторые из этих каталогов могут находиться на съемных носителях, таких как USB-накопитель.Когда новый диск подключен к системе, я получаю уведомление через запрос WMI и могу установить новый FileSystemWatcher.Все это хорошо работает.

Сложность в том, что я хочу, чтобы пользователь мог извлечь диск с помощью приложения Windows «Безопасное извлечение устройства», но Windows сообщает, что диск занят, потому что я наблюдаю за ним.через FileSystemWatcher и сообщает пользователю, что диск не может быть удален.

Тогда мой вопрос: как моя служба Windows может узнать, когда пользователь запрашивает извлечение, чтобы я мог удалить монитор файловой системы и разрешить запрос?преуспеть?

1 Ответ

2 голосов
/ 24 января 2011

Вам необходимо зарегистрироваться, чтобы получать событие широковещательной рассылки запроса на удаление устройства (DBT_DEVICEQUERYREMOVE) через Windows-интерфейс RegisterDeviceNotification, как объяснено здесь .

Насколько я знаю, нет.Класс NET Framework, который оборачивает эту функциональность, поэтому вам нужно будет сделать это с помощью p / Invoke.

...