Как отладить уведомления об изменении файла, полученные с помощью FindFirstChangeNotification?
-
20-08-2019 - |
Вопрос
Итак, вопрос в том,:Я получаю некоторые уведомления, которые не хочу получать.Но я не знаю, для какого файла / каталога я их получил.Есть ли способ узнать, почему данное уведомление было уволено?
Если вы думаете о ReadDirectoryChangesW, пожалуйста, включите содержательный пример кода.
Решение
Если вы хотите, чтобы Windows сообщала вам, какой конкретный файл или подкаталог изменился, вам нужно будет использовать ReadDirectoryChangesW читать.Асинхронный режим довольно прост, если вы используете процедуру завершения.
С другой стороны, вы, вероятно, получите более высокую производительность, используя немного более сложную Порты завершения ввода-вывода подходите.Я бы порекомендовал скачать превосходную книгу Уэса Джонса CDirectoryChangeWatcher Просмотр изменений исходный код в качестве отправной точки.Есть несколько ошибок, которых его код поможет вам избежать, особенно при разборе FILE_NOTIFY_INFORMATION
записи.
Другие советы
~псевдокод
HANDLE handles[MAX_HANDLES];
std::string dir_array[MAX_HANDLES];
for i from 0 to MAX_HANDLES:
h[i] = FindFirstChangeNotification(dir_array[i]...);
nCount = MAX_HANDLES;
ret = WaitForMultipleObjects(handles, nCount ...);
// check if ret returns something between WAIT_OBJECT_0 and WAIT_OBJECT_0+nCount-1
if "so":
ret -= WAIT_OBJECT_0;
cout << "Directory " << dir_array[ret] << " changed" << endl;
Видишь: http://msdn.microsoft.com/en-us/library/ms687025 (ПРОТИВ 85).aspx
Смотрите в профессиональной группе новостей Win32 api news://comp.os.ms-windows.programmer.win32 хорошо известные образцы MS (C-код) (начиная с 90-х годов ...)