www.pudn.com > WZ_UpdateModule_DLL.rar > WZ_UM.h


////////////////////////////////////////////////////////////////////////// 
// 	Wenzen Update Module Ver 0.2  
// 
//	Build By Cho Jae Sik 
// 
//  First Release 20051219 
// 
////////////////////////////////////////////////////////////////////////// 
 
 
#pragma warning (disable : 4786) 
 
#ifndef	_WZ_UPDATE_MODULE_DLL_ 
#define	_WZ_UPDATE_MODULE_DLL_ 
 
#include  
#include  
#include 		// _beginthread() 
#include 				// _access() 
#include  
#include  
#include "UpdateDefine.h" 
#include "UpdateInfo.h" 
using namespace std; 
 
 
typedef VOID (* LPFUNC_RECEIVEEVENT) (	// »ç¿ëÀÚ Á¤ÀÇ »óȲ¾Ë¸² ÄݹéÇÔ¼ö 
	INT iEvent,						// À̺¥Æ® Á¾·ù 
	LPVOID lpOBJ,					// À̺¥Æ®¸¦ ³Ñ±ä °´Ã¼ Æ÷ÀÎÅÍ (CWZFtpUpdateModule * / CWZHttpUpdateModule *) 
	UPDATING_FILEINFO_STRUCT & strtUpdatingInfo	// ÇöÀçÀÇ ¾÷µ¥ÀÌÆ® »óȲÁ¤º¸ ±¸Á¶Ã¼ 
); 
 
 
/////////////////////////////////////////////////////////////////////////////////////// 
/* 
	±âº» ¾÷µ¥ÀÌÆ® Ŭ·¡½º : ÀÌ Å¬·¡½º¿¡¼­ FTP ¿Í HTTP ¾÷µ¥ÀÌÆ® Ŭ·¡½º°¡ »ó¼Ó ¹Þ´Â´Ù. 
*/ 
 
class WZ_DECLAREDLL CWZUpdateModule 
{ 
protected : 
	static enum {	// À̺¥Æ® Á¾·ù 
		STATE_CONNECTING,					// ÇöÀç Á¢¼ÓÁß 
		STATE_CONNECTED,					// ¿¬°áµÊ 
		STATE_DISCONNECTED,					// ¿¬°á¾ÊµÊ 
		STATE_FILE_DOWNLOADING				// ÆÄÀÏ ¹Þ´ÂÁß 
	}; 
 
	static enum { 
		ERROR_NONE, 
		ERROR_USER, 
		ERROR_SYSTEM 
	}; 
 
	CHAR	m_szIPADDR[MAX_PATH];				// IPÁÖ¼Ò 
	WORD	m_wPORT;							// Æ÷Æ®¹øÈ£ 
	CHAR	m_szID[MAX_PATH];					// °èÁ¤¸í 
	CHAR	m_szPASS [MAX_PATH];				// ºñ¹Ð¹øÈ£ 
	string	m_strDownDirectory;					// ·ÎÄÃÀÇ ´Ù¿î·ÎµåÇÒ µð·ºÅ丮 
	CHAR	m_szDefaultDirectory[MAX_PATH];		// FTP¼­¹öÀÇ ¹öÀüÆÄÀÏÀÌ Á¸ÀçÇÏ´Â µð·ºÅ丮 
	CHAR	m_szVersionFileName[MAX_PATH];		// ¹öÀüÆÄÀÏÀÇ À̸§À» ÀúÀå (¹öÀüÆÄÀÏÀº ·çÆ®¿¡ Àִ°ÍÀ» ¿øÄ¢À¸·Î ÇÑ´Ù.) 
	BYTE	m_bSKIP_UPDATE;						// ÀÌ °ªÀÌ TRUEÀÏ °æ¿ì À̹øÀÇ ¾÷µ¥ÀÌÆ®¸¦ ÇåÅÏ °Ç³Ê¶Ù¶ó´Â Ç÷¡±× (FALSE·Î ¹Ù²î¾î¾ß ÇÑ´Ù.) 
 
