#ifdef _DIRMON_H
#error dirmon.h included twice
#endif
#define _DIRMON_H
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; FileChangeInfo* m_pNewestFileCached;
private:
bool FilterFile(WIN32_FIND_DATA & finddata);
protected:
char m_szDir[MAX_PATH]; char m_szDirWithSpec[MAX_PATH]; int m_cFiles; FileChangeInfo* m_pargFiles; int m_nPollInterval; 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();
};