Как получить уведомление, когда пользователь создает точку монтирования? - PullRequest
4 голосов
/ 22 октября 2008

Прежде всего, вот ограничения:

  • Должен работать на XP
  • Необходимо уведомить как о назначении буквы диска, так и о подключении тома в папку
  • Нельзя "разбудить" диск, если он спит.
  • Я бы предпочел не опрашивать диск.

Что я пробовал:

  1. Google
  2. Я посмотрел на WMI и класс Win32_LogicalDisk. Я могу определить, какие диски подключены к букве диска, а не те, которые подключены к папке. Классы Win32_Volume * и Win32_MountPoint были бы идеальными, но не доступны в XP.
  3. Я пытался опрашивать диски, используя FindFirstVolume & GetVolumePathNamesForVolumeName (хотя я бы предпочел этого не делать), но похоже, что диски должны быть раскручены, прежде чем он сможет дать мне информацию. И снова, эу, опрос.

Я рассматривал возможность использования перехвата API для перехвата вызовов SetVolumeMountPoint и DeleteVolumeMountPoint, но я не думаю, что это перехватит все, и, похоже, это может быть уродливым хаком в любом случае.

Итак, да, я ищу предложения:)

1 Ответ

2 голосов
/ 23 октября 2008

Перехват API на SetVolumeMountPoint должен позволить вам перехватывать монтирование томов. Я не уверен насчет сетевых ресурсов.

Но это не был бы "уродливый взлом". То, что вы пытаетесь сделать, это то, для чего перехват был встроен в Windows. Codeproject.com имеет отличные учебные пособия по перехвату API: http://www.codeproject.com/KB/system/hooksys.aspx

Итак, вы на самом деле изложили свое лучшее решение. Помните, что есть также отдельный API для букв дисков: http://nukz.net/reference/fileio/hh/winbase/fsys_6j8z.htm

Ваш проект звучит интересно. Обычно трояны и антивирус пытаются это сделать (и они также ловят сетевые ресурсы). Я лишь случайно знаком с этой темой, поэтому надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...