12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*-------------------------------------------------------------------------
- * DirMon.h
- *
- * The definitions, etc. for a class that helps monitor a directory for
- * file changes.
- *
- * Author: MarkSn
- * Owner:
- *
- * Copyright 1986-1998 Microsoft Corporation, All Rights Reserved
- *-----------------------------------------------------------------------*/
- #ifdef _DIRMON_H
- #error dirmon.h included twice
- #endif
- #define _DIRMON_H
- // ** Stuff for monitoring the directory
- struct FileChangeInfo
- {
- char * szFileName;
- FILETIME ftLastWriteTime;
- unsigned long cFileSize;
- };
- typedef bool (*LPIFFCIPROC) (FileChangeInfo*, void*);
- class DirectoryMonitor
- {
- private:
- HANDLE m_hDir;
- HANDLE m_hCompPort;
- OVERLAPPED m_overlapped;
- FILETIME m_ftLastWriteTime;
- char * m_pFileNamesBuffer; // allocation of memory for filenames in FileChangeInfo
- FileChangeInfo* m_pNewestFileCached;
- private:
- bool FilterFile(WIN32_FIND_DATA & finddata);
- protected:
- char m_szDir[MAX_PATH]; // directory where files to be watched are located
- char m_szDirWithSpec[MAX_PATH]; // same as m_szDir, but with file spec on the end
- int m_cFiles; // number of file info structs in m_pargFiles
- FileChangeInfo* m_pargFiles; // array of m_cFiles FileChangeInfo structs
- int m_nPollInterval; // number of ms to wait between checks for changes
- public:
- enum { edmNewerThan=1, edmEqualTo=2, edmOlderThan=4 };
- DirectoryMonitor();
- virtual ~DirectoryMonitor();
- BOOL SetupMonitor(LPCSTR szDir, int nPollingInterval);
- void CheckForFileChanges();
- bool IterateFiles(int nType, FILETIME* pft, LPIFFCIPROC FileChangeCallback, void* pData);
- FileChangeInfo* GetNewestFile();
- FileChangeInfo* GetOldestFile();
- };
|