	// Thread  
	HANDLE			m_hUpdateThread; 
	unsigned int	m_nUpdateThreadID; 
 
	UPDATE_FOLDERINFO_STRUCT m_strtUpdateFolderInfo[MAX_FOLDERINFO];	// ¾÷µ¥ÀÌÆ® Æú´õÀÇ ¸ñ·ÏÀ» ÀúÀåÇÒ ±¸Á¶Ã¼ 
	UINT m_uUpdateFolderCount;											// ¾÷µ¥ÀÌÆ® ¼­¹ö¿¡ ÀÖ´Â Æú´õÀÇ °³¼ö 
 
	INT				m_iLastErrorMode;												// ¸¶Áö¸· ¿¡·¯°¡ »ç¿ëÀÚ ¿¡·¯ÀÎÁö ½Ã½ºÅÛ ¿¡·¯ÀÎÁö? 
	INT				m_iLastErrorCode;												// ¸¶Áö¸· ¿¡·¯ ¹øÈ£ ÀúÀå 
	CHAR			m_szLastErrorMsg [MAX_PATH];									// ¸¶Áö¸· ¿¡·¯ ¸Þ½ÃÁö ÀúÀå 
 
	// ¿¬°á°ü·Ã º¯¼öµé (¹ü¿ë) 
	HINTERNET		m_hINET_SESSION;					// ÀÎÅÍ³Ý ¼¼¼Ç ÇÚµé 
	INT				m_iCurrentState;					// ÇöÀç °´Ã¼ÀÇ ÁøÇà»óŸ¦ ÀúÀå (¹Þ´Â Áß¿¡ Connect() Çϰųª ¿¬°á¾ÊµÇ¾ú´Âµ¥ Disconnect() ÇÏÁö ¾Êµµ·Ï) 
	BOOL			m_bCancelUpdate;					// ¾÷µ¥ÀÌÆ®Áß ÀÛ¾÷À» Ãë¼ÒÇÏ´Â °æ¿ì¿¡ ´ëÇÑ ÀÎÀÚ 
	BOOL			m_bUseEventProc;					// EventProceure¸¦ Ȱ¼ºÈ­ ½Ãų°ÇÁö¿¡ ´ëÇÑ ÀÎÀÚ 
 
	UPDATING_FILEINFO_STRUCT	m_strtUpdatingFileInfo;							// Äݹé ÇÔ¼ö¿¡ ÇöÀçÀÇ ¾÷µ¥ÀÌÆ® ÁøÇà»óȲÀ» ³Ñ±æ ±¸Á¶Ã¼ 
	LPFUNC_RECEIVEEVENT			m_lpFN_EventCallbackProc;						// »ç¿ëÀÚ Á¤ÀÇ ÄݹéÇÔ¼ö Æ÷ÀÎÅÍ 
 
public : 
	CWZUpdateModule (); 
	CWZUpdateModule (LPSTR lpszIPADDR, WORD wPORT, LPSTR lpszID, LPSTR lpszPASS); 
	virtual ~CWZUpdateModule (); 
 
	virtual BOOL 		Connect ()  = 0; 
	virtual BOOL 		Connect (LPSTR lpszIPADDR, WORD wPORT, LPSTR lpszID, LPSTR lpszPASS) = 0; 
	virtual VOID 		Disconnect () = 0; 
 
	virtual BOOL		StartUpdate(); 
	eRESULT_CONSTANT	CheckUpdateFiles(); 
	// ÇöÀç ¿¬°áÀÌ ¼º¸³Çß´Ù´Â °¡Á¤ÇÏ¿¡ ÇØ´ç °æ·ÎÀÇ ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ´Â´Ù. (¹°·Ð ¿¬°á¾ÊµÈ »óŶó¸é ¿¡·¯¹ß»ý) 
	virtual BOOL		DownloadFile (LPSTR lpszRemoteFilePath,	LPSTR lpszLocalFilePath = "") = 0; 
 
