亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? filebackupe.h

?? 實(shí)時(shí)文件備份
?? H
?? 第 1 頁 / 共 5 頁
字號:
		inline BOOL GetNextAvailableDriveBasePath(CParsedPathItem*& pDriveItem, CString& csBasePath, CParsedPathItem*& pItem)
		{
			TCHAR tDriveName;

			if ( (tDriveName = GetNextAvailableDrive(pDriveItem)) == NULL )
				return FALSE;
			return GetDriveBasePath(tDriveName, csBasePath, pItem);
		}

	protected:
		CParsedPathItem *						m_pRootParsedPathItem;
	};

	class CProfile
	{
	public:
		class CIncludeSrcPath
		{
		public:

			inline void Reset()
			{
				m_csPathname.Empty();
				m_csVolumeSerialNumber  = 0;

				m_fFilenameMasksAvailable = FALSE;
				m_csFilenameMasks.Empty();
				m_fIsIncludeFilenameMasks = FALSE;

				m_fFileAttributesMaskAvailable = FALSE;
				m_dwFileAttributesMask = 0;
				m_fIsIncludeFileAttributesMask = FALSE;
			}

			inline CIncludeSrcPath& operator =(const CIncludeSrcPath& obj)
			{
				m_csPathname = obj.m_csPathname;
				m_csVolumeSerialNumber = obj.m_csVolumeSerialNumber;
				m_fFilenameMasksAvailable = obj.m_fFilenameMasksAvailable;
				m_csFilenameMasks = obj.m_csFilenameMasks;
				m_fIsIncludeFilenameMasks = obj.m_fIsIncludeFilenameMasks;
				m_fFileAttributesMaskAvailable = obj.m_fFileAttributesMaskAvailable;
				m_dwFileAttributesMask = obj.m_dwFileAttributesMask;
				m_fIsIncludeFileAttributesMask = obj.m_fIsIncludeFileAttributesMask;
				return *this;
			}

			inline CIncludeSrcPath& operator =(const CString& csPathname)
			{
				if ( !csPathname.IsEmpty() )
				{
					int nIndex;

					Reset();
					if ( csPathname[1] != _T(':') || csPathname[2] != _T('\\') )
						AfxThrowNotSupportedException();
					if ( (nIndex = csPathname.FindOneOf(_T("*?"))) == -1 )
					{
						if ( csPathname.GetLength() > 3 && csPathname[csPathname.GetLength() - 1] == _T('\\') )
							m_csPathname = csPathname.Left(csPathname.GetLength() - 1);
						else
							m_csPathname = csPathname;
					}
					else if ( nIndex + 1 < csPathname.GetLength() && csPathname.Mid(nIndex + 1).Find(_T('\\')) != -1 )
						AfxThrowNotSupportedException();
					else
					{
						nIndex = csPathname.ReverseFind(_T('\\'));
						m_csPathname = csPathname.GetLength() > 3 ? csPathname.Left(nIndex) : csPathname.Left(nIndex + 1);
						m_fFilenameMasksAvailable = TRUE;
						m_csFilenameMasks = csPathname.Mid(nIndex + 1);
						m_fIsIncludeFilenameMasks = TRUE;
					}
				}
				return *this;
			}

		protected:
			CString					m_csPathname;
			DWORD					m_csVolumeSerialNumber;

			BOOL					m_fFilenameMasksAvailable;
			CString					m_csFilenameMasks;
			BOOL					m_fIsIncludeFilenameMasks;

			BOOL					m_fFileAttributesMaskAvailable;
			DWORD					m_dwFileAttributesMask;
			BOOL					m_fIsIncludeFileAttributesMask;
		};
		typedef CList<CIncludeSrcPath, CIncludeSrcPath&>	CIncludeSrcPaths;

		class CExcludeSrcPath
		{
		public:
			inline CExcludeSrcPath& operator =(const CExcludeSrcPath& obj)
			{
				m_csPathname = obj.m_csPathname;
				return *this;
			}

			inline CExcludeSrcPath& operator =(const CString& csPathname)
			{
				m_csPathname = csPathname;
				return *this;
			}

		protected:
			CString					m_csPathname;
		};
		typedef CList<CExcludeSrcPath, CExcludeSrcPath&>	CExcludeSrcPaths;

		class CVersionRelativePath
		{
		public:
			inline CVersionRelativePath& operator =(const CVersionRelativePath& obj)
			{
				m_csPathname = obj.m_csPathname;
				m_objCreateDateTime = obj.m_objCreateDateTime;
			}

		protected:
			CString					m_csPathname;
			CTime					m_objCreateDateTime;
		};
		typedef CList<CVersionRelativePath, CVersionRelativePath&>	CVersionRelativePaths;

	protected:
		CIncludeSrcPaths			m_objIncludeSrcPaths;
		CExcludeSrcPaths			m_objExcludeSrcPaths;
		CString						m_csBaseDestinationPath;
		CVersionRelativePaths		m_objVersionRelativePaths;
		DWORD						m_dwMaxVersions;
		CTimeSpan					m_objVersionIntervalTime;

		CString						m_csDatabasePathname;
		BOOL						m_fAbsolutePath;
		BOOL						m_fRelativeToDestinationPath;
	};

	class CLargeBufferBlockBank
	{
	public:
		class CLargeBufferPool
		{
		public:
			enum {
				BLOCK_SIZE				= 65536,
			};

			inline CLargeBufferPool() : m_pFreeBufferListHead(NULL)
			{
				InitializeCriticalSection(&m_objCriticalSection);
			}

			inline ~CLargeBufferPool()
			{
				LPVOID pPrevBlock;

				EnterCriticalSection(&m_objCriticalSection);
				while ( m_pFreeBufferListHead )
				{
					pPrevBlock = m_pFreeBufferListHead;
					m_pFreeBufferListHead = *(LPVOID*)m_pFreeBufferListHead;
					delete[] (LPBYTE)pPrevBlock;
				}
				DeleteCriticalSection(&m_objCriticalSection);
			}

			inline LPVOID Allocate()
			{
				EnterCriticalSection(&m_objCriticalSection);
				if ( m_pFreeBufferListHead )
				{
					LPVOID pBlock = m_pFreeBufferListHead;

					m_pFreeBufferListHead = *(LPVOID*)m_pFreeBufferListHead;
					LeaveCriticalSection(&m_objCriticalSection);
					return m_pFreeBufferListHead;
				}
				else
				{
					LeaveCriticalSection(&m_objCriticalSection);
					return new BYTE[BLOCK_SIZE];
				}
			}

			inline void Free(LPVOID pBlock)
			{
				if ( pBlock )
				{
					EnterCriticalSection(&m_objCriticalSection);
					*(LPVOID*)pBlock = m_pFreeBufferListHead;
					m_pFreeBufferListHead = pBlock;
					LeaveCriticalSection(&m_objCriticalSection);
				}
			}

			static inline int GetBufferSize() { return BLOCK_SIZE; }

		protected:
			LPVOID						m_pFreeBufferListHead;
			CRITICAL_SECTION			m_objCriticalSection;
		};

		inline static LPVOID Allocate() { return m_objLargeBufferPool.Allocate(); }
		inline static void Free(LPVOID pBlock) { m_objLargeBufferPool.Free(pBlock); }
		inline static int GetBlockSize() { return CLargeBufferPool::GetBufferSize(); }

	protected:
		static CLargeBufferPool			m_objLargeBufferPool;
	};

	class CMessageQueue
	{
	public:
		class CMessageBufferBlock;		//	pre-define
		class CMessageBufferPool;		//	pre-define
		class CMessage
		{
		public:
			friend class CMessageBufferBlock;
			friend class CMessageBufferPool;
			friend class CMessageQueue;

			inline CMessage() { Reset(); }

			inline void Reset()
			{
				m_nMessage = 0;
				m_wParam = NULL;
				m_lParam = NULL;
//				m_hFinishedEvent = NULL;
				m_pNext = NULL;
			}

		protected:
			//	Message
			UINT						m_nMessage;
			WPARAM						m_wParam;
			LPARAM						m_lParam;
			//	To implement SendMessage
//			HANDLE						m_hFinishedEvent;
			//	list
			CMessage*					m_pNext;
		};

		class CMessageBufferBlock
		{
		public:
			friend class CMessageBufferPool;

			inline CMessageBufferBlock() : m_pNext(NULL)
			{
				for ( int i = 0; i < sizeof(m_arrayMessageBank) / sizeof(m_arrayMessageBank[0]) - 1; i++ )
					m_arrayMessageBank[i].m_pNext = m_arrayMessageBank + i + 1;
			}

			inline ~CMessageBufferBlock()
			{
				if ( m_pNext )
					delete m_pNext;
			}

		protected:
			CMessage				m_arrayMessageBank[128];
			CMessageBufferBlock*	m_pNext;
		};

		class CMessageBufferPool
		{
		public:
			inline CMessageBufferPool() : m_pFirstMessageBlock(NULL), m_pFirstFreeMessage(NULL)
			{
				InitializeCriticalSection(&m_objCriticalSection);
			}

			inline ~CMessageBufferPool()
			{
				EnterCriticalSection(&m_objCriticalSection);
				if ( m_pFirstMessageBlock )
					delete m_pFirstMessageBlock;
				DeleteCriticalSection(&m_objCriticalSection);
			}

			inline CMessage* Allocate()
			{
				CMessage* pRet;

				EnterCriticalSection(&m_objCriticalSection);
				if ( m_pFirstFreeMessage )
				{
					pRet = m_pFirstFreeMessage;
					m_pFirstFreeMessage = m_pFirstFreeMessage->m_pNext;
				}
				else
				{
					CMessageBufferBlock* pBlock;

					LeaveCriticalSection(&m_objCriticalSection);
					pBlock = new CMessageBufferBlock;
					EnterCriticalSection(&m_objCriticalSection);
					pBlock->m_pNext = m_pFirstMessageBlock;
					m_pFirstMessageBlock = pBlock;
					pBlock->m_arrayMessageBank[sizeof(pBlock->m_arrayMessageBank) / sizeof(pBlock->m_arrayMessageBank[0]) - 1].m_pNext = m_pFirstFreeMessage;
					m_pFirstFreeMessage = pBlock->m_arrayMessageBank + 1;
					pRet = pBlock->m_arrayMessageBank;
				}
				LeaveCriticalSection(&m_objCriticalSection);
				ASSERT(pRet != NULL);
				pRet->Reset();
				return pRet;
			}

			inline void Free(CMessage* pMsg)
			{
				EnterCriticalSection(&m_objCriticalSection);
				pMsg->m_pNext = m_pFirstFreeMessage;
				m_pFirstFreeMessage = pMsg;
				LeaveCriticalSection(&m_objCriticalSection);
			}

		protected:
			CRITICAL_SECTION			m_objCriticalSection;
			CMessageBufferBlock*		m_pFirstMessageBlock;
			CMessage*					m_pFirstFreeMessage;
		};

		inline CMessageQueue() : m_pFirstQueuedMessage(NULL), m_ppLastQueuedMessage(&m_pFirstQueuedMessage)
		{
			InitializeCriticalSection(&m_objCriticalSection);
			if ( !(m_hMessageSemaphore = CreateSemaphore(NULL, 0, LONG_MAX, NULL)) )
				AfxThrowResourceException();
		}

		inline ~CMessageQueue()
		{
			EnterCriticalSection(&m_objCriticalSection);
			DeleteCriticalSection(&m_objCriticalSection);
			CloseHandle(m_hMessageSemaphore);
		}

		inline void PostMessage(UINT nMsg, WPARAM wParam, LPARAM lParam)
		{
			CMessage* pMsg = CMessageQueue::m_objMessageBufferPool.Allocate();

			pMsg->m_nMessage = nMsg;
			pMsg->m_wParam = wParam;
			pMsg->m_lParam = lParam;
			EnterCriticalSection(&m_objCriticalSection);
			*m_ppLastQueuedMessage = pMsg;
			m_ppLastQueuedMessage = &pMsg->m_pNext;
			LeaveCriticalSection(&m_objCriticalSection);
			ReleaseSemaphore(m_hMessageSemaphore, 1, NULL);
		}

//		inline void SendMessage(UINT nMsg, WPARAM wParam, LPARAM lParam) {}

		inline BOOL GetFirstMessage(UINT& nMsg, WPARAM& wParam, LPARAM& lParam)
		{
			CMessage* pMsg = NULL;

			EnterCriticalSection(&m_objCriticalSection);
			if ( (pMsg = m_pFirstQueuedMessage) )
			{
				if ( !(m_pFirstQueuedMessage = m_pFirstQueuedMessage->m_pNext) )
					m_ppLastQueuedMessage = &m_pFirstQueuedMessage;
				LeaveCriticalSection(&m_objCriticalSection);
				nMsg = pMsg->m_nMessage;
				wParam = pMsg->m_wParam;
				lParam = pMsg->m_lParam;
				CMessageQueue::m_objMessageBufferPool.Free(pMsg);
				return TRUE;
			}
			else
			{
				LeaveCriticalSection(&m_objCriticalSection);
				return FALSE;
			}
		}

		inline HANDLE GetSemaphore() const { return m_hMessageSemaphore; }

	protected:
		static CMessageBufferPool		m_objMessageBufferPool;

		CRITICAL_SECTION				m_objCriticalSection;
		CMessage*						m_pFirstQueuedMessage;
		CMessage**						m_ppLastQueuedMessage;
		HANDLE							m_hMessageSemaphore;
	};

	typedef struct
	{
		HANDLE							m_hFinishedEvent;
		DWORD							m_dwResult;
	} MESSAGE_RESULT;

	class CWorkerThreadWrapper
	{
	public:
		inline CWorkerThreadWrapper() : m_pThread(NULL) {}

		virtual BOOL InitInstance() = 0;
		virtual DWORD ExitInstance() = 0;

		inline BOOL CreateThread(AFX_THREADPROC pfnThreadProc, LPVOID lParam, int nPriority = THREAD_PRIORITY_NORMAL)
		{
/*			if ( !m_pThread )
			{
				if ( !InitInstance() )
					return FALSE;
				if ( !(m_pThread = AfxBeginThread(pfnThreadProc, lParam, nPriority)) )
					return FALSE;
			}
			return TRUE;
*/
			if ( !m_pThread )
			{
				m_pfnThreadProc = pfnThreadProc;
				m_lParam = lParam;
				if ( !InitInstance() )
					return FALSE;
				if ( !(m_pThread = AfxBeginThread((AFX_THREADPROC)DummyThreadProc, this, nPriority)) )
					return FALSE;
			}
			return TRUE;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区欧美日韩| 欧美激情资源网| 国产成人8x视频一区二区| 亚洲精品乱码久久久久| 欧美大片免费久久精品三p | 黑人巨大精品欧美黑白配亚洲| 国产精品乱码人人做人人爱 | 亚洲男人天堂av| www国产亚洲精品久久麻豆| 在线观看国产日韩| 懂色av中文字幕一区二区三区| 日韩精品一二三| 亚洲精品视频在线| 国产精品免费看片| 久久久久久久久久久久久久久99| 欧美日本韩国一区| 色综合久久天天| 成人h动漫精品| 国产高清精品在线| 久久国产免费看| 日本vs亚洲vs韩国一区三区二区| 一区二区三区精品视频在线| 国产精品午夜在线观看| 久久亚洲一级片| 欧美r级在线观看| 91精品国产91综合久久蜜臀| 欧美日韩电影一区| 欧美在线影院一区二区| 色香蕉成人二区免费| 成人午夜av电影| 国产91精品免费| 国产成人精品亚洲777人妖| 精东粉嫩av免费一区二区三区| 日本在线不卡视频| 日韩av中文字幕一区二区| 亚洲va欧美va天堂v国产综合| 一区二区三区在线观看动漫| 亚洲色图在线看| 亚洲欧美乱综合| 亚洲激情网站免费观看| 亚洲你懂的在线视频| 亚洲欧美日韩国产综合在线| 亚洲欧美国产77777| 亚洲人成电影网站色mp4| 亚洲人成在线观看一区二区| ●精品国产综合乱码久久久久| 国产精品久久毛片av大全日韩| 亚洲国产精品成人综合色在线婷婷 | 狠狠色狠狠色综合系列| 国内精品自线一区二区三区视频| 极品瑜伽女神91| 国产老妇另类xxxxx| 丁香婷婷综合激情五月色| 丁香五精品蜜臀久久久久99网站 | 欧美一卡二卡三卡| 日韩一区二区三区高清免费看看| 日韩欧美一区在线| 久久丝袜美腿综合| 综合电影一区二区三区| 亚洲已满18点击进入久久| 婷婷综合另类小说色区| 玖玖九九国产精品| 成人午夜在线视频| 在线免费亚洲电影| 日韩欧美视频在线 | 午夜激情综合网| 奇米一区二区三区av| 国产精品资源在线看| 99久久99精品久久久久久| 欧美影院精品一区| 欧美zozozo| 亚洲日本乱码在线观看| 午夜精品福利一区二区三区蜜桃| 久久精品国产精品亚洲红杏| 成人福利视频在线| 精品视频在线免费| 精品电影一区二区| 亚洲男人的天堂在线观看| 免费在线观看精品| 99久久精品久久久久久清纯| 欧美精品久久一区二区三区| 国产女同性恋一区二区| 亚洲国产精品麻豆| 国产精品香蕉一区二区三区| 欧美中文字幕一区二区三区 | 欧美午夜精品一区二区三区| 精品少妇一区二区三区| 亚洲区小说区图片区qvod| 麻豆精品久久精品色综合| eeuss鲁片一区二区三区| 91精品国产综合久久久久久漫画 | 欧美影片第一页| 国产亚洲欧美日韩在线一区| 亚洲成人先锋电影| 成人app软件下载大全免费| 欧美一区二区视频网站| 亚洲日本护士毛茸茸| 久久精品国产亚洲5555| 欧美中文字幕一区二区三区| 国产亚洲欧美激情| 欧美aⅴ一区二区三区视频| 91色.com| 国产精品女主播av| 精品一区二区三区蜜桃| 欧美高清www午色夜在线视频| 国产精品久久久久久久久快鸭| 久久99精品久久久久久动态图| 在线视频一区二区三区| 国产精品免费aⅴ片在线观看| 久久99久久99| 日韩午夜av电影| 天堂影院一区二区| 91久久国产最好的精华液| 国产精品萝li| 国产传媒欧美日韩成人| 精品国产一区二区国模嫣然| 天天色综合天天| 欧美性猛片xxxx免费看久爱| 亚洲欧美日韩人成在线播放| 成人激情av网| 久久精品视频免费| 国产美女在线观看一区| 精品三级在线观看| 看片的网站亚洲| 日韩欧美中文字幕制服| 日韩 欧美一区二区三区| 欧美日韩视频在线观看一区二区三区 | 91精品国产91久久久久久一区二区| 亚洲一区二区欧美激情| 在线观看日韩精品| 一区二区三区四区在线免费观看| 97aⅴ精品视频一二三区| 国产精品不卡视频| 99re亚洲国产精品| 亚洲视频中文字幕| 色婷婷av一区二区| 亚洲伊人伊色伊影伊综合网| 欧美亚洲国产一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 色婷婷av一区| 亚洲国产精品久久久男人的天堂| 欧美亚洲动漫精品| 午夜久久久影院| 日韩欧美美女一区二区三区| 久久91精品国产91久久小草| 久久女同精品一区二区| 国产成人日日夜夜| 中文字幕一区二区三区蜜月 | 91一区二区三区在线观看| 中文字幕亚洲精品在线观看| 色嗨嗨av一区二区三区| 亚洲大片免费看| 日韩欧美国产一二三区| 国产美女一区二区三区| 国产精品久久夜| 欧美三级电影网| 老司机午夜精品99久久| 国产欧美精品国产国产专区| 91在线国产福利| 日韩精品一级二级| 久久久久9999亚洲精品| 91在线视频在线| 午夜精品久久久久| 久久久激情视频| 在线国产亚洲欧美| 麻豆精品视频在线观看视频| 日本一区二区三区国色天香| 在线视频一区二区免费| 免费成人在线网站| 一区免费观看视频| 8x福利精品第一导航| 国产传媒日韩欧美成人| 亚洲一区二区av电影| 26uuu精品一区二区三区四区在线| a亚洲天堂av| 日韩电影在线看| 国产精品麻豆一区二区| 欧美剧情电影在线观看完整版免费励志电影| 捆绑调教一区二区三区| 亚洲精品国产无套在线观| 日韩精品综合一本久道在线视频| 成人黄色免费短视频| 天天做天天摸天天爽国产一区| 久久精品这里都是精品| 欧美最新大片在线看| 国产盗摄精品一区二区三区在线 | 久久婷婷国产综合国色天香| 91久久奴性调教| 国产精品99久久久久久似苏梦涵| 亚洲自拍偷拍九九九| 国产日韩亚洲欧美综合| 欧美日韩电影在线| 99久免费精品视频在线观看| 欧美aaaaaa午夜精品| 亚洲精选视频在线| 国产色爱av资源综合区| 欧美一区二区三区精品| 在线视频国产一区| 成人久久久精品乱码一区二区三区| 日韩精彩视频在线观看|