Используйте ReadDirectoryChanges()
, он отслеживает файлы в дереве каталогов. ReadDirectoryChanges
в основном делает то же самое, что и FindFirstChangeNotification
, FindNextChangeNotification
. ReadDirectoryChanges
является просто более мощным, потому что, если вы предоставите опциональную функцию обратного вызова для ReadDirectoryChangesW()
, вы сможете увидеть, какой файл изменился и почему он изменился, а затем отфильтровать логику вашего приложения без дополнительных системных вызовов, чтобы найти какой файл изменился, ... вы получите этот массив структур.
typedef struct _FILE_NOTIFY_INFORMATION {
DWORD NextEntryOffset;
DWORD Action; // <- reason for the change
DWORD FileNameLength;
WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
FindNextChangeNotification
больше похож на кувалду, вам все равно нужно проверить папку, чтобы увидеть, что именно изменилось, но ее проще использовать, если вы уже знаете, какой файл искать. Findfirst
/ Next
также немного легче использовать с точки зрения логики ожидания потока / завершения ввода-вывода.