	virtual VOID		SetLastErrorMsg (INT iERROR_MODE, INT iERROR_CODE, LPSTR szUSER_MSG = NULL);	 
	virtual const LPSTR	GetLastErrorMsg (); 
	virtual const INT	GetLastErrorCode (); 
 
	virtual BOOL		UpdateStop();									// ¾÷µ¥ÀÌÆ®¸¦ ÁßÁöÇÑ´Ù. 
	virtual BOOL		SetEventCallBackProc (LPFUNC_RECEIVEEVENT lpFN_EventCallbackFunc ); 
			void		SetUseEventProc(BOOL bUse = TRUE);				// À̺¥Æ®  
			void		SetVersionFile( const char* pszFile ); 
		   char*		GetVersionFile(){return m_szVersionFileName;} 
			void		SetDownloadDirectory(const char* pszDirectory); 
	const string		GetDownloadDirectory(); 
			void		GetLocalDownAbsoluteDir(string strRelativeDir, string& strAbsolteDir); 
			void		GetModuleDirectory( char* szDirPath, int nSize ); 
			BOOL		Init(); 
			char*		GetIP(){ return m_szIPADDR; } 
			WORD		GetPort(){ return m_wPORT; } 
			void		SetDefaultDirectory( char* pszDir ); 
			char*		GetDefaultDirectory(){ return m_szDefaultDirectory; } 
			void		GetVersionFilePath( TCHAR* pszVerFilePath, int nSize );		//¹öÀüÆÄÀÏÀÇ °æ·Î¸¦ ¾ò¾î¿Â´Ù. 
			void		GetFileListFilePath( char* pszFileName, int nSize, const char* pszVerFolder );		//File List ÆÄÀÏÀÇ °æ·Î¸¦ ¾ò¾î¿Â´Ù. 
			void		GetVersionFolderPath( char* pszFileName, int nSize, const char* pszVerFolder );	// 
			void		GetServerName( char* pszServerName, int nSize );			//ÇöÀç ´Ù¿î¹Þ´Â ÇØ´ç ¼­¹öÀÇ À̸§À» ±¸ÇÑ´Ù. 
 
protected : 
			BOOL 		LoadLocalVerInfo ();	// ȯ°æ¼³Á¤ ÆÄÀÏ¿¡¼­ ÇöÀç ¹öÀüÁ¤º¸ µîÀ» ºÒ·¯¿Â´Ù. 
			BOOL 		SaveLocalVerInfo ();	// ȯ°æ¼³Á¤ ÆÄÀÏ¿¡ ÇöÀç ¹öÀüÁ¤º¸ µîÀ» ÀúÀåÇÑ´Ù. 
 
	virtual BOOL 		CheckVersion (LPSTR lpszFilePath);				// ÇØ´ç °æ·ÎÀÇ ¹öÀüÆÄÀÏ¿¡¼­ ÇöÀç ¹öÀüÀ» Àаí (¾øÀ¸¸é ¹öÀü 0), ¿¬°áµÈ ·çÆ®ÀÇ Æ¯Á¤ ¹öÀüÆÄÀϰú ºñ±³ÇÑ´Ù. 
	virtual BOOL 		UpdateRun();									// ÇØ´ç °æ·ÎÀÇ ¸ñ·ÏÆÄÀÏ¿¡¼­ ¹ÞÀ» ÆÄÀÏÀÇ ¸ñ·ÏÀ» ÀÛ¼ºÇÑ´Ù. 
	virtual BOOL 		AddEvent(int nEvent); 
			void		GetVersionFromString( char* pszVersion, byte& byVer1, byte& byVer2, byte& byVer3   ); 
	unsigned int 		GetTotalVersion( const byte byVer1, const byte byVer2, const byte byVer3 ); 
			void		SetDefaultData(void); 
	virtual	BOOL		DownloadFilesOnFileList( char* pszRemoteDirPath ) = 0; 
			BOOL		CheckLiveProcess(); 
 
 
	static unsigned __stdcall UpdateWorkerThread (LPVOID lpParam); 
 
protected: 
	CRITICAL_SECTION	m_critERROR_MSG;							// ¿¡·¯ ÀúÀåÇÏ´Â ÀÛ¾÷À» º¸È£Çϱâ À§ÇÔ 
 
public: 
	CUpdateInfo			m_info; 
	int					m_nServerNumber;							// ÇöÀç ¾÷µ¥ÀÌÆ® ÇÏ·Á´Â ¼­¹öÀÇ ³»ºÎ ¹øÈ£ 
 
