Портативное устройство Windows — уведомлять о создании/копировании/удалении нового файла

Можно ли получать уведомления об удалении файла с / копировании на / запоминающем устройстве с помощью (IPortableDeviceEventCallback).

До сих пор меня уведомляли только о том, что флешка была отключена или ее имя было изменено пользователем извне.

Изменить: я заинтересован в получении WPD_EVENT_OBJECT_ADDEDevent.

IPortableDeviceCapabilities::GetSupportedEvents

показывает, что нужное событие поддерживается, но при копировании нового файла ничего не отправляется


person igal k    schedule 07.03.2017    source источник


Ответы (1)


WPD_EVENT_OBJECT_ADDED соответствует событию MTP ObjectAdded. https://msdn.microsoft.com/en-us/microsoft-r/dn932706

Я думаю, что то, какие события действительно отправляются, зависит от конкретной реализации протокола MTP на конкретном портативном устройстве.

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

Если вы хотите получать такие уведомления не с портативных устройств, реализующих MTP, а только с USB-накопителей, вам следует взглянуть, например, на минифильтры файловой системы https://msdn.microsoft.com/en-us/windows/hardware/drivers/ifs/file-system-minifilter-drivers

Они могли бы дать вам необходимые обратные вызовы.

person Arthur Bulakaiev    schedule 07.03.2017
comment
Как указано в моем фрагменте редактирования, флэш-драйвер поддерживает событие Object_Added. так почему он никогда не отправляет его? - person igal k; 08.03.2017
comment
Что касается поддержки, здесь имеется в виду только некоторый уровень абстракции, я думаю, это зависит от того, как вы его тестируете. Я пробовал такой случай на образце MS WPD API с моим флеш-диском, и кажется, что события WPD запускаются только тогда, когда вы работаете с его содержимым с помощью методов WPD: перенос содержимого с помощью методов IPortableDevice и т.д. Но нет событий от операций с этой флешкой как usb накопителем, типа создания папки из Проводника и т.д. - person Arthur Bulakaiev; 09.03.2017