예제 #1
0
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();
}