Example Analysis of FindFirstChangeNotification for VC++ File Monitoring
Editor to share with you the FindFirstChangeNotification of VC++ file monitoring example analysis, I believe that most people do not know much about it, so share this article for your reference, I hope you will learn a lot after reading this article, let's go to know it!
Reason:
Because the last test of ReadDirectoryChangesW found that there could not be multi-level directory monitoring.
So try to use FindFirstChangeNotification to implement file monitoring.
Key code:
CFolderMonitorDlg* dlg = (CFolderMonitorDlg*) lParam; HANDLE hEvent;// monitoring handle CString path; / / Monitoring directory GetCurrentDirectory (MAX_PATH,path.GetBuffer (MAX_PATH+1)) HEvent = FindFirstChangeNotification (path,TRUE,FILE_NOTIFY_CHANGE_FILE_NAME | / / View any file name change FILE_NOTIFY_CHANGE_DIR_NAME in the specified directory | / / View any directory name change FILE_NOTIFY_CHANGE_SIZE in the specified directory | / / View the change FILE_NOTIFY_CHANGE_ATTRIBUTES of the specified file size) / / View the change of file attributes in the specified directory if (hEvent = = INVALID_HANDLE_VALUE) {ExitProcess (GetLastError ()); / / get error return 0;} while (TRUE) / / Loop Monitoring {DWORD nObj = WaitForSingleObject (hEvent,INFINITE) / / wait. Any action in the folder returns 0. Gu cannot know the specific action and which file has changed. If (nObj) {dlg- > m_edit.ReplaceSel ("the file has been modified by the virus\ r\ n");} dlg- > m_edit.ReplaceSel ("the file has changed, and there is no way to verify the specific changes\ r\ n"). / / continue to monitor if (FALSE==FindNextChangeNotification (hEvent)) {ExitProcess (GetLastError ()); return 0;}} return 0
Effect picture:
The above is all the contents of the article "sample Analysis of FindFirstChangeNotification for VC++ File Monitoring". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!