	// ·ÎÄÿ¡ ÀÖ´Â ¹öÀü Á¤º¸ 
	BYTE 				m_btLocalVer1; 
	BYTE 				m_btLocalVer2; 
	BYTE 				m_btLocalVer3; 
	UINT 				m_uLocalTotalVersion; 
	BOOL				m_bLoadUpdateInfo; 
 
 
	BOOL				IsUpdateInfoLoad(){ return m_bLoadUpdateInfo; } 
}; 
 
 
 
/////////////////////////////////////////////////////////////////////////////////////// 
/* 
	FTP ¾÷µ¥ÀÌÆ® Ŭ·¡½º : ±âº» Ŭ·¡½º¿¡¼­ »ó¼Ó ¹ÞÀ½ 
*/ 
 
 
class WZ_DECLAREDLL CWZFtpUpdateModule : public CWZUpdateModule 
{ 
	// ¿¬°á°ü·Ã º¯¼öµé (FTP) 
	HINTERNET	m_hFTP_CONNECTION; 
	CHAR		m_FTP_cBUFFER[MAX_BUFFER]; 
 
	HANDLE			m_hCheckThread; 
	unsigned int	m_nCheckThreadID; 
	BOOL			m_bConnected; 
 
 
public : 
	CWZFtpUpdateModule (); 
	CWZFtpUpdateModule (LPSTR lpszIPADDR, WORD wPORT, LPSTR lpszID, LPSTR lpszPASS); 
	virtual ~CWZFtpUpdateModule (); 
 
	virtual BOOL Connect (); 
	virtual BOOL Connect (LPSTR lpszIPADDR,  WORD wPORT= PORT_FTP, LPSTR lpszID=NULL, LPSTR lpszPASS=NULL); 
	virtual VOID Disconnect (); 
 
	virtual BOOL DownloadFile (LPSTR lpszRemoteFilePath, LPSTR lpszLocalPath = ""); 
			BOOL SetEventProc (LPFUNC_RECEIVEEVENT lpFN_EventCallbackFunc ); 
			BOOL IsConnected(){return m_bConnected;} 
 
private: 
	BOOL				GetSplitFilePath(const char* pszFilePath, char* pszDir, char* pszFile); 
	BOOL				GetLocalFileName(const char* pszLocalPath, const char* pszRemoteFileName, char* pszLocalFilePath); 
	HANDLE				MakeLocalFile(const char* pszLocalFilePath); 
	BOOL				SetRemoteDirectory(const char* pszRemoteDir); 
	BOOL				GetRemoteFileInfo(const char* pszRemoteFile, DWORD& dwFileLength, FILETIME& fileTime); 
	HINTERNET			OpenRemoteFile(const char* pszRemoteFile); 
	eRESULT_CONSTANT	GetRemoteFile(const HINTERNET hRemoteFile, const HANDLE hLocalFile, DWORD dwFileLength); 
	BOOL				DownloadFilesOnFileList(char* pszRemoteDirPath ); 
	BOOL				CanDownloadFile(string strLocalFilePath, string strRemoteFileName); 
 
public: 
	static unsigned __stdcall CheckConnectThread (LPVOID lpParam); 
}; 
 
 
#endif