Как отладить уведомления об изменении файла, полученные с помощью FindFirstChangeNotification?

StackOverflow https://stackoverflow.com/questions/503401

Вопрос

Итак, вопрос в том,:Я получаю некоторые уведомления, которые не хочу получать.Но я не знаю, для какого файла / каталога я их получил.Есть ли способ узнать, почему данное уведомление было уволено?

Если вы думаете о 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-х годов ...)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top