FindFirstChangeNotification () вызывает изменения в подкаталогах, хотя wWatchSubtree имеет значение FALSE - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь прослушать уведомления об изменениях в каталоге следующим образом:

handle = FindFirstChangeNotification("D:/Test", FALSE, FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME|FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_SIZE|FILE_NOTIFY_CHANGE_LAST_WRITE);

Это работает, как и ожидалось, но есть одна странная вещь: когда я копирую файл в каталог D:/Test/SubDir I Я также получаю уведомление. Это сбивает меня с толку, потому что документация wWatchSubtree гласит:

Если этот параметр имеет значение TRUE, функция отслеживает дерево каталогов с корнем в указанном каталоге; если это FALSE, он отслеживает только указанный каталог.

Как вы можете видеть, я устанавливаю его в FALSE, но все равно получаю уведомление, если что-то меняется в D:/Test/SubDir, хотя я только хочу получать уведомления об изменениях в D:/Test. Предполагается ли, что это будет вести себя так, и если это так, как я могу изменить это, чтобы получать уведомления только об изменениях в D:/Test, а не в D:/Test/SubDir и других подкаталогах?

1 Ответ

0 голосов
/ 10 апреля 2020

Только для записи и для того, чтобы пометить этот вопрос как ответивший, IInspectable решил его в комментариях выше:

Если вы скопируете файл в D: / Test / SubDir, отметку времени последнего изменения D: / Test / SubDir (каталог) обновляется. Это запись, которую вы отслеживаете, потому что она является прямым потомком D: / Test. Если вы скопируете файл в D: / Test / SubDir / SubDir, вы не получите уведомление.

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