Получение уведомлений об изменении каталога для портативных носителей

Мы можем найти изменение в каталоге, используя FindFirstChangeNotification() а также FindNextChangeNotification() функции как:

FindFirstChangeNotification(
lpDir,                         // directory to watch
FALSE,                         // do not watch subtree
FILE_NOTIFY_CHANGE_FILE_NAME); // watch file name changes

Но в Windows нет реального пути для переносимых мультимедийных устройств, таких как телефоны Android, камеры и т. Д. Тогда как мы можем отслеживать изменения
(создавать, копировать, удалять, переименовывать) сделано на этих устройствах в C ++?

0

Решение

Эти мультимедийные устройства существуют только на уровне оболочки, они не разрешают прямой доступ к своей файловой системе (и даже если они это сделали, это может быть ext3 или какая-либо другая файловая система, не поддерживаемая Windows). Вы не можете использовать FindFirstChangeNotification и другие функции в kernel32, вы должны использовать функции в shell32 и shlwapi, которые поддерживают IShellItem, IShellFolder и PIDLs.

Для создания PIDL вы можете позвонить SHParseDisplayName если ты знаешь путь (shell:::{something}\{something}) или же SHGetDesktopFolder + IShellFolder::EnumObjects пройтись по всему пространству имен оболочки.

Иногда можно найти оболочку: путь, щелкнув правой кнопкой мыши вещь в панели навигации и выберите «Копировать адрес».

Если у вас есть абсолютный PIDL для папки устройства, вы можете позвонить SHChangeNotifyRegister.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]