BOOL CFileMonitorRequest::Init( CONST WCHAR * aMonitorPath , BOOL aRecursive , DWORD aFilter , DWORD aShareMemSize ) { _ASSERT( aMonitorPath ); StopCheck( (ULONG_PTR)this ); m_wstrMonitorPath = aMonitorPath; m_bRecursive = aRecursive; m_dwFilter = aFilter; m_vecShareMem.resize( aShareMemSize ); m_vecShareMemBak.resize( aShareMemSize ); ZeroMemory( &m_overlapped , sizeof(OVERLAPPED) ); m_overlapped.hEvent = this; //This member is not used when completion routine exists, so we use it directly (See MSDN) m_hMonitorPath = CreateFileW( aMonitorPath , FILE_LIST_DIRECTORY , FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , NULL , OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED , NULL ); if ( INVALID_HANDLE_VALUE == m_hMonitorPath ) return FALSE; return TRUE; }
CCheckDirChange::~CCheckDirChange() { StopCheck(); UnInit(); }